From 4513d5d7ed1b5aa1f5652bfcc38bb37fea7c8fb9 Mon Sep 17 00:00:00 2001 From: R4V3N Date: Tue, 17 Mar 2026 17:19:33 +0100 Subject: [PATCH 1/4] Add GitHub Actions workflow for Docker image publishing Builds multi-platform images (amd64/arm64) and pushes to GHCR on master pushes and version tags. Optional Docker Hub support via repository secrets. --- .dockerignore | 14 ++++++ .github/workflows/docker-publish.yml | 67 ++++++++++++++++++++++++++++ 2 files changed, 81 insertions(+) create mode 100644 .dockerignore create mode 100644 .github/workflows/docker-publish.yml diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..7d4b7ac --- /dev/null +++ b/.dockerignore @@ -0,0 +1,14 @@ +node_modules +npm-debug.log* +.git +.gitignore +.github +.omc +.env +.env.* +!.env.example +runs/ +docs/ +*.md +!README.md +LICENSE diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml new file mode 100644 index 0000000..7b09bcc --- /dev/null +++ b/.github/workflows/docker-publish.yml @@ -0,0 +1,67 @@ +name: Build & Publish Docker Image + +on: + push: + branches: [master] + tags: ['v*'] + pull_request: + branches: [master] + +env: + REGISTRY: ghcr.io + IMAGE_NAME: ${{ github.repository }} + +jobs: + build-and-push: + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Log in to GHCR + if: github.event_name != 'pull_request' + uses: docker/login-action@v3 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Log in to Docker Hub + if: github.event_name != 'pull_request' && secrets.DOCKERHUB_USERNAME != '' + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Extract metadata + id: meta + uses: docker/metadata-action@v5 + with: + images: | + ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + tags: | + type=raw,value=latest,enable={{is_default_branch}} + type=semver,pattern={{version}} + type=semver,pattern={{major}}.{{minor}} + type=sha,prefix= + + - name: Build and push + uses: docker/build-push-action@v6 + with: + context: . + platforms: linux/amd64,linux/arm64 + push: ${{ github.event_name != 'pull_request' }} + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + cache-from: type=gha + cache-to: type=gha,mode=max From 3294b18d1c12797a46e4a7854e450b82fd67e3a4 Mon Sep 17 00:00:00 2001 From: R4V3N Date: Wed, 18 Mar 2026 06:13:50 +0100 Subject: [PATCH 2/4] Remove .dockerignore from .gitignore The .dockerignore needs to be tracked so the CI workflow and contributors can use it during Docker builds. --- .gitignore | 2 -- 1 file changed, 2 deletions(-) diff --git a/.gitignore b/.gitignore index 4dd3c66..451e831 100644 --- a/.gitignore +++ b/.gitignore @@ -34,8 +34,6 @@ AGENTS.md *.log npm-debug.log* -# Docker -.dockerignore # Package lock (optional — remove this line if you want deterministic installs) # package-lock.json From 9510865dd82e70b6bd526f7904db8b946e76c31a Mon Sep 17 00:00:00 2001 From: R4V3N Date: Wed, 18 Mar 2026 06:28:19 +0100 Subject: [PATCH 3/4] Fix Docker Hub login condition in CI workflow Replace invalid secrets check in if-condition with a repository variable (vars.DOCKERHUB_ENABLED) to avoid workflow file parsing errors. --- .github/workflows/docker-publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml index 7b09bcc..e0b3560 100644 --- a/.github/workflows/docker-publish.yml +++ b/.github/workflows/docker-publish.yml @@ -37,7 +37,7 @@ jobs: password: ${{ secrets.GITHUB_TOKEN }} - name: Log in to Docker Hub - if: github.event_name != 'pull_request' && secrets.DOCKERHUB_USERNAME != '' + if: github.event_name != 'pull_request' && vars.DOCKERHUB_ENABLED == 'true' uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERHUB_USERNAME }} From 06e0140268e376c4296e0ff26c51f2d134b614bc Mon Sep 17 00:00:00 2001 From: R4V3N Date: Wed, 18 Mar 2026 16:13:49 +0100 Subject: [PATCH 4/4] Add Docker Hub image tags to metadata step The login step was present but no Docker Hub image name was configured in the metadata action, so nothing would be pushed. Now generates Docker Hub tags when DOCKERHUB_ENABLED is set. --- .github/workflows/docker-publish.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml index e0b3560..b76a0fc 100644 --- a/.github/workflows/docker-publish.yml +++ b/.github/workflows/docker-publish.yml @@ -49,6 +49,7 @@ jobs: with: images: | ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + ${{ vars.DOCKERHUB_ENABLED == 'true' && format('{0}/{1}', secrets.DOCKERHUB_USERNAME, 'crucix') || '' }} tags: | type=raw,value=latest,enable={{is_default_branch}} type=semver,pattern={{version}}