name: Release on: push: tags: - "*" permissions: contents: write packages: write jobs: check: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: ./.github/actions/init with: token: "${{ secrets.CACHIX_AUTH_TOKEN }}" - run: nix flake check release: runs-on: ubuntu-latest needs: check steps: - uses: actions/checkout@v4 - uses: ./.github/actions/init with: token: "${{ secrets.CACHIX_AUTH_TOKEN }}" - run: > nix build .#trevstack-linux-amd64 .#trevstack-linux-arm64 .#trevstack-linux-arm .#trevstack-windows-amd64 .#trevstack-darwin-amd64 .#trevstack-darwin-arm64 - uses: softprops/action-gh-release@v2 with: generate_release_notes: true files: |- result*/bin/* package: runs-on: ubuntu-latest needs: release steps: - uses: actions/checkout@v4 - uses: ./.github/actions/init with: token: "${{ secrets.CACHIX_AUTH_TOKEN }}" - name: Set env run: | TAG=${{ github.ref_name }} VERSION=${TAG#v} REGISTRY="ghcr.io" echo "VERSION=${VERSION}" >> $GITHUB_ENV echo "REGISTRY=${REGISTRY}" >> $GITHUB_ENV - uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - name: Build & load images run: | nix build .#trevstack-linux-amd64-image && ./result | docker load nix build .#trevstack-linux-arm64-image && ./result | docker load nix build .#trevstack-linux-arm-image && ./result | docker load - name: Push images run: | docker image tag trevstack:$VERSION-amd64 $REGISTRY/$GITHUB_REPOSITORY:$VERSION-amd64 docker push $REGISTRY/$GITHUB_REPOSITORY:$VERSION-amd64 docker image tag trevstack:$VERSION-arm64 $REGISTRY/$GITHUB_REPOSITORY:$VERSION-arm64 docker push $REGISTRY/$GITHUB_REPOSITORY:$VERSION-arm64 docker image tag trevstack:$VERSION-arm $REGISTRY/$GITHUB_REPOSITORY:$VERSION-arm docker push $REGISTRY/$GITHUB_REPOSITORY:$VERSION-arm - name: Push manifest run: | docker manifest create $REGISTRY/$GITHUB_REPOSITORY:$VERSION \ $REGISTRY/$GITHUB_REPOSITORY:$VERSION-amd64 \ $REGISTRY/$GITHUB_REPOSITORY:$VERSION-arm64 \ $REGISTRY/$GITHUB_REPOSITORY:$VERSION-arm docker manifest annotate $REGISTRY/$GITHUB_REPOSITORY:$VERSION $REGISTRY/$GITHUB_REPOSITORY:$VERSION-amd64 --arch amd64 docker manifest annotate $REGISTRY/$GITHUB_REPOSITORY:$VERSION $REGISTRY/$GITHUB_REPOSITORY:$VERSION-arm64 --arch arm64 docker manifest annotate $REGISTRY/$GITHUB_REPOSITORY:$VERSION $REGISTRY/$GITHUB_REPOSITORY:$VERSION-arm --arch arm docker manifest push $REGISTRY/$GITHUB_REPOSITORY:$VERSION docker manifest create $REGISTRY/$GITHUB_REPOSITORY:latest \ $REGISTRY/$GITHUB_REPOSITORY:$VERSION-amd64 \ $REGISTRY/$GITHUB_REPOSITORY:$VERSION-arm64 \ $REGISTRY/$GITHUB_REPOSITORY:$VERSION-arm docker manifest annotate $REGISTRY/$GITHUB_REPOSITORY:latest $REGISTRY/$GITHUB_REPOSITORY:$VERSION-amd64 --arch amd64 docker manifest annotate $REGISTRY/$GITHUB_REPOSITORY:latest $REGISTRY/$GITHUB_REPOSITORY:$VERSION-arm64 --arch arm64 docker manifest annotate $REGISTRY/$GITHUB_REPOSITORY:latest $REGISTRY/$GITHUB_REPOSITORY:$VERSION-arm --arch arm docker manifest push $REGISTRY/$GITHUB_REPOSITORY:latest