Bump actions/checkout from 4.1.5 to 4.1.6 #556
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: 'Main' | |
on: | |
push: | |
tags: ['*'] | |
branches: ['*'] | |
pull_request: | |
branches: ['*'] | |
workflow_dispatch: | |
permissions: {} | |
jobs: | |
gofmt: | |
name: 'Gofmt' | |
runs-on: 'ubuntu-latest' | |
permissions: | |
contents: 'read' | |
steps: | |
- name: 'Checkout' | |
uses: 'actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29' | |
- name: 'Set up Go' | |
uses: 'actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7' | |
with: | |
go-version-file: './go.mod' | |
check-latest: true | |
- name: 'Gofmt' | |
run: | | |
make gofmt | |
staticcheck: | |
name: 'Staticcheck' | |
runs-on: 'ubuntu-latest' | |
permissions: | |
contents: 'read' | |
steps: | |
- name: 'Checkout' | |
uses: 'actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29' | |
- name: 'Set up Go' | |
uses: 'actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7' | |
with: | |
go-version-file: './go.mod' | |
check-latest: true | |
- name: 'Staticcheck' | |
uses: 'dominikh/staticcheck-action@fe1dd0c3658873b46f8c9bb3291096a617310ca6' | |
with: | |
install-go: false | |
test: | |
name: 'Test on ${{ matrix.os }}' | |
needs: ['gofmt', 'staticcheck'] | |
runs-on: '${{ matrix.os }}' | |
permissions: | |
contents: 'read' | |
strategy: | |
fail-fast: false | |
matrix: | |
os: ['ubuntu-latest', 'windows-latest', 'macos-latest'] | |
steps: | |
- name: 'Checkout' | |
uses: 'actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29' | |
- name: 'Set up Go' | |
uses: 'actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7' | |
with: | |
go-version-file: './go.mod' | |
check-latest: true | |
- name: 'Test' | |
run: | | |
make test | |
test-race: | |
name: 'Test race' | |
needs: ['gofmt', 'staticcheck'] | |
runs-on: 'ubuntu-latest' | |
permissions: | |
contents: 'read' | |
steps: | |
- name: 'Checkout' | |
uses: 'actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29' | |
- name: 'Set up Go' | |
uses: 'actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7' | |
with: | |
go-version-file: './go.mod' | |
check-latest: true | |
- name: 'Test race' | |
run: | | |
make test-race | |
test-e2e: | |
name: 'Test e2e' | |
needs: ['gofmt', 'staticcheck'] | |
runs-on: 'ubuntu-20.04' | |
permissions: | |
contents: 'read' | |
steps: | |
- name: 'Checkout' | |
uses: 'actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29' | |
- name: 'Set up Go' | |
uses: 'actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7' | |
with: | |
go-version-file: './go.mod' | |
check-latest: true | |
- name: 'Test e2e' | |
run: | | |
make test-e2e | |
build: | |
name: >- | |
Build for | |
${{ matrix.go.GOOS }}-${{ matrix.go.GOARCH }} | |
${{ matrix.go.GOARM != '' && format('v{0}', matrix.go.GOARM) || '' }} | |
needs: ['test', 'test-race', 'test-e2e'] | |
runs-on: 'ubuntu-latest' | |
permissions: | |
contents: 'read' | |
strategy: | |
fail-fast: false | |
matrix: | |
go: [ | |
{ GOOS: 'linux', GOARCH: 'amd64' }, | |
{ GOOS: 'linux', GOARCH: 'arm64' }, | |
{ GOOS: 'linux', GOARCH: 'arm', GOARM: '7' }, | |
{ GOOS: 'linux', GOARCH: 'arm', GOARM: '6' }, | |
{ GOOS: 'linux', GOARCH: 'riscv64' }, | |
{ GOOS: 'linux', GOARCH: 'ppc64le' }, | |
{ GOOS: 'linux', GOARCH: 's390x' }, | |
{ GOOS: 'windows', GOARCH: 'amd64' }, | |
{ GOOS: 'windows', GOARCH: 'arm64' }, | |
{ GOOS: 'darwin', GOARCH: 'amd64' }, | |
{ GOOS: 'darwin', GOARCH: 'arm64' }, | |
] | |
steps: | |
- name: 'Checkout' | |
uses: 'actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29' | |
- name: 'Set up Go' | |
uses: 'actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7' | |
with: | |
go-version-file: './go.mod' | |
check-latest: true | |
- name: 'Build' | |
run: | | |
make build \ | |
GOOS="${{ matrix.go.GOOS }}" \ | |
GOARCH="${{ matrix.go.GOARCH }}" \ | |
GOARM="${{ matrix.go.GOARM }}" | |
file ./dist/*-*-* && gzip -nv ./dist/*-*-* | |
- name: 'Upload artifacts' | |
uses: 'actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808' | |
with: | |
name: 'dist-${{ matrix.go.GOOS }}-${{ matrix.go.GOARCH }}-${{ matrix.go.GOARM }}' | |
path: './dist/*.gz' | |
retention-days: 1 | |
build-push-docker: | |
name: 'Build and push Docker images' | |
needs: ['build'] | |
runs-on: 'ubuntu-latest' | |
permissions: | |
contents: 'read' | |
steps: | |
- name: 'Checkout' | |
uses: 'actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29' | |
- name: 'Set up QEMU' | |
uses: 'docker/setup-qemu-action@68827325e0b33c7199eb31dd4e31fbe9023e06e3' | |
- name: 'Set up Docker Buildx' | |
uses: 'docker/setup-buildx-action@d70bba72b1f3fd22344832f00baa16ece964efeb' | |
- name: 'Login to Docker Hub' | |
if: "github.event_name != 'pull_request'" | |
uses: 'docker/login-action@e92390c5fb421da1463c202d546fed0ec5c39f20' | |
with: | |
registry: 'docker.io' | |
username: '${{ secrets.DOCKERHUB_USERNAME }}' | |
password: '${{ secrets.DOCKERHUB_TOKEN }}' | |
- name: 'Extract metadata' | |
id: 'meta' | |
uses: 'docker/metadata-action@8e5442c4ef9f78752691e2d8f8d19755c6f78e81' | |
with: | |
images: | | |
docker.io/${{ github.repository }} | |
tags: | | |
type=ref,event=branch | |
type=semver,pattern=v{{version}} | |
type=semver,pattern=v{{major}}.{{minor}} | |
type=semver,pattern=v{{major}} | |
- name: 'Build and push' | |
uses: 'docker/build-push-action@2cdde995de11925a030ce8070c3d77a52ffcf1c0' | |
with: | |
context: './' | |
platforms: 'linux/amd64,linux/arm64/v8,linux/arm/v7,linux/arm/v6,linux/riscv64,linux/ppc64le,linux/s390x' | |
tags: '${{ steps.meta.outputs.tags }}' | |
labels: '${{ steps.meta.outputs.labels }}' | |
push: "${{ github.event_name != 'pull_request' }}" | |
release-github: | |
name: 'Create GitHub release' | |
if: "startsWith(github.ref, 'refs/tags/v')" | |
needs: ['build', 'build-push-docker'] | |
runs-on: 'ubuntu-latest' | |
permissions: | |
contents: 'write' | |
steps: | |
- name: 'Download artifacts' | |
uses: 'actions/download-artifact@65a9edc5881444af0b9093a5e628f2fe47ea3b2e' | |
with: | |
pattern: 'dist-*' | |
merge-multiple: true | |
- name: 'Create release' | |
env: | |
GITHUB_PAT: '${{ secrets.GITHUB_TOKEN }}' | |
run: | | |
RELEASE_STATUS="$(curl -fs --proto '=https' --tlsv1.3 --globoff \ | |
--url "https://api.github.com/repos/${GITHUB_REPOSITORY:?}/releases/tags/${GITHUB_REF_NAME:?}" \ | |
--header "Authorization: Bearer ${GITHUB_PAT:?}" \ | |
--header 'Accept: application/vnd.github.v3+json' \ | |
--header 'Content-Type: application/json' \ | |
--write-out '%{http_code}' --output /dev/null ||:)" | |
if [ "${RELEASE_STATUS:?}" = '200' ]; then exit 0; fi | |
RELEASE_ID="$(curl -fsS --proto '=https' --tlsv1.3 --globoff \ | |
--url "https://api.github.com/repos/${GITHUB_REPOSITORY:?}/releases" \ | |
--header "Authorization: Bearer ${GITHUB_PAT:?}" \ | |
--header 'Accept: application/vnd.github.v3+json' \ | |
--header 'Content-Type: application/json' \ | |
--data "$(jq -rn --arg tag "${GITHUB_REF_NAME:?}" '{"name": $tag, "tag_name": $tag, "generate_release_notes": true}')" | jq -r '.id')" | |
if [ -z "${RELEASE_ID-}" ] || [ "${RELEASE_ID:?}" = 'null' ]; then exit 1; fi | |
for asset in ./*; do | |
[ -f "${asset:?}" ] || continue | |
encodedAssetName="$(jq -rn --arg v "$(basename "${asset:?}")" '$v|@uri')" | |
curl -fsS --proto '=https' --tlsv1.3 --globoff \ | |
--url "https://uploads.github.com/repos/${GITHUB_REPOSITORY:?}/releases/${RELEASE_ID:?}/assets?name=${encodedAssetName:?})" \ | |
--header "Authorization: Bearer ${GITHUB_PAT:?}" \ | |
--header 'Accept: application/vnd.github.v3+json' \ | |
--header 'Content-Type: application/octet-stream' \ | |
--data-binary "@${asset:?}" --output /dev/null | |
done |