Files
debian/.gitlab-ci.yml
T
2023-07-27 10:32:43 +08:00

67 lines
2.1 KiB
YAML

# CI/CD 的阶段定义,按顺序执行各阶段;默认包含`.pre`(最先执行)/`.post`(最后执行)两个阶段,不用显示定义
stages:
- build
- test
- deploy
# 全局变量定义
variables:
IMG_URL: "$HARBOR_HOST/$HARBOR_PROJECT/$CI_PROJECT_NAME"
IMG_TAG: ":latest"
# 默认值信息配置
default:
# 各 stage 使用的默认镜像,如果不定义,则为 gitlab-runner 创建时指定的镜像;各 stage 可以覆盖该值以使用不同的镜像
image: docker.colovu.com/library/docker:20.10.16
# Gitlab-runner 配置的执行器为 Docker 时,需要 配置对应的 dind 服务
services:
- name: docker.colovu.com/library/docker:20.10.16-dind
alias: docker
# 流水线中,各阶段都会执行的脚本命令,包括`before_script`(在各阶段 script 前执行)/`after_script`(在各阶段 script 后执行)
before_script:
- docker login -u "$HARBOR_USERNAME" -p "$HARBOR_PASSWORD" $HARBOR_URL
# 工作流配置,可用来配置工作流启动的条件、不同场景的变量设置等
workflow:
rules:
- if: '$CI_COMMIT_REF_SLUG == "$CI_DEFAULT_BRANCH"'
variables:
IMG_TAG: ":latest"
- if: '$CI_COMMIT_REF_SLUG =~ "$CI_DEFAULT_BRANCH"'
variables:
IMG_TAG: ":$CI_COMMIT_REF_SLUG"
- when: always
# 编译阶段任务
build-arm64:
stage: build
script:
- export
- env
- docker buildx build --platform=linux/arm64 --pull -t "$IMG_URL$IMG_TAG-linux-arm64" . --push
build-amd64:
stage: build
script:
- docker buildx build --platform=linux/amd64 --pull -t "$IMG_URL$IMG_TAG-linux-amd64" . --push
build-artifact:
stage: build
needs: [build-amd64, build-arm64]
script:
- docker manifest create "$IMG_URL$IMG_TAG" "$IMG_URL$IMG_TAG-linux-arm64" "$IMG_URL$IMG_TAG-linux-amd64"
- docker manifest push "$IMG_URL$IMG_TAG"
# 测试阶段任务
test:
stage: test
script:
- docker run --rm --platform=linux/arm64 "$IMG_URL$IMG_TAG" "/bin/uname -a"
- docker run --rm --platform=linux/amd64 "$IMG_URL$IMG_TAG" "/bin/uname -a"
# 部署阶段任务
deploy:
stage: deploy
script:
- echo "deploy stage"