Watch
0
0
Fork
You've already forked hyperhive
0
hyperhive/.forgejo/workflows/vm-nightly.yml

49 lines
1.7 KiB
YAML

name: vm-nightly
# Builds the `vmTests` flake output: tests that boot NixOS VMs and need KVM.
# They are not `checks`, so the per-PR `nix flake check` job never runs them.
# Nightly plus manual dispatch; a failing test fails the run, which the forge
# shows as a failed scheduled run.
#
# Run one by hand from the forge UI (Actions, vm-nightly, "Run workflow",
# `test` input) or locally with `nix build .#vmTests.x86_64-linux.<name>`.
#
# ⚠️ The hour is deliberate: at the default job capacity of 1
# (`services.hyperhive.deploy.ci-runner.concurrency`) this job holds the
# runner for its whole run and everything else queues behind it. It sits
# between coverage (02:00) and flake-update (03:00).
#
# Separate from ci.yml because a `workflow_dispatch` trigger there fires every
# job in that file, and this must not run per pull request.
on:
workflow_dispatch:
inputs:
test:
description: "vmTests attribute to build (empty builds all)"
required: false
default: ""
schedule:
- cron: "30 2 * * *"
jobs:
vm-tests:
name: nix build vmTests
if: vars.PUBLIC_FORGE != 'true'
runs-on: ${{ vars.PUBLIC_FORGE == 'true' && 'nixos' || 'hive-ci' }}
steps:
- uses: actions/checkout@v3
- name: build
env:
TEST: ${{ inputs.test }}
run: |
set -eu
system=x86_64-linux
tests="$TEST"
if [ -z "$tests" ]; then
tests="$(nix eval --raw ".#vmTests.$system" --apply 'ts: builtins.concatStringsSep " " (builtins.attrNames ts)')"
fi
set --
for t in $tests; do
set -- "$@" ".#vmTests.$system.$t"
done
nix build --no-link --keep-going --print-build-logs "$@"