brewlog/.github/workflows/deploy.yml
Jon Seager 251e4aebb5
fix(ci): match docker tag to Cargo.toml version in deploy workflow
The container image is tagged with the package version from flake.nix,
not the git short hash. Read the version from Cargo.toml so the
docker tag command references the correct source image.
2026-02-06 20:16:31 +00:00

98 lines
2.7 KiB
YAML

name: Deploy
on:
push:
branches: ["main"]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
lint:
name: Lint
runs-on: ubuntu-latest
steps:
- name: Check out code into the Go module directory
uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Install nix
uses: DeterminateSystems/nix-installer-action@main
- name: Setup Nix cache
uses: nix-community/cache-nix-action@main
with:
primary-key: nix-${{ runner.os }}-${{ hashFiles('**/*.nix', '**/flake.lock') }}
restore-prefixes-first-match: nix-${{ runner.os }}-
- name: Check formatting
run: nix develop -c cargo fmt --check
- name: Clippy
run: nix develop -c cargo clippy
test:
name: Test
runs-on: ubuntu-latest
steps:
- name: Check out code into the Go module directory
uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Install nix
uses: DeterminateSystems/nix-installer-action@main
- name: Setup Nix cache
uses: nix-community/cache-nix-action@main
with:
primary-key: nix-${{ runner.os }}-${{ hashFiles('**/*.nix', '**/flake.lock') }}
restore-prefixes-first-match: nix-${{ runner.os }}-
- name: Run tests
run: |
nix develop --command cargo test -- --show-output
deploy:
name: Deploy
runs-on: ubuntu-latest
needs:
- lint
- test
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Install nix
uses: DeterminateSystems/nix-installer-action@v21
- name: Setup Nix cache
uses: nix-community/cache-nix-action@main
with:
primary-key: nix-${{ runner.os }}-${{ hashFiles('**/*.nix', '**/flake.lock') }}
restore-prefixes-first-match: nix-${{ runner.os }}-
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build container
run: |
nix build -L .#brewlog-container
- name: Upload container to ghcr.io
run: |
docker load < result
version=$(cat Cargo.toml | nix run nixpkgs#tomlq -- -r .package.version)
docker tag "brewlog:${version}" "ghcr.io/jnsgruk/brewlog:$(git rev-parse --short HEAD)"
docker push "ghcr.io/jnsgruk/brewlog:$(git rev-parse --short HEAD)"
- name: Deploy site
run: |
nix run nixpkgs#flyctl -- deploy -i "ghcr.io/jnsgruk/brewlog:$(git rev-parse --short HEAD)"
env:
FLY_ACCESS_TOKEN: ${{ secrets.FLY_API_TOKEN }}