GitLab13.8版本CI/CD部分功能更新

时间:2021-05-02

基于GitLabCI/CD流水线实践

Gitlab版本升级GitLab12.9 >12.10.14 > 13.0.0 >13.8.4

https://docs.gitlab.com/omnibus/update/gitlab_13_changes.html

https://forum.gitlab.com/t/omnibus-upgrade-from-12-10-6-to-13-0-6/38737/3

https://forum.gitlab.com/t/packaged-postgresql-error-after-update-from-12-7-to-13/39451

unninghandlers:

Runninghandlerscomplete

ChefInfraClientfinished,441/1538resourcesupdatedin03minutes19seconds

gitlabReconfigured!

Checkingforanomnibusmanagedpostgresql:OK

Checkingifpostgresql['version']isset:OK

Checkingifwealreadyupgraded:NOTOK

CheckingforanewerversionofPostgreSQLtoinstall

UpgradingPostgreSQLto12.5

CheckingifPostgreSQLbinfilesaresymlinkedtotheexpectedlocation:OK

cp/opt/gitlab/embedded/service/gitlab-rails/public/deploy.html/opt/gitlab/embedded/service/gitlab-rails/public/index.html

Togglingdeploypage:OK

Togglingservices:ok:down:alertmanager:1s,normallyup

ok:down:gitaly:1s,normallyup

ok:down:gitlab-exporter:0s,normallyup

ok:down:gitlab-pages:1s,normallyup

ok:down:grafana:0s,normallyup

ok:down:logrotate:0s,normallyup

ok:down:postgres-exporter:1s,normallyup

ok:down:prometheus:0s,normallyup

ok:down:redis-exporter:1s,normallyup

ok:down:sidekiq:1s,normallyup

ok:down:sshd:0s,normallyup

Togglingservices:OK

Runningstoponpostgresql:ok:down:postgresql:0s,normallyup

Runningstoponpostgresql:OK

Symlinkcorrectversionofbinaries:OK

Creatingtemporarydatadirectory:OK

Initializingthenewdatabase:OK

13.8新特性(CI/CD)

使用退出码控制作业的状态

语句:allow_failure:exit_codes

使用allow_failure:exit_codes动态控制作业是否应该允许失败。您可以列出哪些退出代码不被视为失败。该作业因任何其他退出代码而失败。

test_job_1:

script:

-echo"Runascriptthatresultsinexitcode1.Thisjobfails."

-exit1

allow_failure:

exit_codes:137

test_job_2:

script:

-echo"Runascriptthatresultsinexitcode137.Thisjobisallowedtofail."

-exit137

allow_failure:

exit_codes:

-137

-255

参考链接:https://docs.gitlab.com/ee/ci/yaml/README.html#allow_failureexit_codes

管道规则支持定义变量

语句:rules:variables, (13.7引入, 13.8默认启用)

可以在rules:使用variables定义特定条件的变量。

job:

variables:

DEPLOY_VARIABLE:"default-deploy"

rules:

-if:$CI_COMMIT_REF_NAME=~/master/

variables:#OverrideDEPLOY_VARIABLEdefined

DEPLOY_VARIABLE:"deploy-production"#atthejoblevel.

-if:$CI_COMMIT_REF_NAME=~/feature/

variables:

IS_A_FEATURE:"true"#Defineanewvariable.

script:

-echo"Runscriptwith$DEPLOY_VARIABLEasanargument"

-echo"Runanotherscriptif$IS_A_FEATUREexists"

参考链接:https://docs.gitlab.com/ee/ci/yaml/README.html#allow_failureexit_codes

Docker类型的执行器配置多个镜像拉取策略

该pull_policy参数允许您指定拉取策略列表。将按照从左到右的顺序尝试列表中的策略,直到成功进行拉取或列表用尽为止。

什么时候使用多个拉策略?

当Docker注册表不可用并且您需要提高作业弹性时,此功能很有用。如果您使用该always策略并且注册表不可用,则即使所需的镜像在本地缓存,该作业也会失败。

为了克服该问题,您可以添加在故障情况下执行的其他后备拉取策略。通过添加第二个拉取策略值if-not-present,Runner可以找到任何本地缓存的Docker镜像层。

[runners.docker]

pull_policy=["always","if-not-present"]

项目配置是否存储最新工件

默认情况下,永远不会删除来自最近成功作业的最新工件。如果使用expire_in来配置作业,则其工件仅在存在较新的工件时才过期。

保留最新的工件会在具有大量工作或较大工件的项目中使用大量存储空间。如果项目中不需要最新的工件,则可以禁用此行为以节省空间:

导航到设置> CI/CD>Artifact

取消选中“将工件保留在最近成功完成的工作中”

您可以在实例的CI/CD设置中对自管理实例上的所有项目禁用此行为 。

禁用该功能时,最新的工件不会立即过期。必须运行新的管道,最新的工件才能到期并删除。

不重复使用分支和合并

13.8 新增了两个预定义变量,可以通过变量来控制CI管道。

CI_PROJECT_CONFIG_PATH 指定项目的CI配置文件路径。

CI_OPEN_MERGE_REQUESTS 在分支和合并请求管道中可用。一个逗号分隔的列表,该列表包含最多四个使用当前分支和项目作为合并请求源的合并请求。例如: gitlab-org/gitlab!333,gitlab-org/gitlab-foss!11。

管道配置可视化

要查看gitlab-ci.yml配置的可视化,请在项目中转到CI / CD>编辑器,然后选择“**可视化”**选项卡。可视化显示了所有阶段和作业。任何needs 关系都显示为将作业连接在一起的线,显示了执行的层次结构:

将鼠标悬停在工作上以突出其needs关系:

如果配置没有任何needs关系,则不会画线,因为每个作业仅取决于成功完成的前一阶段。

启用或禁用管道编辑器:

Feature.disable(:ci_pipeline_editor_page)

Feature.enable(:ci_pipeline_editor_page)

原文地址:https://mp.weixin.qq.com/s/wWsfcx-lMtoyGC1zi8SRMg

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章