Trigger Actions With ChatOps on Pull Requests

April 26, 2020 ยท View on GitHub

Actions Status

Trigger Actions With ChatOps on Pull Requests

This action helps you trigger downstream actions with a custom command made via a comment in a pull request, otherwise known as ChatOps.

Optionally, you may provide credentials to authenticate as a GitHub App and label an issue once a trigger phrase is detected. Having another app other than the GitHub Action apply a label allows you to create a label event to trigger downstream Actions (since an Action cannot create events that trigger other Actions).

Example Usage

name: Demo
on: [issue_comment]

jobs:
  label-pr:
    runs-on: ubuntu-latest
    steps:
      - name: listen for PR Comments
        uses: machine-learning-apps/actions-chatops@master
        with:
          APP_PEM: ${{ secrets.APP_PEM }}
          APP_ID: ${{ secrets.APP_ID }}
          TRIGGER_PHRASE: "/test-trigger-comment"
          INDICATOR_LABEL: "test-label"
        env: # you must supply GITHUB_TOKEN
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        id: prcomm
        # This step clones the branch of the PR associated with the triggering phrase, but only if it is triggered.
      - name: clone branch of PR
        if: steps.prcomm.outputs.BOOL_TRIGGERED == 'true'
        uses: actions/checkout@master
        with:
          ref: ${{ steps.prcomm.outputs.SHA }}

        # This step is a toy example that illustrates how you can use outputs from the pr-command action
      - name: print variables
        if: steps.prcomm.outputs.BOOL_TRIGGERED == 'true'
        run: echo "${USERNAME} made a triggering comment on PR# ${PR_NUMBER} for ${BRANCH_NAME}"
        env: 
          BRANCH_NAME: ${{ steps.prcomm.outputs.BRANCH_NAME }}
          PR_NUMBER: ${{ steps.prcomm.outputs.PULL_REQUEST_NUMBER }}
          USERNAME: ${{ steps.prcomm.outputs.COMMENTER_USERNAME }}

Mandatory Inputs

  • TRIGGER_PHRASE: this is the phrase in a PR comment that you want to trigger downstream Actions. Example - "/deploy-app-test"

Optional Inputs

If one of the below three arguments are provided, all three must be present.

  • INDICATOR_LABEL: label that will be added to the PR if a triggering comment is detected. This is used to trigger downstream Actions with the right context of the PR.

  • APP_PEM: description: string version of your PEM file used to authenticate as a GitHub App. This is required if the input INDICATOR_LABEL is supplied.

  • APP_ID:your GitHub App ID. This is required if the input INDICATOR_LABEL is supplied.

  • TEST_EVENT_PATH: An alternate place to fetch the payload for testing and debugging when making changes to this Action. This is set to the system environment variable $GITHUB_EVENT_PATH by default.

Outputs

  • TRAILING_LINE: the text that immediately follows the triggering phrase that is on the same line. For example, "/trigger-phrase foo bar\n next line" will emit the value "foo bar" This is intended to be used as arguments for downstream actions.

  • TRAILING_TOKEN: this is the next token that immediately follows the triggering phrase that is on the same line. For example, "/trigger-phrase foo bar" will emit the value "foo". This is intended to be used as arguments for downstream actions.

  • PULL_REQUEST_NUMBER: the number of the pull request

  • COMMENTER_USERNAME: The GitHub username of the person that made the triggering comment in the PR.

  • BRANCH_NAME: The name of the branch corresponding to the PR.

  • SHA: The SHA of the branch on the PR at the time the triggering comment was made.

  • BOOL_TRIGGERED: true or false depending on if the trigger phrase was detected and this is a pull request.

  • APP_INSTALLATION_TOKEN: The installation access token for the GitHub App corresponding to the current repository. This is only retrieved if the APP_PEM and APP_ID inputs are supplied.

Keywords

MLOps, Machine Learning, Data Science