diff --git a/.forgejo/workflows/docker.yml b/.forgejo/workflows/docker.yml new file mode 100644 index 000000000..372c83565 --- /dev/null +++ b/.forgejo/workflows/docker.yml @@ -0,0 +1,74 @@ +# Based on https://github.com/docker/build-push-action + +name: "Docker" + +on: + release: # A GitHub release was published + types: [published] + workflow_dispatch: # A build was manually requested + workflow_call: # Another pipeline called us + secrets: + DOCKER_TOKEN: + required: true + +env: + GHCR_NAMESPACE: sigb.us + PLATFORMS: linux/amd64 + FORGEJO_USER: signaryk + +jobs: + monolith: + name: Monolith image + runs-on: docker + image: ubuntu:latest + permissions: + contents: read + packages: write + security-events: write # To upload Trivy sarif files + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Get release tag & build flags + if: github.event_name == 'release' # Only for GitHub releases + run: | + echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Login to sigb.us container registry + uses: docker/login-action@v3 + with: + registry: git.sigb.us + username: ${{ env.FORGEJO_USER }} + password: ${{ secrets.FORGEJO_TOKEN }} + + - name: Build main monolith image + if: github.ref_name == 'main' + id: docker_build_monolith + uses: docker/build-push-action@v3 + with: + cache-from: type=registry,ref=git.sigb.us/${{ env.GHCR_NAMESPACE }}/dendrite-monolith:buildcache + cache-to: type=registry,ref=git.sigb.us/${{ env.GHCR_NAMESPACE }}/dendrite-monolith:buildcache,mode=max + context: . + platforms: ${{ env.PLATFORMS }} + push: true + tags: | + git.sigb.us/${{ env.GHCR_NAMESPACE }}/dendrite:${{ github.ref_name }} + git.sigb.us/${{ env.GHCR_NAMESPACE }}/dendrite:latest + git.sigb.us/${{ env.GHCR_NAMESPACE }}/dendrite:devel + + - name: Build release monolith image + if: github.event_name == 'release' # Only for GitHub releases + id: docker_build_monolith_release + uses: docker/build-push-action@v3 + with: + cache-from: type=gha + cache-to: type=gha,mode=max + context: . + platforms: ${{ env.PLATFORMS }} + push: true + tags: | + git.sigb.us/${{ env.GHCR_NAMESPACE }}/dendrite-monolith:latest + git.sigb.us/${{ env.GHCR_NAMESPACE }}/dendrite-monolith:stable + git.sigb.us/${{ env.GHCR_NAMESPACE }}/dendrite-monolith:${{ env.RELEASE_VERSION }}