stages: - build - upload - release build-x86_64: stage: build image: ubuntu:24.04 script: - apt-get update && apt-get install -y curl xz-utils sudo - curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix | sh -s -- install linux --no-confirm - . /nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh - nix build .#nixosConfigurations.sandbox.config.system.build.image --out-link result-x86_64 - cp $(find -L result-x86_64 -name '*.qcow2') sandbox-x86_64.qcow2 artifacts: paths: - sandbox-x86_64.qcow2 expire_in: 1 week build-aarch64: stage: build image: ubuntu:24.04 tags: - aarch64 allow_failure: true script: - apt-get update && apt-get install -y curl xz-utils sudo - curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix | sh -s -- install linux --no-confirm - . /nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh - nix build .#nixosConfigurations.sandbox-aarch64.config.system.build.image --out-link result-aarch64 - cp $(find -L result-aarch64 -name '*.qcow2') sandbox-aarch64.qcow2 artifacts: paths: - sandbox-aarch64.qcow2 expire_in: 1 week upload: stage: upload image: curlimages/curl:latest rules: - if: $CI_COMMIT_TAG script: - | curl --header "JOB-TOKEN: $CI_JOB_TOKEN" \ --upload-file sandbox-x86_64.qcow2 \ "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/sandbox/${CI_COMMIT_TAG}/sandbox-x86_64.qcow2" - | if [ -f sandbox-aarch64.qcow2 ]; then curl --header "JOB-TOKEN: $CI_JOB_TOKEN" \ --upload-file sandbox-aarch64.qcow2 \ "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/sandbox/${CI_COMMIT_TAG}/sandbox-aarch64.qcow2" fi release: stage: release image: registry.gitlab.com/gitlab-org/release-cli:latest rules: - if: $CI_COMMIT_TAG script: - echo "Creating release $CI_COMMIT_TAG" release: tag_name: $CI_COMMIT_TAG description: "Sandbox VM $CI_COMMIT_TAG" assets: links: - name: sandbox-x86_64.qcow2 url: "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/sandbox/${CI_COMMIT_TAG}/sandbox-x86_64.qcow2" - name: sandbox-aarch64.qcow2 url: "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/sandbox/${CI_COMMIT_TAG}/sandbox-aarch64.qcow2"