veilid/.gitlab-ci.yml
TC Johnson d0850e95fb
Refine MR unit tests and contribution guide
Changed the name of the unit tests CI job to accuratly reflect
that both AMD64 and ARM64 tests are executed.

Modified the contribution guide to specify that contributors
should work inside their own fork of the project.
2023-08-28 18:58:46 -05:00

125 lines
3.1 KiB
YAML

variables:
NO_DOCKER: 1
FORCE_COLOR: 1
EARTHLY_EXEC_CMD: "/bin/sh"
GIT_SUBMODULE_STRATEGY: normal
stages:
- test
- build_packages
- release
- distribute
unit_test_linux:
stage: test
image: docker
services:
- docker:dind
only:
- merge_requests
before_script:
- apk update && apk add git
- wget https://github.com/earthly/earthly/releases/download/v0.6.2/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
script:
- if [ "$CI_COMMIT_BRANCH" == "main" ]; then cache_args="--save-inline-cache --push"; fi
- if [ "$CI_PROJECT_PATH" != "veilid/veilid" ]; then project_args="--CI_PROJECT_PATH=$CI_PROJECT_PATH"; fi
- earthly --use-inline-cache $cache_args --ci +unit-tests-linux $project_args
resource_group: test
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:
- /home/gitlab-runner/build-machine-ctl.sh create amd64-deb
- /home/gitlab-runner/build-machine-ctl.sh create arm64-deb
- /home/gitlab-runner/build-machine-ctl.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
- /home/gitlab-runner/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
- /home/gitlab-runner/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
- /home/gitlab-runner/scp-to-orchestrator.sh
rules:
- if: '$CI_COMMIT_TAG =~ /v\d.+/'
build_repositories:
stage: distribute
tags:
- build-orchestration
script:
- /home/gitlab-runner/distribute-packages.sh
rules:
- if: '$CI_COMMIT_TAG =~ /v\d.+/'
deploy_repos:
stage: distribute
needs:
- build_repositories
tags:
- repo-server
script:
- /home/gitlab-runner/deploy-repo.sh
rules:
- if: '$CI_COMMIT_TAG =~ /v\d.+/'
delete_build_machines:
stage: distribute
needs:
- deploy_repos
tags:
- build-orchestration
script:
- /home/gitlab-runner/build-machine-ctl.sh delete amd64-deb
- /home/gitlab-runner/build-machine-ctl.sh delete arm64-deb
- /home/gitlab-runner/build-machine-ctl.sh delete amd64-rpm
rules:
- if: '$CI_COMMIT_TAG =~ /v\d.+/'