Skip to content

ryancyq/github-signed-commit

Use this GitHub action with your project
Add this Action to an existing workflow or create a new one
View on Marketplace

Repository files navigation

🖋️ Create signed commits with GitHub Actions

CI Coverage Maintainability

Learn more about commit signature on GitHub.

Features

Works with the GitHub GraphQL API.

  • Uses the Git CLI to detect file changes against the file paths provided in the input.
  • Uses a single GraphQL mutation request to upload all blob file content.
  • Supports glob patterns for file paths.
  • Push tag to the new/current commit on a branch.

Known Limitation

Does not support HTTP request streaming, so the action runner will consume more memory during execution when uploading large blob files.

Usage

In your workflow, to commit your files, configure a step as follows:

jobs:
  <job-id>:
    permissions:
      contents: write # grant secrets.GITHUB_TOKEN permission to push file changes
  
    - name: Commit file
      uses: ryancyq/github-signed-commit@v1
      env:
        GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
      with:
        files: |
          path/to/myfile1
          path/to/*.md
          path/to/**/*.js
        commit-message: Committing files
jobs:
  <job-id>:
    permissions:
      contents: write # grant secrets.GITHUB_TOKEN permission to push file changes
  
    - name: Commit file
      uses: ryancyq/github-signed-commit@v1
      env:
        GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
      with:
        files: path/to/myversion
        commit-message: Release new version
        tag: v1.0.3

Note: The GH_TOKEN environment variable is required for GitHub API request authentication.

Inputs

Input Required Description
files YES Multi-line string of file paths to be committed, relative to the current workspace.
workspace NO Directory containing files to be committed. DEFAULT: GitHub workspace directory (root of the repository).
commit-message YES Commit message for the file changes.
branch-name NO Branch to commit, it must already exist in the remote. DEFAULT: Workflow triggered branch
branch-push-force NO --force flag when running git push <branch-name>.
tag NO Push tag for the new/current commit.
tag-only-if-file-changes NO Push tag for new commit only when file changes present. DEFAULT: true

Outputs

Output Description
commit-sha Full SHA of the signed commit.
tag Tag of the signed commit.