release: preflight tap token push access and retry push auth

This commit is contained in:
2026-03-02 18:24:56 -05:00
parent af9dcc8d15
commit 33c45a66af
2 changed files with 26 additions and 2 deletions

View File

@@ -62,10 +62,20 @@ jobs:
env: env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
HOMEBREW_TAP_REPO: ${{ vars.HOMEBREW_TAP_REPO }} HOMEBREW_TAP_REPO: ${{ vars.HOMEBREW_TAP_REPO }}
HOMEBREW_TAP_TOKEN: ${{ secrets.HOMEBREW_TAP_TOKEN }}
run: | run: |
set -euo pipefail set -euo pipefail
[[ -n "${HOMEBREW_TAP_REPO:-}" ]] || { echo "missing required variable: HOMEBREW_TAP_REPO" >&2; exit 1; } [[ -n "${HOMEBREW_TAP_REPO:-}" ]] || { echo "missing required variable: HOMEBREW_TAP_REPO" >&2; exit 1; }
gh repo view "${HOMEBREW_TAP_REPO}" >/dev/null gh repo view "${HOMEBREW_TAP_REPO}" >/dev/null
# Validate that the release push token can write to the tap repo.
tap_push_permission="$(
GH_TOKEN="${HOMEBREW_TAP_TOKEN}" \
gh api "repos/${HOMEBREW_TAP_REPO}" --jq '.permissions.push // false'
)"
if [[ "${tap_push_permission}" != "true" ]]; then
echo "HOMEBREW_TAP_TOKEN does not have push access to ${HOMEBREW_TAP_REPO}" >&2
exit 1
fi
- name: Require successful CI checks on tagged commit - name: Require successful CI checks on tagged commit
working-directory: ${{ github.workspace }} working-directory: ${{ github.workspace }}

View File

@@ -55,5 +55,19 @@ git commit -m "Update openbitdo formula" || {
echo "no formula changes to push" echo "no formula changes to push"
exit 0 exit 0
} }
git remote set-url origin "https://${TAP_USER}:${HOMEBREW_TAP_TOKEN}@github.com/${TAP_REPO}.git"
git push push_with_user() {
local user="$1"
git remote set-url origin "https://${user}:${HOMEBREW_TAP_TOKEN}@github.com/${TAP_REPO}.git"
git push
}
if ! push_with_user "$TAP_USER"; then
# Some token types require x-access-token as the username for writes.
if [[ "$TAP_USER" != "x-access-token" ]]; then
push_with_user "x-access-token"
else
echo "failed to push formula updates to ${TAP_REPO}" >&2
exit 1
fi
fi