From 6249c093f41418164a0b25b0d4fd8cf3f0c00b75 Mon Sep 17 00:00:00 2001 From: djpbessems Date: Wed, 5 Jun 2024 21:33:46 +1000 Subject: [PATCH] build: Combine semrel dry-run w/ buildx logic --- .gitea/workflows/actions.yaml | 119 +++++++++++++++------------------- 1 file changed, 53 insertions(+), 66 deletions(-) diff --git a/.gitea/workflows/actions.yaml b/.gitea/workflows/actions.yaml index 68f516e..cf86ac2 100644 --- a/.gitea/workflows/actions.yaml +++ b/.gitea/workflows/actions.yaml @@ -2,53 +2,68 @@ name: build-image on: [push] jobs: + semrel_dryrun: + name: Semantic Release (Dry-run) + runs-on: dind-rootless + outputs: + version: ${{ steps.sem_rel.outputs.version }} + steps: + - name: Check out repository code + uses: actions/checkout@v3 + - name: Setup Node + uses: actions/setup-node@v3 + with: + node-version: 20 + - name: Install dependencies + run: | + npm install \ + semantic-release \ + @semantic-release/commit-analyzer \ + @semantic-release/exec + - name: Semantic Release (dry-run) + id: sem_rel + run: | + npx semantic-release \ + --package @semantic-release/exec \ + --package semantic-release \ + --branches ${{ gitea.refname }} \ + --tag-format 'v${version}' \ + --dry-run \ + --plugins @semantic-release/commit-analyzer,@semantic-release/exec \ + --analyzeCommits @semantic-release/commit-analyzer \ + --verifyRelease @semantic-release/exec \ + --verifyReleaseCmd 'echo "version=${nextRelease.version}" >> $GITHUB_OUTPUT' + env: + GIT_CREDENTIALS: ${{ secrets.GIT_USERNAME }}:${{ secrets.GIT_APIKEY }} + - name: Assert semantic release output + run: | + [[ -z "${{ steps.sem_rel.outputs.version }}" ]] && { + echo 'No release tag - exiting'; exit 1 + } || { + echo 'Release tag set correctly: ${{ steps.sem_rel.outputs.version }}'; exit 0 + } + build-image: name: build-image runs-on: dind - - container: - image: ghcr.io/catthehacker/ubuntu:act-latest - # image: gitea/runner-images:ubuntu-latest - # image: gitea.example.com/xyz/ubuntu-act:22.04 - # credentials: - # username: ${{ gitea.actor }} - # password: ${{ secrets.GA_TOKEN }} - + needs: semrel_dryrun + container: ghcr.io/catthehacker/ubuntu:act-latest steps: - - uses: actions/checkout@v4 - + - name: Check out repository code + uses: actions/checkout@v4 - name: Install QEMU run: | sudo apt-get update sudo apt-get install -y qemu-user-static - # - # https://github.com/docker/metadata-action - # - # - name: Docker meta - # id: meta - # uses: docker/metadata-action@v5 - # with: - # images: | - # gitea.example.com/xyz/alpine - # tags: | - # type=schedule,pattern={{date 'YYYYMMDDHHMM'}} - # type=semver,pattern={{version}} - # type=semver,pattern={{major}}.{{minor}} - # type=semver,pattern={{major}} - # type=sha - name: Set up Docker Context for Buildx id: buildx-context run: | - set -x - export DOCKER_HOST=tcp://docker:2376/ - export DOCKER_TLS_CERTDIR="/certs" - export DOCKER_TLS_VERIFY=1 - export DOCKER_CERT_PATH="/certs/client" - ls / -lash - whoami docker context create builders - # https://github.com/docker/setup-buildx-action - # https://docs.docker.com/engine/reference/commandline/cli/#environment-variables + env: + DOCKER_HOST: tcp://docker:2376/ + DOCKER_TLS_CERTDIR: /certs + DOCKER_TLS_VERIFY: 1 + DOCKER_CERT_PATH: "/certs/client" - name: Setup Docker Buildx id: buildx uses: docker/setup-buildx-action@v3 @@ -60,47 +75,19 @@ jobs: DOCKER_TLS_CERTDIR: "/certs" DOCKER_TLS_VERIFY: 1 DOCKER_CERT_PATH: "/certs/client" - - # - # Debug - # - - name: Available platforms - run: echo ${{ steps.buildx.outputs.platforms }} - - # - # https://github.com/docker/login-action - # - name: Login to Gitea uses: docker/login-action@v3 with: registry: code.spamasaurus.com username: ${{ gitea.actor }} password: ${{ secrets.GIT_APIKEY }} - - # - # https://github.com/docker/build-push-action - # - name: Build and push the image - if: gitea.event_name != 'pull_request' uses: docker/build-push-action@v5 with: - push: ${{ gitea.event_name != 'pull_request' }} + # push: ${{ gitea.event_name != 'pull_request' }} platforms: linux/amd64 - context: containers/test - tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }} - env: - DOCKER_HOST: "tcp://docker:2376/" - DOCKER_TLS_CERTDIR: "/certs" - DOCKER_TLS_VERIFY: 1 - DOCKER_CERT_PATH: "/certs/client" - - # - # - # - - name: Inspect - run: | - docker buildx imagetools inspect gitea.example.com/xyz/ubuntu-act:22.04 + context: djpbessems/packer-extended + tags: ${{ needs.semrel_dryrun.outputs.version }} env: DOCKER_HOST: "tcp://docker:2376/" DOCKER_TLS_CERTDIR: "/certs"