diff --git a/.gitea/workflows/build.yml b/.gitea/workflows/build.yml new file mode 100644 index 0000000..9049c7a --- /dev/null +++ b/.gitea/workflows/build.yml @@ -0,0 +1,27 @@ +name: build +on: + pull_request: +jobs: + build: + container: + image: node:24-bookworm + env: + USER: node + HOME: /home/node + NIX_CONFIG: experimental-features = nix-command flakes + volumes: + - /var/lib/pbri/docker/nix_runner_nix:/nix + - /var/lib/pbri/docker/nix_runner_etc:/etc/nix + - /var/lib/pbri/docker/nix_runner_home_node:/home/node + options: --user 1000:1000 + steps: + - name: Prep nix env + run: | + if [ ! -f ~/.nix-profile/etc/profile.d/nix.sh ]; then + curl -L https://nixos.org/nix/install | bash -s -- --no-daemon + fi + . ~/.nix-profile/etc/profile.d/nix.sh + env >> "$GITHUB_ENV" + - name: Checkout repo + uses: actions/checkout@v4 + - run: nix build --log-format raw --print-build-logs .#yore diff --git a/.gitea/workflows/deliver.yml b/.gitea/workflows/deliver.yml new file mode 100644 index 0000000..fd89780 --- /dev/null +++ b/.gitea/workflows/deliver.yml @@ -0,0 +1,40 @@ +name: deliver +on: + push: + tags: + - 'v*' +jobs: + deliver: + container: + image: node:24-bookworm + env: + USER: node + HOME: /home/node + NIX_CONFIG: experimental-features = nix-command flakes + volumes: + - /var/lib/pbri/docker/nix_runner_nix:/nix + - /var/lib/pbri/docker/nix_runner_etc:/etc/nix + - /var/lib/pbri/docker/nix_runner_home_node:/home/node + options: --user 1000:1000 + steps: + - name: Prep nix env + run: | + if [ ! -f ~/.nix-profile/etc/profile.d/nix.sh ]; then + curl -L https://nixos.org/nix/install | bash -s -- --no-daemon + fi + . ~/.nix-profile/etc/profile.d/nix.sh + env >> "$GITHUB_ENV" + - name: Checkout repo + uses: actions/checkout@v4 + - name: Get image meta + run: nix build .#yore-meta -o /tmp/yore-meta + - name: Version check + run: | + VERSION=$(cat /tmp/yore-meta/version) + [ "$GITHUB_REF_NAME" = v"$VERSION" ] + - run: nix build --log-format raw --print-build-logs .#image -o image.tar.gz + - run: gunzip -c image.tar.gz > image.tar + - run: nix run .#crane -- auth login git.pbrinkmeier.de -u paul -p "$PASSWORD" + env: + PASSWORD: "${{ secrets.REGISTRY_PASSWORD }}" + - run: nix run .#crane -- push image.tar $(cat /tmp/yore-meta/image-tag) diff --git a/README.md b/README.md index 449c64f..553f38f 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ You can also use it to run a database for development by choosing a `$COMMAND` t ``` BASE_DIR=./pgdata scripts/with-db psql "dbname=yore-test port=5433 user=yore-test" # cabal repl with env vars set -BASE_DIR=./pgdata scripts/with-db scripts/dev +BASE_DIR=./pgdata scripts/with-db cabal run ``` By setting `$BASE_DIR` you can persist the database for later runs. diff --git a/flake.lock b/flake.lock index 064c9f9..34c68a9 100644 --- a/flake.lock +++ b/flake.lock @@ -64,11 +64,11 @@ ] }, "locked": { - "lastModified": 1756064767, - "narHash": "sha256-SaJK9VYc/oF5aBSMSW+We8TggER4+uTAHvc2ztnLpYo=", + "lastModified": 1759790870, + "narHash": "sha256-rEsaO38v2wvAThPzgbYPgnv29mu6GxTYLjgci3GYaO4=", "ref": "main", - "rev": "af16429d827816cf9bec69026e13f50acc3d2691", - "revCount": 65, + "rev": "4db509c1b52ee7b5012abfef5e11e62beab27a16", + "revCount": 66, "type": "git", "url": "https://git.pbrinkmeier.de/paul/opium" }, diff --git a/flake.nix b/flake.nix index f753d9e..7d585b3 100644 --- a/flake.nix +++ b/flake.nix @@ -26,11 +26,18 @@ }; # For building the package, we use only the files not ignored by Git as inputs. - # Also, flake.nix and flake.lock are not included to avoid rebuilds when + # Also, flake.nix, flake.lock and .gitea are not included to avoid rebuilds when # working on them. src = pkgs.lib.cleanSourceWith { - src = gitignore.lib.gitignoreSource ./.; - filter = path: type: builtins.elem (builtins.baseNameOf path) [ "flake.nix" "flake.lock" ]; + src = ./.; + filter = gitignore.lib.gitignoreFilterWith { + basePath = ./.; + extraRules = '' + flake.nix + flake.lock + .gitea + ''; + }; }; yore = pkgs.lib.pipe @@ -53,15 +60,21 @@ ]; in { packages = rec { - docker = + default = yore; + inherit yore; + yore-meta = pkgs.runCommand "yore-meta" {} '' + mkdir -p $out + echo -n ${yore.version} > $out/version + echo -n git.pbrinkmeier.de/paul/yore:${yore.version} > $out/image-tag + ''; + + image = pkgs.dockerTools.buildImage { name = "git.pbrinkmeier.de/paul/yore"; tag = yore.version; config.Cmd = [ "${yore}/bin/yore" ]; }; - default = yore; - opium_ = opium.packages.${system}.opium; }; @@ -82,5 +95,11 @@ overrides = addOpium; }).env; }; + apps = { + crane = { + type = "app"; + program = "${pkgs.crane}/bin/crane"; + }; + }; }); } diff --git a/yore.cabal b/yore.cabal index 3e60da3..3071ffb 100644 --- a/yore.cabal +++ b/yore.cabal @@ -1,7 +1,7 @@ cabal-version: 3.4 name: yore -version: 0 +version: 0.0.1 author: Paul Brinkmeier maintainer: hallo@pbrinkmeier.de copyright: 2023 Paul Brinkmeier