add build cache action
Some checks failed
Nix CI / Merge similar caches ([ubuntu-latest]) (pull_request) Has been cancelled
Nix CI / Check a `common` cache is restored correctly ([ubuntu-latest]) (pull_request) Has been cancelled
Check Nix flake / Build nix outputs (ubuntu-latest) (pull_request) Has been cancelled
Check Nix flake / Perform Nix flake checks (ubuntu-latest) (pull_request) Has been cancelled
Check Nix formatting / Perform Nix format checks (pull_request) Has been cancelled
Check flake.lock / Check health of `flake.lock` (pull_request) Successful in 18s

Signed-off-by: ahuston-0 <aliceghuston@gmail.com>
This commit is contained in:
2025-03-10 00:41:36 -04:00
parent 97fad34d4d
commit d53981c94b
3 changed files with 165 additions and 54 deletions

View File

@ -5,68 +5,25 @@ on:
schedule:
- cron: "00 12 * * *"
jobs:
createPullRequest:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
# - name: Login to Docker Hub
# uses: docker/login-action@v3
# with:
# username: ${{ secrets.DOCKERHUB_USERNAME }}
# password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Install Nix
uses: cachix/install-nix-action@v24
with:
extra_nix_config: |
experimental-features = nix-command flakes auto-allocate-uids configurable-impure-env
- name: Calculate pre-drv
run: nix run git+https://nayeonie.com/ahuston-0/flake-update-diff -- --build .
# - name: Pull latest docker images
# run: nix ./utils/fetch-docker.sh
- name: Update flake.lock (part 1)
run: nix flake update
- name: Calculate post-drv
run: nix run git+https://nayeonie.com/ahuston-0/flake-update-diff -- --build .
# - name: Calculate diff
# run: nix ./utils/diff-evals.sh
# - name: Read diff into environment
# run: |
# delimiter="$(openssl rand -hex 8)"
# {
# echo "POSTDIFF<<${delimiter}"
# cat post-diff
# echo "${delimiter}"
# } >> $GITHUB_ENV
# - name: Restore flake.lock for next step
# run: git restore flake.lock
# - name: Update flake.lock
# id: update
# uses: DeterminateSystems/update-flake-lock@main
# with:
# token: ${{ secrets.GH_TOKEN_FOR_UPDATES }}
# pr-body: |
# Automated changes by the [update-flake-lock](https://github.com/DeterminateSystems/update-flake-lock) GitHub Action.
# ```
# {{ env.GIT_COMMIT_MESSAGE }}
# ```
# ```
# {{ env.POSTDIFF }}
# ```
# pr-labels: | # Labels to be set on the PR
# dependencies
# automated
update_lockfile:
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main' # ensure workflow_dispatch only runs on main
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install nix
uses: https://github.com/DeterminateSystems/nix-installer-action@main
- name: Restore Nix store
id: restore
uses: nix-community/cache-nix-action@v6
with:
# save a new cache every time `ci.yaml` changes
primary-key: similar-cache-${{ matrix.os }}-individual-${{ hashFiles('flake.lock', '*.nix') }}
# otherwise, restore a common cache if and only if it matches the current `ci.yaml`
restore-prefixes-first-match: similar-cache-${{ matrix.os }}-common-
- name: Setup Attic cache
uses: ryanccn/attic-action@v0
with:
@ -74,8 +31,10 @@ jobs:
cache: ${{ secrets.ATTIC_CACHE }}
token: ${{ secrets.ATTIC_TOKEN }}
skip-push: "true"
- name: Get pre-snapshot of evaluations
run: nix ./utils/eval-to-drv.sh pre
- name: Update flake.lock
id: update
run: |
@ -90,10 +49,13 @@ jobs:
echo "EOF" >> $GITHUB_ENV
rm update.log
- name: Get post-snapshot of evaluations
run: nix ./utils/eval-to-drv.sh post
- name: Calculate diff
run: nix ./utils/diff-evals.sh
- name: Read diff into environment
run: |
delimiter="$(openssl rand -hex 8)"
@ -102,6 +64,7 @@ jobs:
cat post-diff
echo "${delimiter}"
} >> $GITHUB_ENV
- name: Write PR body template
uses: https://github.com/DamianReeves/write-file-action@v1.3
with:
@ -128,6 +91,7 @@ jobs:
with:
files: "pr_body.template"
output-filename: "pr_body.md"
- name: Save PR body
id: pr_body
uses: juliangruber/read-file-action@v1
@ -161,9 +125,25 @@ jobs:
pr-labels: | # Labels to be set on the PR
dependencies
automated
- name: Push to Attic
run: nix ./utils/attic-push.bash
continue-on-error: true
- name: Save Nix store
uses: nix-community/cache-nix-action@v6
with:
# save a new cache every time `ci.yaml` changes
primary-key: similar-cache-${{ matrix.os }}-individual-${{ hashFiles('flake.lock', '*.nix') }}
# do purge caches
purge: true
# purge all versions of the individual cache
purge-prefixes: similar-cache-${{ matrix.os }}-individual-
# created more than 0 seconds ago relative to the start of the `Post Restore` phase
purge-created: 0
# except the version with the `primary-key`, if it exists
purge-primary-key: never
- name: Print PR number
run: |
echo "Pull request number is ${{ steps.create-pull-request.outputs.pull-request-number }}."