Skip to content

Latest commit

 

History

History
153 lines (127 loc) · 4.28 KB

README.md

File metadata and controls

153 lines (127 loc) · 4.28 KB

CI Bypass

Bypass CI checks for GitHub Actions.

This action allows some users have no maintainers permissions to bypass CI checks. It is useful for CI/CD team to bypass CI checks on some special cases.

Usage

Skip job

jobs:
  check-bypass:
    name: Check Bypass
    runs-on: ubuntu-slim
    permissions:
      contents: read
    outputs:
      can-skip: ${{ steps.check-bypass.outputs.can-skip }}
    steps:
      - id: check-bypass
        name: Check Bypass
        uses: PFCCLab/ci-bypass@v2
        with:
          github-token: ${{ secrets.GITHUB_TOKEN }}
          non-pull-request-event-strategy: 'always-skipped'
          type: 'labeled'
          label: 'ci-bypass: example | ci-bypass: all'
          username: 'SigureMo'

  build:
    needs: check-bypass
    if: ${{ needs.check-bypass.outputs.can-skip != 'true' }}
    name: Build
    runs-on: ubuntu-latest

    steps:
      - name: Run build
        run: echo "Run build"

Skip steps

permissions:
  contents: read
jobs:
  build:
    name: Build
    runs-on: ubuntu-latest

    steps:
      - id: check-bypass
        name: Check Bypass
        uses: PFCCLab/ci-bypass@v2
        with:
          github-token: ${{ secrets.GITHUB_TOKEN }}
          non-pull-request-event-strategy: 'always-skipped'
          type: 'labeled'
          label: 'ci-bypass: example | ci-bypass: all'
          username: 'SigureMo'
      - name: Run build
        if: ${{ steps.check-bypass.outputs.can-skip != 'true' }}
        run: echo "Run build"

Skip with composite rule

permissions:
  contents: read
jobs:
  build:
    name: Build
    runs-on: ubuntu-latest

    steps:
      - id: check-bypass
        name: Check Bypass
        uses: PFCCLab/ci-bypass@v2
        with:
          github-token: ${{ secrets.GITHUB_TOKEN }}
          non-pull-request-event-strategy: 'always-skipped'
          type: 'composite'
          composite-rule: |
            {
               "any": [
                  {
                     "type": "labeled",
                     "label": ["ci-bypass: example", "ci-bypass: all"],
                     "username": ["SigureMo"]
                  },
                  {
                     "type": "commented",
                     "comment-pattern": [".*/bypass example.*", ".*/bypass all.*"],
                     "username": ["SigureMo"]
                  },
                  {
                     "type": "approved",
                     "username": ["SigureMo", "gouzil"]
                  }
               ]
            }
      - name: Run build
        if: ${{ steps.check-bypass.outputs.can-skip != 'true' }}
        run: echo "Run build"

All options

Name Description Required Default
github-token GitHub token to access GitHub API false undefined
non-pull-request-event-strategy Strategy to apply to non-pull-request events, can be always-skipped, never-skipped, or always-failed, default is always-failed true always-failed
type Type of the rule, can be labeled, commented, approved, or composite true labeled
username Username, can be a string or an array of strings separated by | false undefined
user-team User team, can be a string or an array of strings separated by | false undefined
label Label name, can be a string or an array of strings separated by | false undefined
comment-pattern Comment regex pattern, can be a string or an array of strings separated by | false undefined
composite-rule Use any, all or not to combine multiple rules, need to be a JSON string false undefined

Note

user-team needs read:org permission, but the default GITHUB_TOKEN doesn't have this permission. You need to create a personal token with read:org permission.

Contributing

Initial setup

  1. Install the dependencies:

    vp install
  2. Run checks and tests:

    vp check
    vp test
  3. Build the bundled action output:

    vp pack

Acknowledgement