Skip to content

Commit

Permalink
ci: generate releases.json on release event
Browse files Browse the repository at this point in the history
We are currently using the GitHub API in our setup-buildx-action
to check for latest and tagged releases to make sure they exist
before download. But this requires using a token to avoid
rate-limit. It's fine for public runners but GHES runners don't
have the `github.token` populated automatically. They need to
create a PAT.

This PR will solve this issue by generating and pushing a
`releases.json` file in this repo when we publish a GitHub Release
that will then be fetched through `raw.githubusercontent.com`
endpoint on `setup-buildx-action` repo. This endpoint is better
served for our purpose with 5000 requests per hour compared to the
GitHub API endpoint that is limited to 60 requests per hour (unauth)
and 1000 request per hour when authenticated.

Also ignore .github/releases.json file on pull request event as an
action in a workflow run can't trigger a new workflow run anyway.
See https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#example-using-more-than-one-event

Signed-off-by: CrazyMax <[email protected]>
  • Loading branch information
crazy-max committed Jan 30, 2023
1 parent a718d07 commit 36d95bd
Show file tree
Hide file tree
Showing 5 changed files with 61 additions and 9 deletions.
4 changes: 1 addition & 3 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,8 @@ on:
tags:
- 'v*'
pull_request:
branches:
- 'master'
- 'v[0-9]*'
paths-ignore:
- '.github/releases.json'
- 'README.md'
- 'docs/**'

Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/docs-upstream.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ on:
paths:
- '.github/workflows/docs-upstream.yml'
- 'docs/**'
paths-ignore:
- '.github/releases.json'

jobs:
docs-yaml:
Expand Down
4 changes: 1 addition & 3 deletions .github/workflows/e2e.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,8 @@ on:
- 'master'
- 'v[0-9]*'
pull_request:
branches:
- 'master'
- 'v[0-9]*'
paths-ignore:
- '.github/releases.json'
- 'README.md'
- 'docs/**'

Expand Down
55 changes: 55 additions & 0 deletions .github/workflows/releases-json.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
name: releases-json

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

on:
release:
types:
- released
pull_request:
paths-ignore:
- '.github/releases.json'

jobs:
generate:
uses: crazy-max/.github/.github/workflows/releases-json.yml@2a596c917a8ad3e6203ae99b777148525a2e00d5
with:
repository: docker/buildx
artifact_name: releases-json
filename: releases.json
secrets: inherit

open-pr:
runs-on: ubuntu-22.04
if: github.event_name == 'release'
needs:
- generate
steps:
-
name: Checkout
uses: actions/checkout@v3
-
name: Download
uses: actions/download-artifact@v3
with:
name: releases-json
path: .github
-
name: Commit changes
run: |
git add -A .
-
name: Create PR
uses: peter-evans/create-pull-request@2b011faafdcbc9ceb11414d64d0573f37c774b04
with:
base: master
branch: releases-json/${{ github.event.release.name }}
commit-message: "github: update .github/releases.json"
signoff: true
delete-branch: true
title: "Update `.github/releases.json`"
body: |
Update `.github/releases.json` to keep in sync with GitHub Releases.
draft: false
5 changes: 2 additions & 3 deletions .github/workflows/validate.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,8 @@ on:
tags:
- 'v*'
pull_request:
branches:
- 'master'
- 'v[0-9]*'
paths-ignore:
- '.github/releases.json'

jobs:
validate:
Expand Down

0 comments on commit 36d95bd

Please sign in to comment.