60 lines
2.1 KiB
Markdown
60 lines
2.1 KiB
Markdown
# 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://keybaseio/client:stable-node
|
|
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 `keybaseio/client:stable-node` 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
|
|
```
|