An action that bumps a Homebrew formula after a new release.
Minimal usage example:
on:
push:
tags: 'v*'
jobs:
homebrew:
name: Bump Homebrew formula
runs-on: ubuntu-latest
steps:
- uses: mislav/bump-homebrew-formula-action@v3
with:
# A PR will be sent to github.com/Homebrew/homebrew-core to update this formula:
formula-name: my_formula
env:
# the personal access token should have "repo" & "workflow" scopes
COMMITTER_TOKEN: ${{ secrets.COMMITTER_TOKEN }}The COMMITTER_TOKEN secret is required because this action will want to write
to an external repository. You can generate a new Personal Access Token (classic)
here and give it repo and workflow scopes.
Comprehensive usage example:
on:
push:
tags: 'v*'
jobs:
homebrew:
name: Bump Homebrew formula
runs-on: ubuntu-latest
steps:
- name: Extract version
id: extract-version
run: |
echo "tag-name=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
- uses: mislav/bump-homebrew-formula-action@v3
if: ${{ !contains(github.ref, '-') }} # skip prereleases
with:
formula-name: my_formula
formula-path: Formula/m/my_formula.rb
homebrew-tap: Homebrew/homebrew-core
base-branch: master
download-url: https://example.com/foo/${{ steps.extract-version.outputs.tag-name }}.tar.gz
commit-message: |
{{formulaName}} {{version}}
Created by https://github.com/mislav/bump-homebrew-formula-action
env:
COMMITTER_TOKEN: ${{ secrets.COMMITTER_TOKEN }}
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}You should enable GITHUB_TOKEN only if the repository that runs this Action is
private and if COMMITTER_TOKEN has the public_repo scope only.
GITHUB_TOKEN will be used for verifying the SHA256 sum of the downloadable
archive for this release.
Formula parameters:
-
formula-name: the name of the Homebrew formula to bump. Defaults to lower-cased repository name. -
formula-path: the relative path of the Homebrew formula file to edit within thehomebrew-taprepository. Defaults toFormula/<letter>/<formula-name>.rbfor homebrew-core formulae andFormula/<formula-name>.rbotherwise. -
tag-name: the git tag name to bump the formula to. Defaults to the currently pushed tag. -
download-url: the package download URL for the Homebrew formula.Defaults to
https://github.com/OWNER/REPO/archive/refs/tags/<tag-name>.tar.gz, whereOWNER/REPOis the repository that is running the Actions workflow. -
download-sha256: the SHA256 checksum of the archive atdownload-url. Defaults to calculating the checksum by fetching the archive at run time.
Repository parameters:
-
homebrew-tap: the full GitHub repository name (in theNAME/OWNERformat) where the Homebrew formula should be updated. Defaults toHomebrew/homebrew-core. -
push-to: a specific fork ofhomebrew-tapwhere the edit should be pushed to. Defaults to creating or reusing a personal fork of the owner of COMMITTER_TOKEN. -
base-branch: the branch name in thehomebrew-taprepository where the formula should be updated. Defaults to the main branch of the repository. -
create-pullrequest: a boolean value to either force or prohibit submitting a pull request tohomebrew-tap. Defaults to false ifCOMMITTER_TOKENhas the privileges to directly push tobase-branchinhomebrew-tap. -
commit-message: the git commit message template to use when updating the formula. The following placeholders be expanded:Placeholder Description {{formulaName}}the name of the formula supplied in formula-name{{version}}the version number for this release It's recommended that
commit-messagehas both subject and body, i.e. that it contains a subject line followed by a blank line followed by body text. Otherwise, pull requests toHomebrew/homebrew-coremight get denied by their automation.Defaults to:
{{formulaName}} {{version}} Created by https://github.com/mislav/bump-homebrew-formula-action
Given a Homebrew formula Formula/my_formula.rb in the
homebrew-core repo:
class MyFormula < Formula
url "https://github.com/me/myproject/archive/refs/tags/v1.2.3.tar.gz"
sha256 "<OLDSHA>"
# ...
endAfter we push a v2.0.0 git tag to a project that has this action configured,
the formula will be updated to:
class MyFormula < Formula
url "https://github.com/me/myproject/archive/refs/tags/v2.0.0.tar.gz"
sha256 "<NEWSHA>"
# ...
endThis action can update the following Homebrew formula fields:
versionurlsha256- for non-gitdownload-urltag- for git-baseddownload-urlrevision- for git-baseddownload-url
If the current COMMITTER_TOKEN doesn't have push access to the repo specified
by the homebrew-tap input, the formula will be edited in a fork that is
automatically created, and a pull request will be opened.
If the token has push access, but the default branch of the tap repo is protected, a pull request will be opened from a new branch in the same repo.
Otherwise, the formula will be edited via a direct push to the default branch.
This can be overriden by setting create-pullrequest.
Here's an example of how to set up this action to be manually triggered instead of being triggered by pushing to a git tag:
on:
workflow_dispatch:
inputs:
tag-name:
description: 'The git tag name to bump the formula to'
required: true
jobs:
homebrew:
name: Bump Homebrew formula
runs-on: ubuntu-latest
steps:
- uses: mislav/bump-homebrew-formula-action@v3
with:
formula-name: my_formula
tag-name: ${{ github.event.inputs.tag-name }}
download-url: https://example.com/foo/${{ github.event.inputs.tag-name }}.tar.gz
env:
COMMITTER_TOKEN: ${{ secrets.COMMITTER_TOKEN }}