Files
icarus_models/.gitlab-ci.yml
2025-03-14 20:11:53 -04:00

80 lines
1.7 KiB
YAML

stages:
- build
- test
- version
- deploy
build:
stage: build
image: rust:1.85
script:
- cargo build --release
- ls -R target/release/
artifacts:
paths:
- target/release/
expire_in: 1 week
cache:
key: "cargo-cache"
paths:
- target/
- ~/.cargo/
test:
stage: test
image: rust:1.85
script:
- cargo test
cache:
key: "cargo-cache"
paths:
- target/
- ~/.cargo/
test_variable:
stage: test
image: rust:1.85
script:
- echo "Checking CARGO_LOGIN_TOKEN..."
- if [[ -z "$CARGO_LOGIN_TOKEN" ]]; then echo "CARGO_LOGIN_TOKEN is empty!"; exit 1; else echo "CARGO_LOGIN_TOKEN is set."; fi
- env
rules:
- if: '$CI_COMMIT_TAG'
extract_version:
stage: version
image: alpine:latest
script:
- apk add --no-cache jq
- VERSION=$(jq -r '.package.version' Cargo.toml)
- if [ $? -ne 0 ]; then echo "Error extracting version"; exit 1; fi
- echo "Extracted version: $VERSION"
- echo "VERSION=$VERSION" > version.env
artifacts:
reports:
dotenv: version.env
tag_release:
stage: deploy
image: registry.gitlab.com/gitlab-org/release-cli:latest
rules:
- if: '$CI_COMMIT_BRANCH == "main" && $CI_PIPELINE_SOURCE == "push"'
dependencies:
- extract_version
script:
- release-cli create --name "Release v$VERSION" --tag-name "v$VERSION"
deploy:
stage: deploy
image: rust:1.85
script:
- echo "Deployment will be configured when this is ready for use"
# - env
# Uncomment when you are ready for this to be published
# - cargo login "$CARGO_LOGIN_TOKEN"
# - cargo publish
dependencies:
- build
rules:
- if: '$CI_COMMIT_TAG'