From b243af40606e1ba86b740c354f55d882af1d32bc Mon Sep 17 00:00:00 2001 From: Danny Bessems Date: Fri, 1 Aug 2025 21:16:40 +1000 Subject: [PATCH] feat: Initial act-runner-extended container image --- .gitea/workflows/actions.yaml | 140 ++++++++++++++++++++++++++++++++++ Dockerfile | 12 +++ 2 files changed, 152 insertions(+) create mode 100644 .gitea/workflows/actions.yaml create mode 100644 Dockerfile diff --git a/.gitea/workflows/actions.yaml b/.gitea/workflows/actions.yaml new file mode 100644 index 0000000..6cdf8f7 --- /dev/null +++ b/.gitea/workflows/actions.yaml @@ -0,0 +1,140 @@ +name: build-image +on: [push] + +jobs: + semrel_dryrun: + name: Semantic Release (Dry-run) + runs-on: ubuntu-latest + outputs: + version: ${{ steps.sem_rel.outputs.version }} + steps: + - name: Check out repository code + uses: actions/checkout@v3 + - 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' + - 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_container: + name: Container image + runs-on: ubuntu-latest + # needs: semrel_dryrun + steps: + - name: Check out repository code + uses: actions/checkout@v4 + - name: Set up qemu + uses: docker/setup-qemu-action@v3 + # run: | + # sudo apt-get update + # sudo apt-get install -y qemu-user-static + - name: Create builder context + id: buildx-context + run: | + docker context create builders + env: + DOCKER_HOST: tcp://docker:2376/ + DOCKER_TLS_CERTDIR: /certs + DOCKER_TLS_VERIFY: 1 + DOCKER_CERT_PATH: "/certs/client" + - name: Set up buildx + id: buildx + uses: docker/setup-buildx-action@v3 + with: + # buildkitd-flags: --debug + endpoint: builders + env: + DOCKER_HOST: "tcp://docker:2376/" + DOCKER_TLS_CERTDIR: "/certs" + DOCKER_TLS_VERIFY: 1 + DOCKER_CERT_PATH: "/certs/client" + - name: Login to target repository + uses: docker/login-action@v3 + with: + registry: code.spamasaurus.com + username: ${{ secrets.GIT_USERNAME }} + password: ${{ secrets.GIT_APIKEY }} + - name: Build & push container image + uses: docker/build-push-action@v5 + with: + context: . + tags: code.spamasaurus.com/djpbessems/act-runner-extended:${{ needs.semrel_dryrun.outputs.version }} + provenance: false + push: true + env: + DOCKER_HOST: "tcp://docker:2376/" + DOCKER_TLS_CERTDIR: "/certs" + DOCKER_TLS_VERIFY: 1 + DOCKER_CERT_PATH: "/certs/client" + + # build_chart: + # name: Helm chart + # runs-on: dind-rootless + # needs: semrel_dryrun + # steps: + # - name: Check out repository code + # uses: actions/checkout@v4 + # - uses: azure/setup-helm@v4.2.0 + # id: setup + # with: + # version: "latest" + # - name: Prepare build environment + # run: | + # helm plugin install https://github.com/chartmuseum/helm-push + + # sed -i 's/{{ chart_version }}/${{ needs.semrel_dryrun.outputs.version }}/g' charts/json-server/Chart.yaml + # sed -i 's/{{ image_tag }}/${{ needs.semrel_dryrun.outputs.version }}/g' charts/json-server/values.yaml + # - name: Build & push helm chart + # run: | + # helm package ./charts/json-server + # helm repo add \ + # --username ${{ secrets.GIT_USERNAME }} \ + # --password ${{ secrets.GIT_APIKEY }} \ + # spamasaurus \ + # https://code.spamasaurus.com/api/packages/${{ secrets.GIT_USERNAME }}/helm + # helm cm-push \ + # json-server-*.tgz \ + # spamasaurus + + semrel: + name: Semantic Release + runs-on: ubuntu-latest + needs: [build_container,build_chart] + steps: + - name: Check out repository code + uses: actions/checkout@v3 + - name: Install dependencies + run: | + npm install \ + semantic-release \ + @semantic-release/changelog \ + @semantic-release/commit-analyzer \ + @semantic-release/git \ + @semantic-release/release-notes-generator + - name: Semantic Release + run: | + npx semantic-release \ + --branches ${{ gitea.refname }} \ + --tag-format 'v${version}' \ + --plugins @semantic-release/commit-analyzer,@semantic-release/release-notes-generator,@semantic-release/changelog,@semantic-release/git diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..e3ad724 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,12 @@ +FROM gitea/act_runner:0.2.12 AS source + +RUN apt-get update && \ + apt-get install -y --no-install-recommends \ + gettext \ + genisoimage \ + libguestfs-tools \ + qemu-system-x86 \ + qemu-utils \ + supermin && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists/*