diff --git a/.github/workflows/broken-link-check.yml b/.github/workflows/broken-link-check.yml new file mode 100644 index 0000000000..b558104bba --- /dev/null +++ b/.github/workflows/broken-link-check.yml @@ -0,0 +1,19 @@ +on: + schedule: + - cron: "0 0 * * *" # daily + repository_dispatch: # run manually + types: [check-link] + +env: + TARGET: https://nymtech.net/docs/ + RECURSIVE: true + ASSIGNEES: mfahampshire + +name: Broken Link Check +jobs: + check: + name: Broken Link Check + runs-on: ubuntu-latest + steps: + - name: Broken Link Check + uses: technote-space/broken-link-checker-action@v2 diff --git a/documentation/dev-portal/.github/workflows/cd-dev.yml b/documentation/dev-portal/.github/workflows/cd-dev.yml deleted file mode 100644 index 0065c172fd..0000000000 --- a/documentation/dev-portal/.github/workflows/cd-dev.yml +++ /dev/null @@ -1,71 +0,0 @@ -name: Continous deployment - -on: - push: - branches: main - -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" - - uses: actions-rs/toolchain@v1 - with: - toolchain: stable - - 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 - - name: Build website - run: 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: "book/html/" - 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: "book/html/" - 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-dev - NYM_PROJECT_NAME: "Dev portal 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/documentation/dev-portal/.github/workflows/ci-dev.yml b/documentation/dev-portal/.github/workflows/ci-dev.yml deleted file mode 100644 index 6d09deb821..0000000000 --- a/documentation/dev-portal/.github/workflows/ci-dev.yml +++ /dev/null @@ -1,62 +0,0 @@ -name: CI dev-portal - -on: - push: - branches-ignore: main - -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 - uses: actions-rs/toolchain@v1 - with: - toolchain: stable - - 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 - - name: Build website - run: mdbook build - - name: Deploy branch to CI www - continue-on-error: true - uses: easingthemes/ssh-deploy@main - env: - SSH_PRIVATE_KEY: ${{ secrets.CI_WWW_SSH_PRIVATE_KEY }} - ARGS: "-rltgoDzvO --delete" - SOURCE: "book/html/" - REMOTE_HOST: ${{ secrets.CI_WWW_REMOTE_HOST }} - REMOTE_USER: ${{ secrets.CI_WWW_REMOTE_USER }} - TARGET: ${{ secrets.CI_WWW_REMOTE_TARGET }}/dev-portal-${{ env.GITHUB_REF_SLUG }} - 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: ci-dev - NYM_PROJECT_NAME: "Dev portal CI" - NYM_CI_WWW_BASE: "${{ secrets.NYM_CI_WWW_BASE }}" - NYM_CI_WWW_LOCATION: "dev-portal-${{ 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/documentation/dev-portal/.github/workflows/support-files/.env.example b/documentation/dev-portal/.github/workflows/support-files/.env.example deleted file mode 100644 index af01c6a7af..0000000000 --- a/documentation/dev-portal/.github/workflows/support-files/.env.example +++ /dev/null @@ -1,37 +0,0 @@ -MATRIX_SERVER= -MATRIX_ROOM= -MATRIX_USER_ID= -MATRIX_TOKEN= -MATRIX_DEVICE_ID= - -NYM_NOTIFICATION_KIND=nightly -NYM_PROJECT_NAME=Nightly Build - -#---------------------------------------------------------------- -# Custom GitHub Actions mock env vars -IS_SUCCESS=true - -#---------------------------------------------------------------- -# GitHub Actions context mock env vars -GITHUB_SHA=abcdef -GITHUB_RUN_ID=123456 -GITHUB_REPOSITORY=nymtech/nym -GITHUB_SERVER_URL=https://github.com -GIT_BRANCH_NAME=feature/testing-support-files -GIT_BRANCH=feature/testing-support-files -GIT_COMMIT_MESSAGE=This is the commit message -GITHUB_ACTOR=octocat - -# add a Personal Access Token (PAT) generated from GitHub here for use in testing -GITHUB_TOKEN= - -#---------------------------------------------------------------- -# Network Explorer -NYM_CI_WWW_LOCATION=some-branch -NYM_CI_WWW_BASE=example.com - -#---------------------------------------------------------------- -# Nightly builds -WORKFLOW_CONCLUSION=success - -SHOW_DEBUG=true diff --git a/documentation/dev-portal/.github/workflows/support-files/.gitignore b/documentation/dev-portal/.github/workflows/support-files/.gitignore deleted file mode 100644 index 37f81d053b..0000000000 --- a/documentation/dev-portal/.github/workflows/support-files/.gitignore +++ /dev/null @@ -1,7 +0,0 @@ -node_modules -.idea - -# don't commit the lock file to avoid cross-platform issues -package-lock.json - -scratch \ No newline at end of file diff --git a/documentation/dev-portal/.github/workflows/support-files/.nvmrc b/documentation/dev-portal/.github/workflows/support-files/.nvmrc deleted file mode 100644 index b6a7d89c68..0000000000 --- a/documentation/dev-portal/.github/workflows/support-files/.nvmrc +++ /dev/null @@ -1 +0,0 @@ -16 diff --git a/documentation/dev-portal/.github/workflows/support-files/.prettierrc b/documentation/dev-portal/.github/workflows/support-files/.prettierrc deleted file mode 100644 index 0238bf0f00..0000000000 --- a/documentation/dev-portal/.github/workflows/support-files/.prettierrc +++ /dev/null @@ -1,6 +0,0 @@ -{ - "trailingComma": "all", - "singleQuote": true, - "printWidth": 80, - "tabWidth": 2 -} diff --git a/documentation/dev-portal/.github/workflows/support-files/README.md b/documentation/dev-portal/.github/workflows/support-files/README.md deleted file mode 100644 index 09ddeb9f54..0000000000 --- a/documentation/dev-portal/.github/workflows/support-files/README.md +++ /dev/null @@ -1,60 +0,0 @@ -# GitHub Actions Support Files - -This is a collection of scripts and files to support GitHub Actions. - -## Sending Notifications - -These scripts send CI notifications to Matrix by creating messages from templates and env vars passed from GitHub Actions. - -### Adding notifications to a GitHub Action - -``` -jobs: - build: - ... - - name: Notifications - Node Install - run: npm install - working-directory: .github/workflows/support-files/notifications - - name: Notifications - Send - env: - NYM_NOTIFICATION_KIND: "my-component" - 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://node:16-bullseye - with: - args: .github/workflows/support-files/notifications/entry_point.sh -``` - -Notifications are run by adding the snippet above to a GitHub Action, and: - -1. Installing node packages needed at run time -2. Set the env vars as required: - - `NYM_NOTIFICATION_KIND` matches the directory in `.github/workflows/support-files/${NYM_NOTIFICATION_KIND}` to provide the templates and extra scripting in `index.js` - - Matrix credentials, room and other env vars for the status of the build and repo -3. Replacing the default entry point shell script on the `node:16-bullseye` docker image to run `.github/workflows/support-files/notifications/entry_point.sh` - -### Running locally - -You will need: -- Node 16 LTS -- npm - -Copy `.github/workflows/support-files/.env.example` to `.github/workflows/support-files/.env` and valid Matrix credentials. - -Then run `npm install` to get dependencies. - -Start development mode for the notification type you want either by passing the value as an env var called `NYM_NOTIFICATION_KIND` or set the `.env` file values correctly. - -```bash -cd .github/workflows/support-files -npm install -cp .env.example .env -vi .env -npm run dev -``` - diff --git a/documentation/dev-portal/.github/workflows/support-files/cd-dev/index.js b/documentation/dev-portal/.github/workflows/support-files/cd-dev/index.js deleted file mode 100644 index be74285c12..0000000000 --- a/documentation/dev-portal/.github/workflows/support-files/cd-dev/index.js +++ /dev/null @@ -1,29 +0,0 @@ -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/documentation/dev-portal/.github/workflows/support-files/cd-dev/templates/failure b/documentation/dev-portal/.github/workflows/support-files/cd-dev/templates/failure deleted file mode 100644 index adc2896ace..0000000000 --- a/documentation/dev-portal/.github/workflows/support-files/cd-dev/templates/failure +++ /dev/null @@ -1,11 +0,0 @@ -🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥 -> :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/documentation/dev-portal/.github/workflows/support-files/cd-dev/templates/success b/documentation/dev-portal/.github/workflows/support-files/cd-dev/templates/success deleted file mode 100644 index 57fb71155d..0000000000 --- a/documentation/dev-portal/.github/workflows/support-files/cd-dev/templates/success +++ /dev/null @@ -1,11 +0,0 @@ -🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩 -> :rocket: {{ env.NYM_PROJECT_NAME }} ➡️➡️➡️➡️➡️ **View output:** https://{{ env.NYM_CI_WWW_BASE }}/developers/ -> ✅ **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/dev-portal/.github/workflows/support-files/ci-dev/index.js b/documentation/dev-portal/.github/workflows/support-files/ci-dev/index.js deleted file mode 100644 index be74285c12..0000000000 --- a/documentation/dev-portal/.github/workflows/support-files/ci-dev/index.js +++ /dev/null @@ -1,29 +0,0 @@ -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/documentation/dev-portal/.github/workflows/support-files/ci-dev/templates/failure b/documentation/dev-portal/.github/workflows/support-files/ci-dev/templates/failure deleted file mode 100644 index adc2896ace..0000000000 --- a/documentation/dev-portal/.github/workflows/support-files/ci-dev/templates/failure +++ /dev/null @@ -1,11 +0,0 @@ -🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥 -> :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/documentation/dev-portal/.github/workflows/support-files/ci-dev/templates/success b/documentation/dev-portal/.github/workflows/support-files/ci-dev/templates/success deleted file mode 100644 index 7e7d02dd64..0000000000 --- a/documentation/dev-portal/.github/workflows/support-files/ci-dev/templates/success +++ /dev/null @@ -1,11 +0,0 @@ -🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩 -> :rocket: {{ env.NYM_PROJECT_NAME }} ➡️➡️➡️➡️➡️ **View output:** https://{{ env.NYM_CI_WWW_LOCATION }}.{{ env.NYM_CI_WWW_BASE }}/ -> ✅ **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/dev-portal/.github/workflows/support-files/dev.js b/documentation/dev-portal/.github/workflows/support-files/dev.js deleted file mode 100644 index 30d6b89c92..0000000000 --- a/documentation/dev-portal/.github/workflows/support-files/dev.js +++ /dev/null @@ -1 +0,0 @@ -require('./notifications/send_message'); \ No newline at end of file diff --git a/documentation/dev-portal/.github/workflows/support-files/notifications/entry_point.sh b/documentation/dev-portal/.github/workflows/support-files/notifications/entry_point.sh deleted file mode 100755 index 04607fb979..0000000000 --- a/documentation/dev-portal/.github/workflows/support-files/notifications/entry_point.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/usr/bin/env bash - -# pass exit codes out to GitHub Actions -set -euxo pipefail - -# change to the directory that contains this script -cd "${0%/*}" - -# run the node script -node send_message.js \ No newline at end of file diff --git a/documentation/dev-portal/.github/workflows/support-files/notifications/send_message.js b/documentation/dev-portal/.github/workflows/support-files/notifications/send_message.js deleted file mode 100644 index 6542d484d3..0000000000 --- a/documentation/dev-portal/.github/workflows/support-files/notifications/send_message.js +++ /dev/null @@ -1,123 +0,0 @@ -require('dotenv').config(); - -const { sendMatrixMessage } = require('./send_message_to_matrix'); - -let context = { - kinds: ['ci-dev','cd-dev'], -}; - -/** - * Validate that all required env and context vars are available - */ -function validateContext() { - if (!context.env.NYM_NOTIFICATION_KIND) { - throw new Error( - 'Please set env var NYM_NOTIFICATION_KIND with the project kind that matches a directory in ".github/workflows/support-files"', - ); - } - if (!context.kinds.includes(context.env.NYM_NOTIFICATION_KIND)) { - throw new Error(`Env var NYM_NOTIFICATION_KIND is not in ${context.kinds}`); - } - if (!context.env.NYM_PROJECT_NAME) { - throw new Error( - 'Please set env var NYM_PROJECT_NAME with the project name for displaying in notification messages', - ); - } - if (context.env.MATRIX_ROOM) { - if (!context.env.MATRIX_SERVER) { - throw new Error( - 'Matrix server is not defined. Please set env var MATRIX_SERVER', - ); - } - if (!context.env.MATRIX_USER_ID) { - throw new Error( - 'Matrix user id is not defined. Please set env var MATRIX_USER_ID', - ); - } - if (!context.env.MATRIX_TOKEN) { - throw new Error( - 'Matrix token is not defined. Please set env var MATRIX_TOKEN', - ); - } - if (!context.env.MATRIX_DEVICE_ID) { - throw new Error( - 'Matrix device id is not defined. Please set env var MATRIX_DEVICE_ID', - ); - } - } -} - -/** - * Creates a context that will be available in the templates for rendering notifications - */ -function createTemplateContext() { - const options = { dateStyle: 'full', timeStyle: 'long' }; - context.timestamp = new Date().toLocaleString(undefined, options); - - // add environment to template context and validate - context.env = process.env; - try { - validateContext(); - } catch (e) { - if(process.env.SHOW_DEBUG) { - // recursively print the context for easy debugging and rethrow the error - console.dir({ context }, { depth: null }); - } - throw e; - } - - context.kind = context.env.NYM_NOTIFICATION_KIND; - - if (!context.env.GIT_BRANCH_NAME) { - context.env.GIT_BRANCH_NAME = context.env.GITHUB_REF.split('/') - .slice(2) - .join('/'); - } - - context.status = process.env.IS_SUCCESS === 'true' ? 'success' : 'failure'; -} - - -/** - * Uses the `kind` set in the context to process the context and generate a notification message - * @returns {Promise} A string notification message body - */ -async function processKindScript() { - const script = require(`../${context.kind}`); - if (!script.addToContextAndValidate) { - throw new Error( - `"./${context.kind}/index.js" does not export a method called "async addToContextAndValidate(context)"`, - ); - } - if (!script.getMessageBody) { - throw new Error( - `"./${context.kind}/index.js" does not export a method called "async getMessageBody(context)"`, - ); - } - - // call the script to modify and validate the context - await script.addToContextAndValidate(context); - - // let the script create a message body and return the result as a string for sending - return await script.getMessageBody(context); -} - -/** - * The main function, as async so that await syntax is available - */ -async function main() { - createTemplateContext(); - console.log(`Sending notification for kind "${context.kind}"...`); - const messageBody = await processKindScript(); - if(process.env.SHOW_DEBUG) { - console.log('-----------------------------------------'); - console.log(messageBody); - console.log('-----------------------------------------'); - } - if(context.env.MATRIX_ROOM) { - await sendMatrixMessage(context, messageBody, context.env.MATRIX_ROOM) - } -} - -// call main function and let NodeJS handle the promise -main(); diff --git a/documentation/dev-portal/.github/workflows/support-files/notifications/send_message_to_matrix.js b/documentation/dev-portal/.github/workflows/support-files/notifications/send_message_to_matrix.js deleted file mode 100644 index aabd1d57aa..0000000000 --- a/documentation/dev-portal/.github/workflows/support-files/notifications/send_message_to_matrix.js +++ /dev/null @@ -1,64 +0,0 @@ -const sdk = require('matrix-js-sdk'); -global.Olm = require('olm'); -const { LocalStorage } = require('node-localstorage'); -const localStorage = new LocalStorage('./scratch'); -const { - LocalStorageCryptoStore, -} = require('matrix-js-sdk/lib/crypto/store/localStorage-crypto-store'); - -// hide all matrix client output -console.error = (error) => console.log('❌ error: ', error); -process.stderr.write = () => {}; -process.stdout.write = () => {}; - - -function createClient(context, room, message) { - const server = context.env.MATRIX_SERVER; - const token = context.env.MATRIX_TOKEN; - const deviceId = context.env.MATRIX_DEVICE_ID; - const userId = context.env.MATRIX_USER_ID; - - const client = sdk.createClient({ - baseUrl: server, - accessToken: token, - userId, - deviceId, - sessionStore: new sdk.WebStorageSessionStore(localStorage), - cryptoStore: new LocalStorageCryptoStore(localStorage), - }); - - client.on('sync', async function(state, prevState, res) { - if (state !== 'PREPARED') return; - client.setGlobalErrorOnUnknownDevices(false); - try { - await client.joinRoom(room); - await client.sendEvent( - room, - 'm.room.message', - { - msgtype: 'm.text', - format: 'org.matrix.custom.html', - body: message, - formatted_body: message, - }, - '', - ); - } catch (error) { - console.error('Job failed: ' + error.message); - } - client.stopClient(); - process.exit(0); - }); - - return client; -} - -async function sendMatrixMessage(contextArg, messageAsMarkdown, roomId) { - const client = createClient(contextArg, roomId, messageAsMarkdown); - await client.initCrypto(); - await client.startClient({ initialSyncLimit: 1 }); -} - -module.exports = { - sendMatrixMessage, -}; diff --git a/documentation/dev-portal/.github/workflows/support-files/package.json b/documentation/dev-portal/.github/workflows/support-files/package.json deleted file mode 100644 index 801d8e9bdd..0000000000 --- a/documentation/dev-portal/.github/workflows/support-files/package.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "name": "send-matrix-message", - "description": "Sends a notification message with the matrix sdk", - "version": "1.0.0", - "private": true, - "scripts": { - "dev": "node dev.js", - "format": "prettier --write **/*.js" - }, - "dependencies": { - "dotenv": "^16.0.0", - "handlebars": "^4.7.7", - "matrix-js-sdk": "^9.3.0", - "node-localstorage": "^2.1.6", - "octokit": "^1.7.1", - "olm": "https://packages.matrix.org/npm/olm/olm-3.2.1.tgz", - "remark-emoji": "^2.2.0", - "remark-html": "^13.0.2", - "remark-parse": "^9.0.0", - "to-vfile": "^6.1.0", - "unified": "^9.2.2" - }, - "devDependencies": { - "prettier": "2.3.2" - } -}