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.
98 lines
2.7 KiB
YAML
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 }}
|