From b4b8f5988fe26b45cfee2cf6ce12b73fda5e10fe Mon Sep 17 00:00:00 2001 From: Kat Inskip Date: Sat, 13 Jul 2024 16:58:48 -0700 Subject: [PATCH] fix: ??? --- ci/nodes.nix | 2 +- packages/nf-build-system/build-system.sh | 158 ++++++++++++----------- 2 files changed, 81 insertions(+), 79 deletions(-) diff --git a/ci/nodes.nix b/ci/nodes.nix index 01d3bcf3..35e82b82 100644 --- a/ci/nodes.nix +++ b/ci/nodes.nix @@ -36,7 +36,7 @@ in { step.${name} = { name = "build system closure for ${name}"; order = 500; - run = "nix run .#nf-build-system -- nixosConfigurations.${name}.config.system.build.topLevel ${name} NixOS"; + run = "nix run .#nf-build-system -- nixosConfigurations.${name}.config.system.build.toplevel ${name} NixOS"; env = { CACHIX_SIGNING_KEY = "\${{ secrets.CACHIX_SIGNING_KEY }}"; DISCORD_WEBHOOK_LINK = "\${{ secrets.DISCORD_WEBHOOK_LINK }}"; diff --git a/packages/nf-build-system/build-system.sh b/packages/nf-build-system/build-system.sh index bfbcdbec..a47d9e29 100644 --- a/packages/nf-build-system/build-system.sh +++ b/packages/nf-build-system/build-system.sh @@ -1,113 +1,115 @@ #!/usr/bin/env bash -set -eu +set -euo pipefail DISCORD_WEBHOOK_LINK=${DISCORD_WEBHOOK_LINK:-""} -SYSTEM_LINK=$1 -ALIAS=$2 -SYSTEM_TYPE=$3 +SYSTEM_LINK=${1:-""} +ALIAS=${2:-""} +SYSTEM_TYPE=${3:-""} # Helper functions send_discord_message() { local message="$1" - local escaped_message=$(printf '%s' "$message" | jq -R -s '.') - curl -s -H "Accept: application/json" -H "Content-Type: application/json" \ - -X POST --data "{\"content\": $escaped_message}" "$DISCORD_WEBHOOK_LINK" + if [[ -n "$DISCORD_WEBHOOK_LINK" ]]; then + local escaped_message=$(printf '%s' "$message" | jq -R -s '.') + curl -s -H "Accept: application/json" -H "Content-Type: application/json" \ + -X POST --data "{\"content\": $escaped_message}" "$DISCORD_WEBHOOK_LINK" + else + echo "Discord message (not sent): $message" + fi } - send_discord_message "Starting ${SYSTEM_TYPE} system build for ${ALIAS}" +init_nfargs() { + local nflinksuffix="-L" + + nfargs=( + "${NIX_BUILD_ARGS[@]}" + ) + + if [[ -n "${NF_ACTIONS_TEST_OUTLINK-}" || -n "${NF_UPDATE_CACHIX_PUSH-}" ]]; then + nfargs+=( + -o "${NF_ACTIONS_TEST_OUTLINK-result}$nflinksuffix" + ) + else + nfargs+=( + --no-link + ) + fi +} + +nfgc() { + if [[ -n ${NF_ACTIONS_TEST_GC-} ]]; then + if [[ -n ${NF_UPDATE_CACHIX_PUSH-} ]]; then + send_discord_message "Cachix pushing ${SYSTEM_TYPE} system build for ${ALIAS}" + cachix push kittywitch "./${NF_ACTIONS_TEST_OUTLINK-result}$nflinksuffix"*/ + rm -f "./${NF_ACTIONS_TEST_OUTLINK-result}$nflinksuffix"* + fi + nix-collect-garbage -d + fi +} + +# Main script +if [[ -z "$SYSTEM_LINK" || -z "$ALIAS" || -z "$SYSTEM_TYPE" ]]; then + echo "Usage: $0 " >&2 + exit 1 +fi + +send_discord_message "Starting ${SYSTEM_TYPE} system build for ${ALIAS}" if [[ -n ${CACHIX_SIGNING_KEY-} ]]; then - export NF_UPDATE_CACHIX_PUSH=1 + export NF_UPDATE_CACHIX_PUSH=1 fi cd "$NF_CONFIG_ROOT" if [[ -n ${NF_UPDATE_CACHIX_PUSH-} ]]; then - export NF_ACTIONS_TEST_OUTLINK=${NF_ACTIONS_TEST_OUTLINK-result} + export NF_ACTIONS_TEST_OUTLINK=${NF_ACTIONS_TEST_OUTLINK-result} fi if [[ ${GITHUB_ACTIONS-} = true && ${RUNNER_NAME-} = "Github Actions"* ]]; then - # low disk space available on public runners... - echo "enabled GC between builds due to restricted disk space..." >&2 - export NF_ACTIONS_TEST_GC=1 + echo "Enabled GC between builds due to restricted disk space..." >&2 + export NF_ACTIONS_TEST_GC=1 fi NIX_BUILD_ARGS=( - --show-trace + --show-trace ) NIX_BUILD_ARGS_ASYNC=() -init_nfargs() { - nflinksuffix="-L" - shift - - nfargs=( - "${NIX_BUILD_ARGS[@]}" - ) - - if [[ -n "${NF_ACTIONS_TEST_OUTLINK-}" || -n "${NF_UPDATE_CACHIX_PUSH-}" ]]; then - nfargs+=( - -o "${NF_ACTIONS_TEST_OUTLINK-result}$nflinksuffix" - ) - else - nfargs+=( - --no-link - ) - fi -} - -nfgc() { - if [[ -n ${NF_ACTIONS_TEST_GC-} ]]; then - if [[ -n ${NF_UPDATE_CACHIX_PUSH-} ]]; then - send_discord_message "Cachix pushing ${SYSTEM_TYPE} system build for ${ALIAS}" - cachix push kittywitch "./${NF_ACTIONS_TEST_OUTLINK-result}$nflinksuffix"*/ - rm -f "./${NF_ACTIONS_TEST_OUTLINK-result}$nflinksuffix"* - fi - nix-collect-garbage -d - fi -} nfsystem=$ALIAS nfinstallable="${NF_CONFIG_ROOT}#${SYSTEM_LINK}" -init_nfargs "-$nfsystem" +init_nfargs nfwarn= -if [[ " ${NF_NIX_SYSTEMS_WARN[*]} " = *" $nfsystem "* ]]; then - nfwarn=1 +if [[ -n "${NF_NIX_SYSTEMS_WARN-}" && " ${NF_NIX_SYSTEMS_WARN[*]} " = *" $nfsystem "* ]]; then + nfwarn=1 fi if [[ -n ${NF_ACTIONS_TEST_ASYNC-} && -z $nfwarn ]]; then - NIX_BUILD_ARGS_ASYNC+=("$nfinstallable") - continue + NIX_BUILD_ARGS_ASYNC+=("$nfinstallable") +else + echo "Building ${nfsystem}..." >&2 + echo >&2 + + if ! nix build "$nfinstallable" "${nfargs[@]}"; then + if [[ -n $nfwarn ]]; then + send_discord_message "Build failure allowed for ${nfsystem}, ignoring..." + echo "Build failure allowed for ${nfsystem}, ignoring..." >&2 + else + send_discord_message "Build failure for ${nfsystem}, problem!" + exit 1 + fi + else + send_discord_message "${SYSTEM_TYPE} system build of ${ALIAS} succeeded!" + nfgc + fi fi -echo "building ${nfsystem}..." >&2 -echo >&2 - -nfbuildexit=0 -nix build "$nfinstallable" \ - "${nfargs[@]}" \ - "$@" || nfbuildexit=$? - -if [[ $nfbuildexit -ne 0 ]]; then - if [[ -n $nfwarn ]]; then - send_discord_message "build failure allowed for ${nfsystem}, ignoring..." - echo "build failure allowed for ${nfsystem}, ignoring..." >&2 - continue - fi - send_discord_message "build failure for ${nfsystem}, problem!" - exit $nfbuildexit -fi - -send_discord_message "${SYSTEM_TYPE} system build of ${ALIAS} succeeded!" - -nfgc - if [[ -n ${NF_ACTIONS_TEST_ASYNC-} ]]; then - init_nfargs "" - nix build \ - "${nfargs[@]}" \ - "${NIX_BUILD_ARGS_ASYNC[@]}" \ - "$@" - - nfgc -fi \ No newline at end of file + init_nfargs + if nix build "${nfargs[@]}" "${NIX_BUILD_ARGS_ASYNC[@]}"; then + nfgc + else + send_discord_message "Async build failure for ${nfsystem}, problem!" + exit 1 + fi +fi