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/[email protected]
- name: Deploy GitHub Actions allow list
uses: ActionsDesk/[email protected]
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
enterpriseto update the GitHub Enterprise Cloud's actions allow list, ororganizationto 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/[email protected]
- hashicorp/[email protected]
- 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