probby
Probby is the friendly Exercism problem-specs robot.
Usage
problem-specifications
repo
- Create a machine user with write access to all tracks that you want to push to.
- Create a Personal Access Token (★) with the
public_repo
scope for the machine user. - Create an environment called
probby_environment
- Add up to 6 trusted reviewers as Required reviewers. Make sure to hit Save protection rules!
- Create an environment secret
PROBBY_TOKEN
with the PAT (★) from above as content.
- Add the workflow below as
.github/workflows/probby.yml
. - Change the value of
track-repos
to suit your needs.
name: Probby
on:
push:
branches:
- 'probby-tests'
jobs:
parse-push:
name: Parse push event and prepare payload
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: SaschaMann/probby/actions/parse-push@v1
id: parse-push
- uses: actions/upload-artifact@v2
with:
name: payload
path: ${{ steps.parse-push.outputs.payload-file }}
notifier:
name: Send notifications to track repos
runs-on: ubuntu-latest
needs: parse-push
environment: probby_environment
steps:
- name: Download payload.json
id: download
uses: actions/download-artifact@v2
with:
name: payload
- uses: SaschaMann/probby/actions/notifier@v1
with:
token: ${{ secrets.PROBBY_TOKEN }}
# Comma-separated list of track repos to send a notification to
track-repos: c,javascript,julia
payload-file: ${{ steps.download.outputs.download-path }}/payload.json
Track repos
issue-receiver
- Add the workflow below as
.github/workflows/probby.yml
:
name: Probby
on:
repository_dispatch:
jobs:
issue-receiver:
name: Issue Receiver
runs-on: ubuntu-latest
steps:
- uses: SaschaMann/probby/packages/issue-receiver@v1
Note: This must be merged to the default branch or it will not work.
Writing your own receivers
If you want to do something different than opening an issue to respond to the repository_dispatch
event, e.g. triggering the test generators of the track, you can write your own action that parses and acts on the client_payload
.
You can find the spec of the client_payload
in notification-spec/
If you want to implement the receiving action in your track's language to make it easier to maintain for your track maintainers, you can use a composite run steps action instead of a JavaScript/TypeScript action.
The event payload, including the client_payload
, can be accessed via the environment variable GITHUB_EVENT_PATH
.
Development
See CONTRIBUTING