diff --git a/.github/workflows/cd-docs.yml b/.github/workflows/cd-docs.yml new file mode 100644 index 0000000000..ec14661852 --- /dev/null +++ b/.github/workflows/cd-docs.yml @@ -0,0 +1,82 @@ +name: CD docs + +on: + push: + branches: feature/add-workflows-documentation + paths: + - 'documentation/docs/**' + +jobs: + build: + runs-on: custom-runner-linux + steps: + - uses: actions/checkout@v3 + - name: Install rsync + run: sudo apt-get install rsync + - uses: rlespinasse/github-slug-action@v3.x + - uses: actions/setup-node@v3 + with: + node-version: "16" + - name: Install Rust stable + uses: actions-rs/toolchain@v1 + with: + toolchain: stable + - name: Build all binaries + uses: actions-rs/cargo@v1 + with: + command: build + args: --workspace --release --all + - name: Install mdbook + run: (test -x $HOME/.cargo/bin/mdbook || cargo install --vers "^0.4" mdbook) + - name: Install mdbook plugins + run: | + cargo install --vers "^0.2.0" mdbook-variables && cargo install \ + --vers "^1.8.0" mdbook-admonish && cargo install --vers \ + "^0.1.2" mdbook-last-changed && cargo install --vers "^0.1.2" \ + mdbook-theme && cargo install --vers "^0.7.7" mdbook-linkcheck && \ + cargo install --vers "^0.5.0" mdbook-cmdrun + - name: Clean website + run: cd documentation/docs && mdbook clean + - name: Build website + run: cd documentation/docs && mdbook build + - name: Deploy branch master to dev + continue-on-error: true + uses: easingthemes/ssh-deploy@main + env: + SSH_PRIVATE_KEY: ${{ secrets.CD_WWW_SSH_PRIVATE_KEY }} + ARGS: "-rltgoDzvO --delete" + SOURCE: "documentation/docs/book/" + REMOTE_HOST: ${{ secrets.CD_WWW_REMOTE_HOST_DEV }} + REMOTE_USER: ${{ secrets.CD_WWW_REMOTE_USER }} + TARGET: ${{ secrets.CD_WWW_REMOTE_TARGET }}/ + EXCLUDE: "/dist/, /node_modules/" + - name: Deploy branch master to prod + uses: easingthemes/ssh-deploy@main + env: + SSH_PRIVATE_KEY: ${{ secrets.CD_WWW_SSH_PRIVATE_KEY }} + ARGS: "-rltgoDzvO --delete" + SOURCE: "documentation/docs/book/" + REMOTE_HOST: ${{ secrets.CD_WWW_REMOTE_HOST_PROD }} + REMOTE_USER: ${{ secrets.CD_WWW_REMOTE_USER }} + TARGET: ${{ secrets.CD_WWW_REMOTE_TARGET }}/ + EXCLUDE: "/dist/, /node_modules/" + - name: Matrix - Node Install + run: npm install + working-directory: .github/workflows/support-files + - name: Matrix - Send Notification + env: + NYM_NOTIFICATION_KIND: cd-docs + NYM_PROJECT_NAME: "Docs CD" + NYM_CI_WWW_BASE: "${{ secrets.NYM_CD_WWW_BASE }}" + NYM_CI_WWW_LOCATION: "${{ env.GITHUB_REF_SLUG }}" + GIT_COMMIT_MESSAGE: "${{ github.event.head_commit.message }}" + GIT_BRANCH: "${GITHUB_REF##*/}" + MATRIX_SERVER: "${{ secrets.MATRIX_SERVER }}" + MATRIX_ROOM: "${{ secrets.MATRIX_ROOM }}" + MATRIX_USER_ID: "${{ secrets.MATRIX_USER_ID }}" + MATRIX_TOKEN: "${{ secrets.MATRIX_TOKEN }}" + MATRIX_DEVICE_ID: "${{ secrets.MATRIX_DEVICE_ID }}" + IS_SUCCESS: "${{ job.status == 'success' }}" + uses: docker://keybaseio/client:stable-node + with: + args: .github/workflows/support-files/notifications/entry_point.sh diff --git a/.github/workflows/ci-docs.yml b/.github/workflows/ci-docs.yml index 9394d7977c..e18370669d 100644 --- a/.github/workflows/ci-docs.yml +++ b/.github/workflows/ci-docs.yml @@ -17,9 +17,6 @@ jobs: - uses: actions/setup-node@v3 with: node-version: "16" - - uses: actions-rs/toolchain@v1 - with: - toolchain: stable - name: Install Rust stable uses: actions-rs/toolchain@v1 with: diff --git a/.github/workflows/support-files/cd-docs/index.js b/.github/workflows/support-files/cd-docs/index.js new file mode 100644 index 0000000000..be74285c12 --- /dev/null +++ b/.github/workflows/support-files/cd-docs/index.js @@ -0,0 +1,29 @@ +const Handlebars = require('handlebars'); +const fs = require('fs'); +const path = require('path'); + +async function addToContextAndValidate(context) { + if (!context.env.NYM_CI_WWW_LOCATION) { + throw new Error('Please ensure the env var NYM_CI_WWW_LOCATION is set'); + } + if (!context.env.NYM_CI_WWW_BASE) { + throw new Error('Please ensure the env var NYM_CI_WWW_BASE is set'); + } +} + +async function getMessageBody(context) { + const source = fs + .readFileSync( + context.env.IS_SUCCESS === 'true' + ? path.resolve(__dirname, 'templates', 'success') + : path.resolve(__dirname, 'templates', 'failure'), + ) + .toString(); + const template = Handlebars.compile(source); + return template(context); +} + +module.exports = { + addToContextAndValidate, + getMessageBody, +}; diff --git a/.github/workflows/support-files/cd-docs/templates/failure b/.github/workflows/support-files/cd-docs/templates/failure new file mode 100644 index 0000000000..adc2896ace --- /dev/null +++ b/.github/workflows/support-files/cd-docs/templates/failure @@ -0,0 +1,11 @@ +🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥 +> :rocket: {{ env.NYM_PROJECT_NAME }} +> 🔴 **FAILURE** :cry: +> `branch` {{ env.GITHUB_SERVER_URL }}/{{ env.GITHUB_REPOSITORY }}/tree/{{ env.GIT_BRANCH_NAME }} +> `commit` {{ env.GITHUB_SERVER_URL }}/{{ env.GITHUB_REPOSITORY }}/commit/{{ env.GITHUB_SHA }} +> `build ` {{ env.GITHUB_SERVER_URL }}/{{ env.GITHUB_REPOSITORY }}/actions/runs/{{ env.GITHUB_RUN_ID }} + +Commit message: +``` +{{ env.GIT_COMMIT_MESSAGE }} +``` diff --git a/.github/workflows/support-files/cd-docs/templates/success b/.github/workflows/support-files/cd-docs/templates/success new file mode 100644 index 0000000000..d1586b5736 --- /dev/null +++ b/.github/workflows/support-files/cd-docs/templates/success @@ -0,0 +1,17 @@ +🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩 +> :rocket: {{ env.NYM_PROJECT_NAME }} ➡️➡️➡️➡️➡️ **View output:** https://{{ env.NYM_CI_WWW_BASE }}/docs/ +> +> ✅ **SUCCESS** +> +> `branch` {{ env.GITHUB_SERVER_URL }}/{{ env.GITHUB_REPOSITORY }}/tree/{{ env.GIT_BRANCH_NAME }} +> +> `commit` {{ env.GITHUB_SERVER_URL }}/{{ env.GITHUB_REPOSITORY }}/commit/{{ env.GITHUB_SHA }} +> +> `build ` {{ env.GITHUB_SERVER_URL }}/{{ env.GITHUB_REPOSITORY }}/actions/runs/{{ env.GITHUB_RUN_ID }} +> + +Commit message by `{{ env.GITHUB_ACTOR }}` at {{ timestamp }}: + +``` +{{ env.GIT_COMMIT_MESSAGE }} +``` diff --git a/documentation/docs/README.md b/documentation/docs/README.md index 8cc1041c73..9d91298c62 100644 --- a/documentation/docs/README.md +++ b/documentation/docs/README.md @@ -46,3 +46,4 @@ Looping reload is a known issue with the `mdbook-theme` preprocessor used for th To check the version of mdBook installed on your system, you can use the `mdbook --version` command. This will print the version number of mdBook installed on your system in the terminal. The latest release of the binary of the pre-compiled binaries can be found on [GitHub](https://github.com/rust-lang/mdBook/releases). +