image: 3.10.8-slim-buster variables: PACKAGE_REGISTRY_URL: "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/linux/$CI_COMMIT_TAG/" .deploy: rules: # Regex magic copied from Neshura/page-test, only deploys on x.y.z or higher (x.y) Tags - if: $CI_COMMIT_TAG =~ /^((([\d])+\.){1,2}[\d]+)\s*$/ && $CI_COMMIT_TAG stages: - build - upload - release ## Docker steps build: image: rust:latest stage: build variables: IMAGE_TAG: $CI_REGISTRY_IMAGE:$CI_COMMIT_BRANCH CACHING: script: - echo "Compiling the code..." - echo DATABASE_URL=$DATABASE_URL >> .env - cargo build -r - echo "Compile complete." after_script: - echo JOB_ID=$CI_JOB_ID >> job.env - mkdir ./artifacts - cp /builds/Neshura/chellaris-rust-api/target/release/chellaris-rust-api ./artifacts/ artifacts: paths: - ./artifacts/ reports: dotenv: job.env rules: - !reference [.deploy, rules] upload: needs: - job: build artifacts: true image: curlimages/curl:latest stage: upload script: - | curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file artifacts/chellaris-rust-api "${PACKAGE_REGISTRY_URL}/chellaris-rust-api" rules: - !reference [.deploy, rules] Tag Release: stage: release image: registry.gitlab.com/gitlab-org/release-cli:latest rules: - !reference [.deploy, rules] script: - apk add curl - echo "running Release Job, attaching Artifact from Job $JOB_ID" release: tag_name: '$CI_COMMIT_TAG' description: '$CI_COMMIT_TAG' assets: links: - name: "chellaris-rust-api" url: "${PACKAGE_REGISTRY_URL}/chellaris-rust-api"