Skip to content

Commit fb590f0

Browse files
committed
chore: use Nix for CI builds and add packages.default to flake
Replace actions/setup-go and golangci-lint-action with Nix installer and cache actions, run all commands via nix develop. Add buildGoModule package output and build-release job for multi-platform binary uploads.
1 parent 0c03ece commit fb590f0

2 files changed

Lines changed: 60 additions & 16 deletions

File tree

.github/workflows/ci.yml

Lines changed: 40 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -18,27 +18,22 @@ jobs:
1818
- name: Checkout
1919
uses: actions/checkout@v6
2020

21-
- name: Set up Go
22-
uses: actions/setup-go@v6
23-
with:
24-
go-version-file: go.mod
25-
cache: true
21+
- name: Install Nix
22+
uses: DeterminateSystems/nix-installer-action@v22
2623

27-
- name: Download dependencies
28-
run: go mod download
24+
- name: Setup Nix Cache
25+
uses: DeterminateSystems/magic-nix-cache-action@v13
2926

3027
- name: Run Tests
31-
run: go tool ginkgo run -coverprofile=coverage.out -covermode=atomic ./...
28+
run: nix develop --command go tool ginkgo run -coverprofile=coverage.out -covermode=atomic ./...
3229

3330
- name: Run octocov
3431
uses: k1LoW/octocov-action@v1
3532
with:
3633
github-token: ${{ secrets.GITHUB_TOKEN }}
3734

3835
- name: Run golangci-lint
39-
uses: golangci/golangci-lint-action@v9
40-
with:
41-
version: latest
36+
run: nix develop --command golangci-lint run
4237

4338
release:
4439
needs: build
@@ -58,3 +53,37 @@ jobs:
5853
manifest-file: .github/config/release-please-manifest.json
5954
config-file: .github/config/release-please-config.json
6055
target-branch: main
56+
57+
build-release:
58+
needs: release
59+
if: ${{ needs.release.outputs.release_created }}
60+
strategy:
61+
matrix:
62+
include:
63+
- os: ubuntu-latest
64+
nix_system: x86_64-linux
65+
- os: macos-14
66+
nix_system: aarch64-darwin
67+
runs-on: ${{ matrix.os }}
68+
steps:
69+
- name: Checkout
70+
uses: actions/checkout@v6
71+
72+
- name: Install Nix
73+
uses: DeterminateSystems/nix-installer-action@v22
74+
75+
- name: Setup Nix Cache
76+
uses: DeterminateSystems/magic-nix-cache-action@v13
77+
78+
- name: Build with Nix
79+
run: nix build . --system ${{ matrix.nix_system }}
80+
81+
- name: Prepare Release Assets
82+
run: |
83+
mkdir -p release && install -m 0755 result/bin/sqlc-gen-queries release/sqlc-gen-queries-${{ matrix.nix_system }}
84+
85+
- name: Upload Release Assets
86+
uses: softprops/action-gh-release@v2
87+
with:
88+
tag_name: ${{ needs.release.outputs.tag_name }}
89+
files: release/sqlc-gen-queries-${{ matrix.nix_system }}

flake.nix

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
description = "sqlc-gen-queries development environment";
2+
description = "sqlc-gen-queries - SQLC Queries Generator";
33

44
inputs = {
55
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
@@ -11,14 +11,29 @@
1111
flake-utils.lib.eachDefaultSystem (
1212
system:
1313
let
14-
pkgs = import nixpkgs { inherit system; };
14+
pkgs = nixpkgs.legacyPackages.${system};
15+
version = (pkgs.lib.importJSON ./.github/config/release-please-manifest.json).".";
1516
in
1617
{
18+
packages.default = pkgs.buildGoModule {
19+
pname = "sqlc-gen-queries";
20+
inherit version;
21+
src = pkgs.lib.cleanSource ./.;
22+
subPackages = [ "cmd/sqlc-gen-queries" ];
23+
vendorHash = pkgs.lib.fakeHash; # replace with real hash after running `nix build`
24+
meta = with pkgs.lib; {
25+
description = "SQLC Queries Generator";
26+
license = licenses.mit;
27+
mainProgram = "sqlc-gen-queries";
28+
};
29+
};
30+
1731
devShells.default = pkgs.mkShell {
1832
name = "sqlc-gen-queries";
19-
packages = [
20-
pkgs.go_1_25
21-
pkgs.gopls
33+
packages = with pkgs; [
34+
go
35+
golangci-lint
36+
gopls
2237
];
2338
};
2439
}

0 commit comments

Comments
 (0)