name: release-images on: push: tags: - "v*" workflow_dispatch: permissions: contents: read packages: write id-token: write jobs: build-core: name: Build and publish core image runs-on: ubuntu-latest steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - uses: docker/setup-buildx-action@bb05f3f5519dd87d3ba754cc423b652a5edd6d2c # v4.2.0 - uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f # v4.6.0 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - name: Compute image tags id: tags run: | TAG="${{ github.ref_name }}" echo "tags=ghcr.io/guillaumemeyer/watermarks-remover:${TAG},ghcr.io/guillaumemeyer/watermarks-remover:latest" >> "$GITHUB_OUTPUT" echo "version=${TAG#v}" >> "$GITHUB_OUTPUT" - uses: docker/build-push-action@53b7df96c91f9c12dcc8a07bcb9ccacbed38856a # v7.3.0 with: context: service file: service/Dockerfile push: true tags: ${{ steps.tags.outputs.tags }} build-args: | VERSION=${{ steps.tags.outputs.version }} cache-from: type=gha cache-to: type=gha,mode=max build-harnesses: name: Build and publish harness images (markllm, markdiffusion) runs-on: ubuntu-latest strategy: matrix: include: - dockerfile: service/Dockerfile.markllm tag: markllm - dockerfile: service/Dockerfile.markdiffusion tag: markdiffusion steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - uses: docker/setup-buildx-action@bb05f3f5519dd87d3ba754cc423b652a5edd6d2c # v4.2.0 - uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f # v4.6.0 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - name: Compute image tags id: tags run: | TAG="${{ github.ref_name }}" echo "tags=ghcr.io/guillaumemeyer/watermarks-remover:${{ matrix.tag }}-${TAG},ghcr.io/guillaumemeyer/watermarks-remover:${{ matrix.tag }}-latest" >> "$GITHUB_OUTPUT" - uses: docker/build-push-action@53b7df96c91f9c12dcc8a07bcb9ccacbed38856a # v7.3.0 with: context: service file: ${{ matrix.dockerfile }} push: true tags: ${{ steps.tags.outputs.tags }} cache-from: type=gha cache-to: type=gha,mode=max