Skip to content

Nix CI

Nix CI #513

Workflow file for this run

jobs:
build:
name: Build and test the action
runs-on: ubuntu-latest
permissions:
contents: write
actions: write
steps:
- uses: actions/checkout@v3
# http://man7.org/linux/man-pages/man1/date.1.html
- name: Get Date
id: get-date
run: |
echo "date=$(/bin/date -u "+date-%Y-%m-%d-time-%H-%M-%S")" >> $GITHUB_OUTPUT
shell: bash
- uses: actions/cache@v3
with:
path: |
~/.npm
key: ${{ runner.os }}-npm-${{ hashFiles('**/package-lock.json', 'package.json') }}-${{ steps.get-date.outputs.date }}
restore-keys: |
${{ runner.os }}-npm-${{ hashFiles('**/package-lock.json', 'package.json') }}-
- name: Install packages & Build the action
run: npm ci
- name: Commit & Push changes
if: github.event_name == 'push'
run: |
git config --global user.name github-actions
git config --global user.email [email protected]
git pull --rebase --autostash
git add dist
git commit -m "action: build the action" || echo ""
git push
test:
name: Nix CI
runs-on: ${{ matrix.os }}
needs: build
steps:
- name: Checkout this repo
uses: actions/checkout@v3
- uses: nixbuild/nix-quick-install-action@v25
with:
nix_conf: |
substituters = https://cache.nixos.org/ https://nix-community.cachix.org
trusted-public-keys = cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY= nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
keep-outputs = true
# -------- THIS ACTION --------
- name: Restore and cache Nix store
if: ${{ matrix.do-cache }}
uses: ./.
with:
gc-enabled-linux: true
gc-max-store-size-linux: 8000000000
gc-enabled-macos: true
gc-max-store-size-macos: 8000000000
purge-enabled: true
purge-max-age: 86400
purge-by-created-time: true
purge-by-accessed-time: true
# output debug info
debug: true
# save a new cache every time ci file changes
key: cache-${{ matrix.os }}-${{ hashFiles('.github/workflows/ci.yaml') }}
restore-keys: |
cache-${{ matrix.os }}-${{ hashFiles('.github/workflows/ci.yaml') }}-
cache-${{ matrix.os }}-
# -------- THIS ACTION --------
# Uncomment to debug this job
# - name: Setup tmate session
# uses: mxschmitt/action-tmate@v3
- name: Show profile
run: nix profile list
- name: Lock nixpkgs
run: |
nix registry add nixpkgs github:NixOS/nixpkgs/5daaa32204e9c46b05cd709218b7ba733d07e80c
nix profile install $(nix flake archive nixpkgs --json | jq -r '.path')
- name: Show profile
run: nix profile list
- name: Run commands
run: |
nix run nixpkgs#hello
nix profile install nixpkgs#hello
nix profile install nixpkgs#cachix
nix profile install nixpkgs#nixpkgs-fmt
nix profile install nixpkgs#alejandra
nix profile install nixpkgs#nixd
nix profile install nixpkgs#ghc
nix profile install nixpkgs#haskell-language-server
nix profile install nixpkgs#purescript
nix profile install nixpkgs#nodejs_18
- name: Show profile
run: nix profile list
strategy:
matrix:
os:
- macos-11
- macos-12
- ubuntu-20.04
- ubuntu-22.04
do-cache:
- true
- false
name: Nix CI
"on":
push: {}
pull_request: {}
schedule:
- cron: 0 0 * * *
workflow_dispatch: {}