default: image: "archlinux:latest" stages: - lint - build - publish shellcheck: stage: lint before_script: - pacman -Syu --needed --noconfirm shellcheck script: - shellcheck **/*.sh shfmt: stage: lint before_script: - pacman -Syu --needed --noconfirm shfmt script: - shfmt -i 2 -ci -d **/*.sh .build: stage: build before_script: - pacman -Syu --needed --noconfirm qemu-headless libisoburn script: - echo "BUILD_DATE=$(date -I)" > build.env - . build.env - ./build-in-qemu.sh - mv build.env output/ build: extends: .build except: - master build:release: extends: .build tags: - secure only: - master artifacts: name: "output" paths: - "output/*" expire_in: 2d publish: stage: publish tags: - secure before_script: - pacman -Syu --needed --noconfirm vagrant script: - . output/build.env - vagrant cloud auth login --token "${VAGRANT_API_TOKEN}" - vagrant cloud auth login --check - vagrant cloud box show archlinux/archlinux - vagrant cloud publish archlinux/archlinux "v${BUILD_DATE}" libvirt output/Arch-Linux-x86_64-libvirt-*.box --release -f - vagrant cloud publish archlinux/archlinux "v${BUILD_DATE}" virtualbox output/Arch-Linux-x86_64-virtualbox-*.box --release -f only: variables: - $SCHEDULED_PUBLISH == "TRUE" resource_group: vm-build