--- stages: - test - build - publish default: tests: stage: test image: rust before_script: - rustc --version - cargo --version - rustup component add rustfmt script: - cargo fmt --check - cargo test build:linux-x86_64: stage: build image: rust before_script: - rustc --version - cargo --version script: - cargo build --release artifacts: paths: - target/x86_64-unknown-linux-gnu/release/reddit-magnet name: reddit-magnet-linux-x86_64 build:darwin-aarch64: stage: build image: rust before_script: - rustc --version - cargo --version - rustup target add aarch64-apple-darwin script: - cargo build --release --target aarch64-apple-darwin artifacts: paths: - target/aarch64-apple-darwin/release/reddit-magnet name: reddit-magnet-darwin-aarch64 build:darwin-x86_64: stage: build image: rust before_script: - rustc --version - cargo --version - rustup target add x86_64-apple-darwin script: - cargo build --release --target x86_64-apple-darwin artifacts: paths: - target/x86_64-apple-darwin/release/reddit-magnet name: reddit-magnet-darwin-x86_64 build:windows-x86_64: stage: build services: - docker:28.1.1-dind variables: DOCKER_HOST: tcp://docker:2375/ DOCKER_DRIVER: overlay2 CROSS_REMOTE: 1 image: rust before_script: - curl -fsSL https://get.docker.com -o get-docker.sh - sh ./get-docker.sh - service docker start - rustc --version - cargo --version - cargo install cross script: - cross build --release --target x86_64-pc-windows-gnu artifacts: paths: - target/x86_64-pc-windows-gnu/release/reddit-magnet.exe name: reddit-magnet-windows-x86_64 rustdoc: stage: build image: rust before_script: - rustc --version - cargo --version script: - cargo doc artifacts: paths: - target/doc pages: stage: publish image: alpine dependencies: - build:linux-x86_64 - build:darwin-aarch64 - build:darwin-x86_64 - build:windows-x86_64 - rustdoc script: - mkdir -p public - mv target/doc public/doc - mv target/x86_64-unknown-linux-gnu/release/reddit-magnet public/reddit-magnet-linux-x86_64 - mv target/aarch64-apple-darwin/release/reddit-magnet public/reddit-magnet-darwin-aarch64 - mv target/x86_64-apple-darwin/release/reddit-magnet public/reddit-magnet-darwin-x86_64 - mv target/x86_64-pc-windows-gnu/release/reddit-magnet.exe public/reddit-magnet-windows-x86_64.exe artifacts: paths: - public only: - main ...