include:
- project: 'famedly/company/devops/templates/ci-cd'
ref: main
file:
- '/rust.yml'
- '/docker.yml'
stages:
- test
- build
- upload
- release
variables:
PACKAGE_REGISTRY_URL: ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/hookd
LINUX_AMD64_BINARY: hookd-linux-amd64
cargo-build-amd64:
extends: .cargo_build
script:
- rustup target add x86_64-unknown-linux-musl
- cargo build --target x86_64-unknown-linux-musl --release
variables:
RUST_ADDITIONAL_PACKAGES: "musl-tools"
artifacts:
paths:
- target/x86_64-unknown-linux-musl/release/
upload:
stage: upload
image: curlimages/curl:latest
script:
- 'curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file target/x86_64-unknown-linux-musl/release/hookd ${PACKAGE_REGISTRY_URL}/${CI_COMMIT_TAG}/${LINUX_AMD64_BINARY}-${CI_COMMIT_TAG}'
rules:
- if: '$CI_COMMIT_TAG && $CI_COMMIT_TAG =~ /^v\d+\.\d+\.\d+$/'
release:
stage: release
image: registry.gitlab.com/gitlab-org/release-cli:latest
script:
- |
release-cli create --name "Release $CI_COMMIT_TAG" --tag-name $CI_COMMIT_TAG \
--assets-link "{\"name\":\"${LINUX_AMD64_BINARY}-${CI_COMMIT_TAG}\",\"url\":\"${PACKAGE_REGISTRY_URL}/${CI_COMMIT_TAG}/${LINUX_AMD64_BINARY}-${CI_COMMIT_TAG}\"}"
rules:
- if: '$CI_COMMIT_TAG && $CI_COMMIT_TAG =~ /^v\d+\.\d+\.\d+$/'