Files
devtools/actions/create-workflow-token/action.yml
T

72 lines
2.5 KiB
YAML

name: 'Create workflow token'
description: 'Create an app token, with fallback to $\{{ github.token }}'
inputs:
client-id:
description: 'The GitHub App Client ID'
required: false
private-key:
description: 'The GitHub App private key (PEM format)'
required: false
permission-contents:
description: "Access level for repository contents. 'read' or 'write'."
required: false
permission-pull-requests:
description: "Access level for pull requests. 'read' or 'write'."
required: false
permission-issues:
description: "Access level for issues. 'read' or 'write'."
required: false
permission-actions:
description: "Access level for GitHub Actions. 'read' or 'write'."
required: false
permission-workflows:
description: "Access level for workflows. 'read' or 'write'."
required: false
permission-discussions:
description: "Access level for discussions. 'read' or 'write'."
required: false
outputs:
token:
description: 'The created token, or $\{{ github.token }} if creation failed'
value: ${{ steps.output.outputs.token }}
runs:
using: 'composite'
steps:
- name: Require at least one permission
shell: bash
env:
PERMISSIONS: '${{ inputs.permission-contents }}${{ inputs.permission-pull-requests }}${{ inputs.permission-issues }}${{ inputs.permission-actions }}'
run: |
if [ -z "$PERMISSIONS" ]; then
echo "::error::create-workflow-token requires at least one permission-* input"
exit 1
fi
- name: Generate a token
id: app-token
continue-on-error: true
uses: actions/create-github-app-token@bcd2ba49218906704ab6c1aa796996da409d3eb1 # v3.2.0
with:
client-id: ${{ inputs.client-id }}
private-key: ${{ inputs.private-key }}
permission-contents: ${{ inputs.permission-contents }}
permission-pull-requests: ${{ inputs.permission-pull-requests }}
permission-issues: ${{ inputs.permission-issues }}
permission-actions: ${{ inputs.permission-actions }}
permission-workflows: ${{ inputs.permission-workflows }}
permission-discussions: ${{ inputs.permission-discussions }}
- name: Set output
id: output
shell: bash
run: |
if [ "${{ steps.app-token.outcome }}" == "success" ]; then
echo "Using generated app token"
echo "token=${{ steps.app-token.outputs.token }}" >> $GITHUB_OUTPUT
else
echo "Falling back to github.token"
echo "token=${{ github.token }}" >> $GITHUB_OUTPUT
fi