default: image: docker:git stages: - test - build - pre-release - release test: stage: test image: golang:alpine script: - go test ./... -v build: stage: build variables: IMAGE: $CI_REGISTRY_IMAGE TAG: $CI_COMMIT_REF_SLUG-$CI_COMMIT_SHORT_SHA rules: - if: $CI_COMMIT_TAG variables: TAG: $CI_COMMIT_TAG before_script: - echo $CI_REGISTRY_PASSWORD | docker login -u $CI_REGISTRY_USER --password-stdin $CI_REGISTRY - docker info script: - docker buildx create --name yggdrasil --use - docker buildx build --provenance=false --platform linux/amd64,linux/arm64 -t $IMAGE:$TAG --push . - docker manifest inspect $IMAGE:$TAG semver-tag: stage: pre-release image: ghcr.io/vojtechmares/container-images/release-tools:latest rules: - if: $CI_COMMIT_TAG when: never - if: $CI_COMMIT_BRANCH == 'release' variables: # Disable shallow cloning so that svu can diff between tags GIT_DEPTH: 0 script: - echo "TAG=$(svu next)" >> release.env artifacts: reports: dotenv: release.env release: stage: release image: registry.gitlab.com/gitlab-org/release-cli:latest needs: - job: semver-tag artifacts: true rules: - if: $CI_COMMIT_TAG when: never - if: $CI_COMMIT_BRANCH == 'release' script: - echo "Creating release for $TAG" release: name: 'Release $TAG' description: 'Created using the release-cli' tag_name: '$TAG' ref: '$CI_COMMIT_SHA'