init
This commit is contained in:
commit
6886e2a519
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
book
|
17
README.md
Normal file
17
README.md
Normal file
|
@ -0,0 +1,17 @@
|
|||
# CERC Software Development Team Documentation
|
||||
|
||||
This repository contains the CERC Software Development Team's documentation.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- [Git](https://git-scm.com/)
|
||||
- [Rust](https://www.rust-lang.org/tools/install)
|
||||
- [mdbook](https://rust-lang.github.io/mdBook/guide/installation.html)
|
||||
|
||||
## Editing
|
||||
|
||||
- Clone this repo: `git clone https://nextgenerations-cities.encs.concordia.ca/gitea/a_nguyen/dev-docs-tmp`
|
||||
- `cd` into the repo: `cd /path/to/dev-docs-tmp`
|
||||
- Run `mdbook serve --open` to start the development server.
|
||||
- Edit the markdown files in the `src` folder.
|
||||
- After making edits, commit and push the changes.
|
6
book.toml
Normal file
6
book.toml
Normal file
|
@ -0,0 +1,6 @@
|
|||
[book]
|
||||
authors = ["Anh Hoang Nguyen"]
|
||||
language = "en"
|
||||
multilingual = false
|
||||
src = "src"
|
||||
title = "CERC Developer Docs"
|
1
src/README.md
Normal file
1
src/README.md
Normal file
|
@ -0,0 +1 @@
|
|||
# CERC Developer Guide, Tutorial, and Reference
|
7
src/SUMMARY.md
Normal file
7
src/SUMMARY.md
Normal file
|
@ -0,0 +1,7 @@
|
|||
# Summary
|
||||
|
||||
- [Jenkins Pipeline]()
|
||||
- [Pipeline setup](./jenkins-pipeline/setup.md)
|
||||
- [Pipeline template](./jenkins-pipeline/template.md)
|
||||
- [NVidia]()
|
||||
- [Driver installation](./nvidia/drivers.md)
|
72
src/jenkins-pipeline/setup.md
Normal file
72
src/jenkins-pipeline/setup.md
Normal file
|
@ -0,0 +1,72 @@
|
|||
# Set up a Jenkins Pipeline
|
||||
|
||||
By norms, a Jenkins project that builds a Gitea repository should be organized into a folder with the following pipelines:
|
||||
|
||||
```
|
||||
├── GIT_REPOSITORY_NAME
|
||||
│ ├── dev
|
||||
│ ├── pull-request
|
||||
│ ├── release
|
||||
```
|
||||
|
||||
## Create a folder on Jenkins
|
||||
|
||||
1. In the Jenkins dashboard, click on `New Item`.
|
||||
2. Enter a name for the folder, and select `Folder` as the type. It is best practice to use the same name as the repository.
|
||||
3. (Optional) Enter details and description.
|
||||
4. Click `Save`.
|
||||
|
||||
## Create a pipeline
|
||||
|
||||
### First steps
|
||||
|
||||
1. In the Jenkins dashboard, click on the newly created folder.
|
||||
2. Click on `New Item`.
|
||||
3. Enter a name for the pipeline, and select `Pipeline` as the type.
|
||||
|
||||
### General configurations
|
||||
|
||||
1. Enter details and description.
|
||||
1. Under `General`, tick `This project is parameterized`.
|
||||
1. Open the `Add Parameter` dropdown, and select `String Parameter`.
|
||||
1. For the `name`, enter `payload`.
|
||||
1. Tick `Trim the string`.
|
||||
|
||||
### Build Triggers
|
||||
|
||||
1. Go to https://generate.plus/en/base64 and generate a 32-character random string.
|
||||
2. Tick `Trigger builds remotely`.
|
||||
3. Enter the generated token.
|
||||
|
||||
### Pipeline Configurations
|
||||
|
||||
> Note: In the future, we can use `Pipeline script from SCM` to load the pipeline from a repository.
|
||||
|
||||
1. Under `Pipeline`, select `Pipeline script`.
|
||||
2. Copy the [template from here](./template.md) and paste it in the text area.
|
||||
3. Add your build steps. Pipeline syntax documentation can be found at https://www.jenkins.io/doc/book/pipeline/syntax/.
|
||||
|
||||
### Generate Personal Access Token (PAT)
|
||||
|
||||
1. Go to your Jenkins dashboard.
|
||||
2. On the top right corner, click on your username.
|
||||
3. Click on `Configure`.
|
||||
4. Under `API Token`, click on `Add new Token`.
|
||||
5. Enter a name for the token, and click `Generate`.
|
||||
6. Copy the generated token and **saved it temporarily somewhere** (e.g. Notepad).
|
||||
7. Click `Save`.
|
||||
|
||||
## Configure webhook from Gitea
|
||||
|
||||
Assumed that you have already created a repository on Gitea.
|
||||
|
||||
1. Go to the repository on Gitea.
|
||||
2. Click on `Settings` tab.
|
||||
3. Click on `Webhooks` on the left panel.
|
||||
4. Click on `Add Webhook`.
|
||||
5. For `Target URL`, enter `http://localhost:8080/job/${folder_name}/${pipeline_name}/buildWithParameters`
|
||||
6. Select `POST` as the `HTTP Method`.
|
||||
7. For `Post Content Type`, select `application/x-www-form-urlencoded`.
|
||||
8. For `Authorization Header`, enter `Basic ${YOUR_PAT_TOKEN_GENERATED_PREVIOUSLY}`.
|
||||
9. Click `Update Webhook` to save.
|
||||
10. Click `Test Delivery` to test the webhook.
|
110
src/jenkins-pipeline/template.md
Normal file
110
src/jenkins-pipeline/template.md
Normal file
|
@ -0,0 +1,110 @@
|
|||
# Jenkins Pipeline
|
||||
|
||||
```groovy
|
||||
pipeline {
|
||||
agent any
|
||||
environment {
|
||||
// SOURCE CODE MANAGEMENT
|
||||
GIT_REPOSITORY_URL = "https://YOUR_REPOSITORY_URL_HERE!!!.git"
|
||||
// STAGES STATUS
|
||||
CLONE_STAGE_STATUS = "FAIL"
|
||||
PYLINT_STAGE_STATUS = "FAIL"
|
||||
GENERATE_BUILD_INFORMATION_STAGE_STATUS = "FAIL"
|
||||
BUILD_STAGE_STATUS = "FAIL"
|
||||
UNIT_TEST_STAGE_STATUS = "FAIL"
|
||||
PYPI_STAGE_STATUS = "FAIL"
|
||||
AUTO_DOC_STAGE_STATUS = "FAIL"
|
||||
// WEBHOOK PAYLOAD AND COMMIT DETAILS
|
||||
WEBHOOK_SENDER_EMAIL = ""
|
||||
WEBHOOK_SENDER_NAME = ""
|
||||
WEBHOOK_SENDER_LOGIN = ""
|
||||
COMMIT_HASH = ""
|
||||
COMPARE_URL = ""
|
||||
COMMIT_MSG = ""
|
||||
BRAND_REF = ""
|
||||
}
|
||||
|
||||
stages {
|
||||
stage('Clone') {
|
||||
steps {
|
||||
script {
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
echo 'Start branch development pipeline'
|
||||
dir('webhook-test') {
|
||||
git branch: 'main', changelog: false, credentialsId: 'Terence', poll: false, url: '${GIT_REPOSITORY_URL}'
|
||||
}
|
||||
CLONE_STAGE_STATUS = "SUCCESS"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Webhook Handler') {
|
||||
steps {
|
||||
script {
|
||||
echo '------- START RAW WEBHOOK PAYLOAD -------'
|
||||
echo payload
|
||||
echo '------- END RAW WEBHOOK PAYLOAD -------'
|
||||
}
|
||||
script {
|
||||
try {
|
||||
|
||||
// Parse the JSON content using jsonSlurper
|
||||
def jsonSlurper = new groovy.json.JsonSlurper()
|
||||
def jsonPayload = jsonSlurper.parseText(payload)
|
||||
echo "Automatic trigger detected via webhook."
|
||||
WEBHOOK_SENDER_EMAIL=jsonPayload.sender.email
|
||||
WEBHOOK_SENDER_NAME=jsonPayload.sender.full_name
|
||||
WEBHOOK_SENDER_LOGIN=jsonPayload.sender.login
|
||||
COMMIT_HASH=jsonPayload.after
|
||||
COMPARE_URL=jsonPayload.compare_url
|
||||
COMMIT_MSG=jsonPayload.head_commit.message
|
||||
BRANCH_REF=jsonPayload.ref
|
||||
} catch (exception) {
|
||||
echo "Manual trigger detected."
|
||||
WEBHOOK_SENDER_EMAIL=currentBuild.getBuildCauses()[0].userId
|
||||
WEBHOOK_SENDER_NAME="Manually " + currentBuild.getBuildCauses()[0].shortDescription
|
||||
WEBHOOK_SENDER_LOGIN="N/A - Manual trigger"
|
||||
COMMIT_HASH=sh (script: "cd webhook-test && git log -n 1 --pretty=format:'%H'", returnStdout: true)
|
||||
COMPARE_URL="N/A - Manual trigger"
|
||||
COMMIT_MSG=sh (script: "cd webhook-test && git log -n 1 --pretty=format:'%B'", returnStdout: true)
|
||||
BRANCH_REF="N/A - Manual trigger"
|
||||
}
|
||||
GENERATE_BUILD_INFORMATION_STAGE_STATUS="SUCCESS"
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Cleanup') {
|
||||
steps {
|
||||
// By default, send to Teams channel, add additional emails here if needed.
|
||||
mail to: "13dd15fb.liveconcordia.onmicrosoft.com@ca.teams.ms",
|
||||
subject: "${env.BUILD_TAG} Pipeline Results",
|
||||
body: """
|
||||
Results of Hub/release Pipeline ${env.BUILD_TAG}
|
||||
|
||||
Build triggered by: ${WEBHOOK_SENDER_NAME} - ${WEBHOOK_SENDER_LOGIN}
|
||||
Email: ${WEBHOOK_SENDER_EMAIL}
|
||||
|
||||
--- Commit details ---
|
||||
HEAD Commit: ${COMMIT_HASH}
|
||||
Commit message: ${COMMIT_MSG}
|
||||
Branch: ${BRANCH_REF}
|
||||
See changes: ${COMPARE_URL}
|
||||
|
||||
--- Pipeline stage status ---
|
||||
Clone: ${CLONE_STAGE_STATUS}
|
||||
Pylint: ${PYLINT_STAGE_STATUS}
|
||||
Generate Build Information: ${GENERATE_BUILD_INFORMATION_STAGE_STATUS}
|
||||
Build: ${BUILD_STAGE_STATUS}
|
||||
Unit test: ${UNIT_TEST_STAGE_STATUS}
|
||||
Publish to pypi: ${PYPI_STAGE_STATUS}
|
||||
Generate autodoc: ${AUTO_DOC_STAGE_STATUS}
|
||||
|
||||
To access the pipeline run logs, please go here: http://nextgenerations-cities.encs.concordia.ca:8080/job/Hub/job/release/
|
||||
"""
|
||||
sh 'rm -rf webhook-test/.jenkins'
|
||||
cleanWs()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
34
src/nvidia/drivers.md
Normal file
34
src/nvidia/drivers.md
Normal file
|
@ -0,0 +1,34 @@
|
|||
# NVidia Drivers Installation
|
||||
|
||||
This documentation has 2 parts:
|
||||
|
||||
- [NVidia Drivers Installation](#nvidia-drivers-installation)
|
||||
- [Windows](#windows)
|
||||
- [Display Drivers](#display-drivers)
|
||||
- [CUDA Toolkit](#cuda-toolkit)
|
||||
- [Linux](#linux)
|
||||
- [Display Drivers](#display-drivers-1)
|
||||
- [CUDA Toolkit](#cuda-toolkit-1)
|
||||
|
||||
## Windows
|
||||
|
||||
### Display Drivers
|
||||
|
||||
- Go to https://www.nvidia.com/Download/index.aspx?lang=en-us
|
||||
- Most of our machines are using the GeForce RTX series, so select `GeForce` as the product type.
|
||||
- For the product series, select the series of your GPU. Make sure it's the Notebooks series if you are using a laptop. E.g. GeForce RTX 20 Series (Notebooks).
|
||||
- For the product, select your GPU. E.g. GeForce RTX 2080 Super.
|
||||
- For the operating system, select your OS. E.g. Windows 10 64-bit.
|
||||
- For the download type, select `Game Ready Driver`.
|
||||
- Click `Search`.
|
||||
- Click `Download`.
|
||||
- Navigate to the downloaded file, and run it. Administrator privileges are required.
|
||||
- Reboot when done.
|
||||
|
||||
### CUDA Toolkit
|
||||
|
||||
## Linux
|
||||
|
||||
### Display Drivers
|
||||
|
||||
### CUDA Toolkit
|
Loading…
Reference in New Issue
Block a user