nix-bitcoin/.cirrus.yml
Erik Arvstedt af115d746b
internal scripts: use pinned, cached pkgs
Instead of setting up the script PATH via nix-shell, use
`nix shell` with inputs from the nix-bitcoin flake.
Advantages:
- Uses the nixpkgs version from the nix-bitcoin flake instead of
  `<nixpkgs>` from the user env (NIX_PATH), so the script runtime
  env is reproducible.
- The pkg derivations for the runtime env are cached, which greatly
  increases script startup speed.

This commit was generated by running the following script inside the
repo root dir:

def transform(path, src)
  if src =~ /#! *nix-shell +-i +bash +-p +(.*)/
    pkgs = $1
    if src =~ /^.*?(set -e.*?pipefail)\n/
      set_statement = $1
      src.sub!($&, '')
    end
    src.sub!(/\A.*?#! *nix-shell.*?\n/m, '')

    parents = ([ '..' ] * (path.split('/').count - 1)).join('/')

    [
      '#!/usr/bin/env bash',
      *set_statement,
      %(. "${BASH_SOURCE[0]%/*}/#{parents}/helper/run-in-nix-env" "#{pkgs}" "$@"),
      nil,
      src
    ].join("\n")
  end
end

Dir['**/*.sh'].each do |f|
  src = File.read(f)
  if new_src = transform(f, src)
    puts "Changed file #{f}"
    File.write(f, new_src)
  end
end
2022-08-28 23:49:12 +02:00

43 lines
1.3 KiB
YAML

task:
environment:
CACHIX_SIGNING_KEY: ENCRYPTED[!cec502ed813cbcd0237697d2031f750186ff20eed5815b1ad950ad2f2d701702ae6ba2f0cb4cb1985687a696c8ee492c!]
# Save some traffic by excluding the full git history
CIRRUS_CLONE_DEPTH: 1
# Use the maximum timeout. Needed when rebuilding packages on a channel update.
timeout_in: 120m
container:
# Defined in https://github.com/nix-community/docker-nixpkgs
image: nixpkgs/nix-flakes:nixos-22.05
matrix:
- name: modules_test
container:
# Besides virtualization, this also enables privileged containers which are required for
# sandboxed builds
kvm: true
# Needed for package builds
memory: 8G
# A maximum of 16 CPUs is shared among all concurrent tasks.
# https://cirrus-ci.org/faq/#are-there-any-limits
cpu: 4
environment:
matrix:
- scenario: default
- scenario: netns
- scenario: netnsRegtest
# This script is run as root
build_script:
- echo "sandbox = true" >> /etc/nix/nix.conf
- nix shell --inputs-from . nixpkgs#{bash,coreutils,gawk,cachix} -c ./test/ci/build.sh
- name: flake
build_script:
- nix flake check
- ./test/nixos-search/ci-test.sh
- name: shellcheck
build_script:
- ./test/shellcheck.sh