version: 2.1 executors: linux_alpine: docker: - image: alpine:latest environment: TERM: xterm commands: setup: description: "Set up the environment needed to test and run the scripts." steps: - run: name: "APK: Add repository." command: | printf "\n%s\n" "http://nl.alpinelinux.org/alpine/edge/testing" >> /etc/apk/repositories printf "\n%s\n" "http://nl.alpinelinux.org/alpine/edge/community" >> /etc/apk/repositories - run: name: "APK: Update cache." command: apk update - run: name: "Setup: Install build packages." command: apk add git openssh bash python2 diffutils ca-certificates curl shfmt - run: name: "Setup: Install test packages." command: apk add util-linux coreutils - run: name: "Setup: Install runtime packages." command: apk add bat ripgrep ncurses build: description: "Build the self-contained scripts." parameters: minify: type: string default: "lib" steps: - run: name: "Build" command: ./build.sh --minify=<> --no-verify jobs: build: executor: linux_alpine steps: - setup - checkout - run: name: "Build Manuals" command: ./build.sh --no-verify --manuals - build: minify: "all" - store_artifacts: path: bin - store_artifacts: path: man test: executor: linux_alpine steps: - setup - checkout - build: minify: "all" - run: name: "Test: Unit Tests / Snapshots" command: ./test.sh --verbose --strict --snapshot:show test-consistency: executor: linux_alpine steps: - setup - checkout - build: minify: "all" - run: name: "Test: Consistency" command: ./test.sh --compiled --verbose --snapshot:show test-symlink: executor: linux_alpine steps: - setup - checkout - run: name: "Symlink" command: ln -s "$PWD/src/batgrep.sh" /tmp/batgrep - run: name: "Test: Symlink" command: /tmp/batgrep 'a' >/dev/null workflows: version: 2 default: jobs: - build - test: requires: [build] - test-consistency: requires: [build, test] - test-symlink: requires: [build]