name: 'Push Release Docker Images' on: push: tags: - 'v4.*.*' workflow_dispatch: jobs: push: strategy: matrix: arch: [amd64, arm64] name: push release runs-on: ubuntu-24.04${{ matrix.arch == 'arm64' && '-arm' || '' }} steps: - uses: actions/checkout@v4 - name: Get version id: version run: | echo "zipline_version=$(jq .version package.json -r)" >> $GITHUB_OUTPUT - name: Get commit sha id: sha run: | echo "short_sha=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT - uses: docker/setup-buildx-action@v3 - uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - uses: docker/build-push-action@v6 with: push: true platforms: linux/${{ matrix.arch }} cache-from: type=gha cache-to: type=gha,mode=max provenance: false build-args: | ZIPLINE_GIT_SHA=${{ steps.sha.outputs.short_sha }} tags: | ghcr.io/diced/zipline:${{ steps.version.outputs.zipline_version }}-${{ matrix.arch }} ghcr.io/diced/zipline:${{ steps.version.outputs.zipline_version }}-${{ steps.sha.outputs.short_sha }}-${{ matrix.arch }} ${{ secrets.DOCKERHUB_USERNAME }}/zipline:${{ steps.version.outputs.zipline_version }}-${{ matrix.arch }} ${{ secrets.DOCKERHUB_USERNAME }}/zipline:${{ steps.version.outputs.zipline_version }}-${{ steps.sha.outputs.short_sha }}-${{ matrix.arch }} amend-builds: runs-on: ubuntu-24.04 needs: push steps: - uses: actions/checkout@v4 - name: Get version id: version run: | echo "zipline_version=$(jq .version package.json -r)" >> $GITHUB_OUTPUT - name: Get commit sha id: sha run: | echo "short_sha=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT - uses: docker/setup-buildx-action@v3 - uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - uses: docker/login-action@v2 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: pull images run: | docker pull --platform=linux/amd64 ghcr.io/diced/zipline:${{ steps.version.outputs.zipline_version }}-amd64 docker pull --platform=linux/arm64 ghcr.io/diced/zipline:${{ steps.version.outputs.zipline_version }}-arm64 docker pull --platform=linux/amd64 ${{ secrets.DOCKERHUB_USERNAME }}/zipline:${{ steps.version.outputs.zipline_version }}-amd64 docker pull --platform=linux/arm64 ${{ secrets.DOCKERHUB_USERNAME }}/zipline:${{ steps.version.outputs.zipline_version }}-arm64 - name: create manifests run: | docker manifest create ghcr.io/diced/zipline:${{ steps.version.outputs.zipline_version }} \ --amend ghcr.io/diced/zipline:${{ steps.version.outputs.zipline_version }}-amd64 \ --amend ghcr.io/diced/zipline:${{ steps.version.outputs.zipline_version }}-arm64 && \ docker manifest create ghcr.io/diced/zipline:latest \ --amend ghcr.io/diced/zipline:${{ steps.version.outputs.zipline_version }}-amd64 \ --amend ghcr.io/diced/zipline:${{ steps.version.outputs.zipline_version }}-arm64 && \ docker manifest create ${{ secrets.DOCKERHUB_USERNAME }}/zipline:${{ steps.version.outputs.zipline_version }} \ --amend ${{ secrets.DOCKERHUB_USERNAME }}/zipline:${{ steps.version.outputs.zipline_version }}-amd64 \ --amend ${{ secrets.DOCKERHUB_USERNAME }}/zipline:${{ steps.version.outputs.zipline_version }}-arm64 && \ docker manifest create ${{ secrets.DOCKERHUB_USERNAME }}/zipline:latest \ --amend ${{ secrets.DOCKERHUB_USERNAME }}/zipline:${{ steps.version.outputs.zipline_version }}-amd64 \ --amend ${{ secrets.DOCKERHUB_USERNAME }}/zipline:${{ steps.version.outputs.zipline_version }}-arm64 - name: push manifests run: | docker manifest push ghcr.io/diced/zipline:${{ steps.version.outputs.zipline_version }} docker manifest push ghcr.io/diced/zipline:latest docker manifest push ${{ secrets.DOCKERHUB_USERNAME }}/zipline:${{ steps.version.outputs.zipline_version }} docker manifest push ${{ secrets.DOCKERHUB_USERNAME }}/zipline:latest