saas是不是做网站,网站优化需要工具,asp access网站建设源代码,江门网站seo关键词排名优化文章目录 1. 说明2. 官方样例2.1 在作业中生成配置文件#xff0c;保存为产物2.2 将触发器作业配置为在生成配置文件的作业之后运行。 3. 实战应用3.1 背景介绍3.2 项目介绍3.3 公共项目配置3.4 测试项目配置3.5 测试 4. 总结 1. 说明
顾名思义#xff0c;动态流水线就是一种… 文章目录 1. 说明2. 官方样例2.1 在作业中生成配置文件保存为产物2.2 将触发器作业配置为在生成配置文件的作业之后运行。 3. 实战应用3.1 背景介绍3.2 项目介绍3.3 公共项目配置3.4 测试项目配置3.5 测试 4. 总结 1. 说明
顾名思义动态流水线就是一种动态生成的流水线主要在于其具有强大的灵活性可以在特殊的场景下基于我们的一个预期生成我们想要的流水线从而来执行某个作业任务。
既然是动态生成的流水线那肯定就需要额外的触发操作来运行流水线这里我们可以通过trigger:include: artifact的方式具体就是使用trigger关键字将 include: artifact 设置为生成的产物并通过 include: job 设置为创建产物的作业。
2. 官方样例
2.1 在作业中生成配置文件保存为产物
generate-config:stage: buildscript: generate-ci-config generated-config.ymlartifacts:paths:- generated-config.yml2.2 将触发器作业配置为在生成配置文件的作业之后运行。
child-pipeline:stage: testtrigger:include:- artifact: generated-config.ymljob: generate-config在此示例中GitLab 检索 generated-config.yml 并使用该文件中的 CI/CD 配置触发子流水线。
产物路径由GitLab 而非 runner 解析因此该路径必须与运行GitLab 的操作系统的语法相匹配。如果GitLab 在 Linux 上运行但使用 Windows runner 进行测试则触发作业的路径分隔符为 /。使用 Windows runner 的作业的其他 CI/CD 配置如脚本使用 \。
3. 实战应用
3.1 背景介绍
我们希望如果研发在提交代码的时候如果commit message中有x86_64关键字则创建一个Release_x86_64的job如果commit message中有aarch64关键字则创建一个Release_aarch64的job。该案例使用了include的嵌套方式也是另类的一种高级用法。
3.2 项目介绍
ci-test 是公共项目 variables.yml 里面存放了群组级下的所有的常用的变量template.yml 里面是公共的job里面也通过include 嵌套了variables.yml ci-test-1 是测试项目
3.3 公共项目配置 gitlab-ci/vars/variables.yml
variables:DOCKER_VERSION: Docker version 20.10.17, build 100c701BUILD_TYPE: ReleaseREGION: BJTAG: dcgitlab-ci/common_job/template.yml
##set default retry
default:retry: max: 1when: runner_system_failure##set image gitlab-runner
.imageimage:image:name: alpine:latest.tagstag:tags:- $TAG##include variables
include:- project: ops/ci-testref: devfile: gitlab-ci/vars/variables.yml###set job
.buildbuild:script:- envextends: - .imageimage- .tagstagrules:- when: always3.4 测试项目配置
ci文件
stages:- test- buildinclude:- project: ops/ci-testref: devfile:- gitlab-ci/vars/variables.ymlgenerate-config:stage: testimage: alpine:latestscript: - env- chmod x generate.sh- bash -x generate.sh- cat generated-config.ymlartifacts:paths:- generated-config.ymlbefore_script:- apk update- apk add bashchild-pipeline:stage: buildtrigger:include:- artifact: generated-config.ymljob: generate-config
generate.sh
#!/bin/bash
echo $CI_COMMIT_MESSAGEif [[ $CI_COMMIT_MESSAGE *x86_64* ]];then
cat EOF generated-config.yml
include:- project: ops/ci-testref: devfile:- gitlab-ci/common_job/template.yml
stages:- generate_jobs
Release_x86_64:stage: generate_jobsimage: alpine:latestextends:- .buildbuild
variables:DOCKER_VERSION: $DOCKER_VERSIONBUILD_TYPE: $BUILD_TYPEPLATFORM: x86_64REGION: $REGION
EOF
elif [[ $CI_COMMIT_MESSAGE *aarch64* ]]; then
cat EOF generated-config.yml
include:- project: ops/ci-testref: devfile:- gitlab-ci/common_job/template.yml
stages:- generate_jobs
Release_aarch64:stage: generate_jobsimage: alpine:latestextends:- .buildbuild
variables:DOCKER_VERSION: $DOCKER_VERSIONBUILD_TYPE: $BUILD_TYPEPLATFORM: aarch64REGION: $REGION
EOF
fi3.5 测试
本地项目提交 - 提交commit包含x86_64 本地项目提交 - 提交commit包含aarch64
4. 总结
其实这个案例相对比较简单主要想表达的一个思想是在某个业务场景下我们可以通过通过脚本动态的生成gitlab的流水线从而达到我们想要的效果。 此外这里也给大家推荐下gitlab官方项目的测试用例。
使用 Jsonnet 的动态子流水线Dynamic child pipeline creation via artifact includes