A GitHub Action to detect changed files during a Workflow run and to commit and
push them back to the GitHub repository using the ghcommit
utility.
The advantage of using ghcommit
is that the commits will be signed by GitHub's
GPG key and show as Verified. This is important for repositories that require
signed commits.
The plugin is inspired by stefanzweifel/git-auto-commit-action and uses some of the same input parameters. We expect to emulate more of its parameters over time and PRs providing similar functionality will be considered.
The plugin is currently implemented as a Docker style plugin. It must be run on
a Linux host, eg: ubuntu-latest
.
name: fmt
on:
# NOTE: Need to run on a PR so that the ${{ github.head_ref }} (branch) is non-null
pull_request:
types:
- opened
- synchronize
- reopened
jobs:
fmt-code:
runs-on: ubuntu-latest
permissions:
# Give the default GITHUB_TOKEN write permission to commit and push the
# added or changed files to the repository.
contents: write
steps:
- uses: actions/checkout@v4
# Include the pull request ref in the checkout action to prevent merge commit
# https://github.com/actions/checkout?tab=readme-ov-file#checkout-pull-request-head-commit-instead-of-merge-commit
with:
ref: ${{ github.event.pull_request.head.sha }}
# Run steps that make changes to the local repo here.
# Commit all changed files back to the repository
- uses: planetscale/ghcommit-action@v0.1.6
with:
commit_message: "🤖 fmt"
repo: ${{ github.repository }}
branch: ${{ github.head_ref || github.ref_name }}
env:
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
NOTE: These examples may not show the latest version. Check the GitHub Releases page to see the latest version tag
Example showing all options:
- uses: planetscale/ghcommit-action@v0.1.6
with:
commit_message: "🤖 fmt"
repo: ${{ github.repository }}
branch: ${{ github.head_ref || github.ref_name }}
empty: true
file_pattern: '*.txt *.md *.json *.hcl'
env:
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
See action.yaml
for current list of supported inputs.
Releases (version tags) are generated automatically on all successful main
branch builds.
This project uses autotag to automate this process.
Semver (vMajor.Minor.Patch
) is used for versioning and releases. By default, autotag
will
bump the patch version on a successful main build, eg: v1.0.0
-> v1.0.1
.
To bump the major or minor release instead, include [major]
or [minor]
in the commit message.
Refer to the autotag docs
for more details.