machine-learning-apps / actions-chatops

Actions That Enables ChatOps In a PR Through a GitHub App

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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

About

Actions That Enables ChatOps In a PR Through a GitHub App

License:MIT License


Languages

Language:Python 70.4%Language:Jupyter Notebook 22.3%Language:Shell 5.2%Language:Dockerfile 2.1%