Automate GitHub Actions allow list for GitHub Enterprise accounts
name: Deploy GitHub Actions allow list on: push: branches: [main] paths: [github-actions-allow-list.yml] jobs: deploy: runs-on: ubuntu-latest permissions: read-all steps: - name: Checkout uses: actions/checkout@v5.0.0 - name: Deploy GitHub Actions allow list uses: ActionsDesk/github-actions-allow-list-as-code-action@v3.0.0 with: token: ${{ secrets.ENTERPRISE_ADMIN_TOKEN }} enterprise: 'your-enterprise' # same as defined under `on.pull_requests.paths` allow_list_path: github-actions-allow-list.yml
Name | Description | Default | Required |
---|---|---|---|
token | GitHub Personal Access Token (PAT) with admin:enterprise or admin:org scope | true | |
organization | GitHub organization slug | false | |
enterprise | GitHub Enterprise account slug | false | |
allow_list_path | Path to the GitHub Actions allow list YML within the repository | github-actions-allow-list.yml | false |
gh_api_url | GitHub Enterprise Server - URL to the GitHub API endpoint. Example: https://github.example.com/api/v3. | ${{ github.api_url }} | false |
ℹ️ Notes for providing enterprise
or organization
:
- Either provide
enterprise
to update the GitHub Enterprise Cloud's actions allow list, ororganization
to update a single organization's allow list. - Providing both will result in the action run failing with
Please provide only one of: enterprise, organization
. - If providing
organization
, but the allow list is handled via GitHub Enterprise Cloud's actions allow list, the action run will fail withSelected actions are already set at the enterprise level
.
Example content for Allow List file containing actions:
key and list with two allowed actions with specific versions, one wildcard entry for an entire org, and one wildcard entry for all versions of a specific action:
actions: - actionsdesk/github-actions-allow-list-as-code-action@v3.0.0 - hashicorp/vault-action@v2.7.4 - aquasecurity/tfsec-sarif-action@* - azure/*
To run locally, set the following environment variables, compile with ncc
, and run with node
:
export GITHUB_WORKSPACE=$(pwd) export INPUT_ALLOW_LIST_PATH=allowlist.yml export INPUT_ORGANIZATION=my-org # use INPUT_ENTERPRISE for enterprise export INPUT_TOKEN=ghp_abcdefg npm run build node dist/index.js