From 9e39792d496f3f9bcf237b27ad60c423e6871cc0 Mon Sep 17 00:00:00 2001 From: dlawler489 <104159223@student.swin.edu.au> Date: Wed, 9 Sep 2026 11:15:27 +1000 Subject: [PATCH] Add CI to build/push Docker image, switch compose to pull it Matches the etsy-finance-tracker pattern: Forgejo Actions builds and pushes the image on every push to main, and docker-compose.yml now pulls that image instead of building from source on the deploy host. Co-Authored-By: Claude Sonnet 5 --- .forgejo/workflows/docker-build.yml | 44 +++++++++++++++++++++++++++++ docker-compose.yml | 2 +- 2 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 .forgejo/workflows/docker-build.yml diff --git a/.forgejo/workflows/docker-build.yml b/.forgejo/workflows/docker-build.yml new file mode 100644 index 0000000..a8fcee7 --- /dev/null +++ b/.forgejo/workflows/docker-build.yml @@ -0,0 +1,44 @@ +name: Build and Push Docker Image + +on: + push: + branches: [main] + +defaults: + run: + shell: sh + +jobs: + build-and-push: + # Runner offers ubuntu-latest; the label only selects the runner. The job + # overrides the image below with docker:cli and mounts the host socket. + runs-on: ubuntu-latest + # Run the job in a Docker-CLI container. act_runner already auto-mounts the + # host Docker socket (OrbStack), so `docker` reaches the host daemon — don't + # mount it again here or Docker errors with "Duplicate mount point". + container: + image: docker:cli + steps: + - name: Install git + run: apk add --no-cache git + + - name: Checkout + run: | + git config --global --add safe.directory '*' + git init -q . + git remote add origin "https://${{ github.actor }}:${{ secrets.GITHUB_TOKEN }}@git.plexultra.com/${{ github.repository }}.git" \ + || git remote set-url origin "https://${{ github.actor }}:${{ secrets.GITHUB_TOKEN }}@git.plexultra.com/${{ github.repository }}.git" + git fetch --depth 1 origin "${{ github.ref_name }}" + git checkout -q -f FETCH_HEAD + + # Uses a Forgejo token with write:package scope (the auto GITHUB_TOKEN + # can't write packages — push fails with 'unauthorized: reqPackageAccess') + - name: Log in to Forgejo container registry + run: echo "${{ secrets.REGISTRY_TOKEN }}" | docker login git.plexultra.com -u "${{ github.actor }}" --password-stdin + + - name: Build and push image + run: | + IMAGE=git.plexultra.com/${{ github.repository }} + docker build -t "$IMAGE:main" -t "$IMAGE:${{ github.sha }}" . + docker push "$IMAGE:main" + docker push "$IMAGE:${{ github.sha }}" diff --git a/docker-compose.yml b/docker-compose.yml index d84d06d..09a419d 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,6 +1,6 @@ services: power-compare: - build: . + image: git.plexultra.com/dlawler489/power-compare:main ports: - "8000:8000" env_file: