Add docker build to release workflow (#186) #3
Workflow file for this run
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: Release Build | |
on: | |
push: | |
tags: | |
- 'v[0-9].[0-9]+.[0-9]+' | |
jobs: | |
build-matrix: | |
name: Build matrix | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- id: set-matrix | |
name: Collect all tests | |
run: | | |
tests="$(find .github/tests -maxdepth 1 -type f -name '*.sh' -exec basename {} \; | sort | uniq)" | |
tests_json="$(echo "$tests" | jq -c --slurp --raw-input 'split("\n") | map(select(. != ""))')" | |
echo "tests=$tests_json" >> $GITHUB_OUTPUT | |
echo "Collected tests: $tests_json" | |
outputs: | |
tests: ${{ steps.set-matrix.outputs.tests }} | |
integration-tests: | |
runs-on: ubuntu-22.04 | |
needs: [build-matrix] | |
permissions: | |
contents: read | |
strategy: | |
matrix: | |
tests: ${{ fromJson(needs.build-matrix.outputs.tests) }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Build containers | |
run: ./build.sh | |
shell: bash | |
working-directory: ./.github/tests/it | |
- name: Run tests | |
run: bash ${{ matrix.tests }} | |
shell: bash | |
working-directory: ./.github/tests | |
build: | |
name: build (linux) | |
runs-on: ubuntu-22.04 | |
needs: integration-tests | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup go | |
uses: actions/setup-go@v5 | |
with: | |
go-version-file: 'go.mod' | |
- name: Set up QEMU | |
uses: docker/setup-qemu-action@v3 | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v3 | |
- name: Build artifact | |
run: make build | |
- name: Build docker artifact | |
run: make docker-build | |
- name: Compress artifact | |
run: tar -czvf spiffe-helper-${{ github.ref_name }}.tar.gz spiffe-helper | |
- name: Archive artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: spiffe-helper | |
path: | | |
spiffe-helper-${{ github.ref_name }}.tar.gz | |
spiffe-helper-image.tar | |
release: | |
runs-on: ubuntu-22.04 | |
needs: build | |
permissions: | |
contents: write | |
packages: write | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Download archived artifact | |
uses: actions/download-artifact@v4 | |
with: | |
name: spiffe-helper | |
path: . | |
- name: Log in to GHCR | |
uses: docker/login-action@v3.3.0 | |
with: | |
registry: ghcr.io | |
username: ${{ github.actor }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
- name: Install regctl | |
uses: regclient/actions/regctl-installer@main | |
- name: Push docker image | |
run: ./.github/workflows/scripts/push-images.sh ${{ github.ref_name }} | |
- name: Create Release | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
# Create the release using the version number as the title | |
run: gh release create "${GITHUB_REF#refs/tags/}" ./spiffe-helper-${{ github.ref_name }}.tar.gz --title "${GITHUB_REF#refs/tags/}" |