trevstack/.github/workflows/release.yaml
trev 8e7781a346
Some checks failed
Check / check (push) Failing after 0s
style: use better env
2025-05-17 02:29:04 -04:00

139 lines
4.6 KiB
YAML

name: Release
on:
push:
tags:
- "*"
permissions:
contents: write
packages: write
jobs:
check:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Nix
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixos-unstable
- name: Use Cachix
uses: cachix/cachix-action@v16
with:
name: trevstack
authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}"
- name: Check
run: nix flake check
# release:
# runs-on: ubuntu-latest
# needs: check
# steps:
# - name: Checkout
# uses: actions/checkout@v4
# - name: Install Nix
# uses: cachix/install-nix-action@v31
# with:
# nix_path: nixpkgs=channel:nixos-unstable
# - name: Use Cachix
# uses: cachix/cachix-action@v16
# with:
# name: trevstack
# authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}"
# - name: Build
# run: >
# nix build
# .#trevstack-linux-amd64
# .#trevstack-linux-arm64
# .#trevstack-linux-arm
# .#trevstack-windows-amd64
# .#trevstack-darwin-amd64
# .#trevstack-darwin-arm64
# - name: Release
# uses: softprops/action-gh-release@v2
# with:
# generate_release_notes: true
# files: |-
# result*/bin/*
# https://docs.docker.com/build/ci/github-actions/manage-tags-labels/
package:
runs-on: ubuntu-latest
needs: check # Wait for binary cache to propagate
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Nix
uses: cachix/install-nix-action@v31
with:
nix_path: nixpkgs=channel:nixos-unstable
- name: Use Cachix
uses: cachix/cachix-action@v16
with:
name: trevstack
authToken: "${{ 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
- name: Login to GitHub Container Registry
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