Skip to content

Bump actions/checkout from 4.1.5 to 4.1.6 #550

Bump actions/checkout from 4.1.5 to 4.1.6

Bump actions/checkout from 4.1.5 to 4.1.6 #550

Workflow file for this run

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