mirror of
https://gitlab.com/veilid/veilid.git
synced 2024-11-22 00:47:28 -06:00
bd4600576f
The previous trigger condition wasn't liked by Gitlab's yaml parser. I'm switching to trying a commit message based regex trigger. This message does not contain the trigger and so should not fire the dry run.
298 lines
8.0 KiB
YAML
298 lines
8.0 KiB
YAML
variables:
|
|
NO_DOCKER: 1
|
|
FORCE_COLOR: 1
|
|
EARTHLY_EXEC_CMD: "/bin/sh"
|
|
GIT_SUBMODULE_STRATEGY: normal
|
|
|
|
stages:
|
|
- prepare
|
|
- test
|
|
- build_packages
|
|
- release
|
|
- distribute
|
|
|
|
# base earthly setup for jobs
|
|
.base:
|
|
tags: [ saas-linux-medium-amd64 ]
|
|
image: docker
|
|
services:
|
|
- docker:dind
|
|
|
|
.earthly: &earthly_setup
|
|
- apk update && apk add git
|
|
- wget https://github.com/earthly/earthly/releases/download/v0.7.15/earthly-linux-amd64 -O /usr/local/bin/earthly
|
|
- chmod +x /usr/local/bin/earthly
|
|
- earthly bootstrap
|
|
- echo $CI_REGISTRY_PASSWORD | docker login -u $CI_REGISTRY_USER --password-stdin $CI_REGISTRY
|
|
- test "$CI_PROJECT_PATH" != "veilid/veilid" && project_args="--CI_REGISTRY_IMAGE=$CI_REGISTRY_IMAGE"
|
|
|
|
# Create the build container if:
|
|
# - no container in the registry
|
|
# - run as part of a schedule
|
|
# - run manually from the pipelines web page
|
|
build_cache:
|
|
extends: .base
|
|
stage: prepare
|
|
script:
|
|
- if ! docker manifest inspect $CI_REGISTRY_IMAGE/build-cache:latest > /dev/null || [[ "$CI_PIPELINE_SOURCE" == "schedule" ]] || [[ "$CI_PIPELINE_SOURCE" == "web" ]] ; then
|
|
- *earthly_setup
|
|
- earthly --use-inline-cache --save-inline-cache --strict --push -P +build-linux-cache $project_args
|
|
- else
|
|
- echo "No need to rebuild"
|
|
- fi
|
|
|
|
# Runs a basic unit test build, this task will use the `build-cache:latest` as set up in the projects Container Registry
|
|
test_build:
|
|
extends: .base
|
|
stage: test
|
|
only:
|
|
- main
|
|
- pushes
|
|
- merge_requests
|
|
script:
|
|
- *earthly_setup
|
|
- earthly --use-inline-cache +unit-tests-linux --BASE=container $project_args
|
|
resource_group: test
|
|
# when: manual
|
|
|
|
# Actual release -- triggered by pushing a new version tag
|
|
|
|
release_job:
|
|
stage: release
|
|
image: registry.gitlab.com/gitlab-org/release-cli:latest
|
|
script:
|
|
- echo "running release_job"
|
|
release: # See https://docs.gitlab.com/ee/ci/yaml/#release for available properties
|
|
tag_name: '$CI_COMMIT_TAG'
|
|
description: '$CI_COMMIT_TAG'
|
|
rules:
|
|
- if: '$CI_COMMIT_TAG =~ /v\d.+/'
|
|
|
|
create_build_machines:
|
|
stage: build_packages
|
|
tags:
|
|
- build-orchestration
|
|
script:
|
|
- bash scripts/cicd/build-orchestration/build-machine-ctrl.sh create amd64-deb
|
|
- bash scripts/cicd/build-orchestration/build-machine-ctrl.sh create arm64-deb
|
|
- bash scripts/cicd/build-orchestration/build-machine-ctrl.sh create amd64-rpm
|
|
rules:
|
|
- if: '$CI_COMMIT_TAG =~ /v\d.+/'
|
|
|
|
package_amd64_deb:
|
|
stage: build_packages
|
|
needs:
|
|
- create_build_machines
|
|
tags:
|
|
- build-amd64-deb
|
|
script:
|
|
- earthly bootstrap
|
|
- earthly +package-linux-amd64-deb
|
|
- bash scripts/cicd/build-machine/scp-to-orchestrator.sh
|
|
rules:
|
|
- if: '$CI_COMMIT_TAG =~ /v\d.+/'
|
|
|
|
package_arm64_deb:
|
|
stage: build_packages
|
|
needs:
|
|
- create_build_machines
|
|
tags:
|
|
- build-arm64-deb
|
|
script:
|
|
- earthly bootstrap
|
|
- earthly +package-linux-arm64-deb
|
|
- bash scripts/cicd/build-machine/scp-to-orchestrator.sh
|
|
rules:
|
|
- if: '$CI_COMMIT_TAG =~ /v\d.+/'
|
|
|
|
package_amd64_rpm:
|
|
stage: build_packages
|
|
needs:
|
|
- create_build_machines
|
|
tags:
|
|
- build-amd64-rpm
|
|
script:
|
|
- earthly bootstrap
|
|
- earthly +package-linux-amd64-rpm
|
|
- bash scripts/cicd/build-machine/scp-to-orchestrator.sh
|
|
rules:
|
|
- if: '$CI_COMMIT_TAG =~ /v\d.+/'
|
|
|
|
publish_crates:
|
|
stage: build_packages
|
|
tags:
|
|
- build-amd64-deb
|
|
script:
|
|
- vlt login
|
|
- vlt run --command="cargo publish -p veilid-tools --dry-run"
|
|
- vlt run --command="cargo publish -p veilid-tools"
|
|
- vlt run --command="cargo publish -p veilid-core --dry-run"
|
|
- vlt run --command="cargo publish -p veilid-core"
|
|
rules:
|
|
- if: '$CI_COMMIT_TAG =~ /v\d.+/'
|
|
|
|
publish_python:
|
|
stage: build_packages
|
|
tags:
|
|
- build-amd64-deb
|
|
script:
|
|
- vlt login
|
|
- cd veilid-python && /home/gitlab-runner/.local/bin/poetry build
|
|
- vlt run --command="/home/gitlab-runner/.local/bin/poetry publish"
|
|
rules:
|
|
- if: '$CI_COMMIT_TAG =~ /v\d.+/'
|
|
|
|
build_repositories:
|
|
stage: distribute
|
|
needs:
|
|
- publish_python
|
|
tags:
|
|
- build-orchestration
|
|
variables:
|
|
SECURE_FILES_DOWNLOAD_PATH: './'
|
|
script:
|
|
- cp scripts/cicd/build-orchestration/generate-release.sh ~
|
|
- bash scripts/cicd/build-orchestration/distribute-packages.sh
|
|
rules:
|
|
- if: '$CI_COMMIT_TAG =~ /v\d.+/'
|
|
|
|
deploy_repos:
|
|
stage: distribute
|
|
needs:
|
|
- build_repositories
|
|
tags:
|
|
- repo-server
|
|
script:
|
|
- bash scripts/cicd/repo-server/deploy-repo.sh
|
|
rules:
|
|
- if: '$CI_COMMIT_TAG =~ /v\d.+/'
|
|
|
|
delete_build_machines:
|
|
stage: distribute
|
|
needs:
|
|
- deploy_repos
|
|
tags:
|
|
- build-orchestration
|
|
script:
|
|
- bash scripts/cicd/build-orchestration/build-machine-ctrl.sh delete amd64-deb
|
|
- bash scripts/cicd/build-orchestration/build-machine-ctrl.sh delete arm64-deb
|
|
- bash scripts/cicd/build-orchestration/build-machine-ctrl.sh delete amd64-rpm
|
|
rules:
|
|
- if: '$CI_COMMIT_TAG =~ /v\d.+/'
|
|
|
|
# Dryrun release -- triggered by changes in .gitlab-ci.yml, CICD scripts, or Earthfile
|
|
|
|
dryrun_create_build_machines:
|
|
stage: build_packages
|
|
tags:
|
|
- build-orchestration
|
|
script:
|
|
- bash scripts/cicd/build-orchestration/build-machine-ctrl.sh create amd64-deb
|
|
- bash scripts/cicd/build-orchestration/build-machine-ctrl.sh create arm64-deb
|
|
- bash scripts/cicd/build-orchestration/build-machine-ctrl.sh create amd64-rpm
|
|
rules:
|
|
- if: $CI_COMMIT_MESSAGE =~ /\[ci dryrun]/
|
|
|
|
dryrun_package_amd64_deb:
|
|
stage: build_packages
|
|
needs:
|
|
- dryrun_create_build_machines
|
|
tags:
|
|
- build-amd64-deb
|
|
script:
|
|
- earthly bootstrap
|
|
- earthly +package-linux-amd64-deb
|
|
- bash scripts/cicd/build-machine/scp-to-orchestrator.sh
|
|
rules:
|
|
- if: $CI_COMMIT_MESSAGE =~ /\[ci dryrun]/
|
|
|
|
dryrun_package_arm64_deb:
|
|
stage: build_packages
|
|
needs:
|
|
- dryrun_create_build_machines
|
|
tags:
|
|
- build-arm64-deb
|
|
script:
|
|
- earthly bootstrap
|
|
- earthly +package-linux-arm64-deb
|
|
- bash scripts/cicd/build-machine/scp-to-orchestrator.sh
|
|
rules:
|
|
- if: $CI_COMMIT_MESSAGE =~ /\[ci dryrun]/
|
|
|
|
dryrun_package_amd64_rpm:
|
|
stage: build_packages
|
|
needs:
|
|
- dryrun_create_build_machines
|
|
tags:
|
|
- build-amd64-rpm
|
|
script:
|
|
- earthly bootstrap
|
|
- earthly +package-linux-amd64-rpm
|
|
- bash scripts/cicd/build-machine/scp-to-orchestrator.sh
|
|
rules:
|
|
- if: $CI_COMMIT_MESSAGE =~ /\[ci dryrun]/
|
|
|
|
# dryrun_publish_crates:
|
|
# stage: build_packages
|
|
# needs:
|
|
# - dryrun_create_build_machines
|
|
# tags:
|
|
# - build-amd64-deb
|
|
# script:
|
|
# - vlt login
|
|
# - vlt run --command="cargo publish -p veilid-tools --dry-run"
|
|
# - vlt run --command="cargo publish -p veilid-core --dry-run"
|
|
# rules:
|
|
# - if: ($CI_PIPELINE_SOURCE == "push" || $CI_PIPELINE_SOURCE == "merge_request_event") && $CI_COMMIT_TAG == NULL
|
|
# changes:
|
|
# - .gitlab-ci.yml
|
|
# - scripts/cicd/**/*
|
|
# - Earthfile
|
|
# - package/**/*
|
|
|
|
dryrun_publish_python:
|
|
stage: build_packages
|
|
needs:
|
|
- dryrun_create_build_machines
|
|
tags:
|
|
- build-amd64-deb
|
|
script:
|
|
- cd veilid-python && /home/gitlab-runner/.local/bin/poetry build
|
|
rules:
|
|
- if: $CI_COMMIT_MESSAGE =~ /\[ci dryrun]/
|
|
|
|
dryrun_build_repositories:
|
|
stage: distribute
|
|
tags:
|
|
- build-orchestration
|
|
variables:
|
|
SECURE_FILES_DOWNLOAD_PATH: './'
|
|
script:
|
|
- cp scripts/cicd/build-orchestration/generate-release.sh ~
|
|
- bash scripts/cicd/build-orchestration/distribute-packages.sh
|
|
rules:
|
|
- if: $CI_COMMIT_MESSAGE =~ /\[ci dryrun]/
|
|
|
|
dryrun_deploy_repos:
|
|
stage: distribute
|
|
needs:
|
|
- dryrun_build_repositories
|
|
tags:
|
|
- repo-server
|
|
script:
|
|
- ls -al repo.tar
|
|
rules:
|
|
- if: $CI_COMMIT_MESSAGE =~ /\[ci dryrun]/
|
|
|
|
dryrun_delete_build_machines:
|
|
stage: distribute
|
|
needs:
|
|
- dryrun_deploy_repos
|
|
tags:
|
|
- build-orchestration
|
|
script:
|
|
- bash scripts/cicd/build-orchestration/build-machine-ctrl.sh delete amd64-deb
|
|
- bash scripts/cicd/build-orchestration/build-machine-ctrl.sh delete arm64-deb
|
|
- bash scripts/cicd/build-orchestration/build-machine-ctrl.sh delete amd64-rpm
|
|
rules:
|
|
- if: $CI_COMMIT_MESSAGE =~ /\[ci dryrun]/ |