今天要设定gitlab上的专案,让他们能够在git commit时自动打包成docker image并存放於gitlab registry。
目前gitlab上面都有提供许多shared runner,举凡像是一些无关紧要、无机敏性考量的内容,都可以直接透过官方提供的shared runner 来进行pipeline,这次的homelab也会使用这个shared runner 进行auto build的动作。
反之,如果是一些private repository,有机敏性考量、有对应网路环境限制(如地端自动化布署等等......),那就是透过sepcific runners於自己的机器中建置与维护专用的runner,符合当下环境的需求,且不用与陌生人竞争资源,安装与注册的流程上面&官网介绍的都算详细,看大家如何选择而已。
gitlab repository左边选单 Settings > CI/CD > 展开 Runners,从图片上我们可以看到许多shared runners,而runner下方许多蓝色的tag则是告知你该runner的使用情境/环境。
下图是官方所展示的gitlab runner execution flow
那如何触发runner运作呢?就是要搭配.gitlab-ci.yml,当该档案存在於gitlab repository且内容的撰写符合官方所规范的方式,就可以触发gitlab runner来工作啦。
那我这边就是简单的修改一下官方范本,撰写一份.gitlab-ci.yml 如下,使用的是docker in docker(dind)的方式:
docker-build:
image: docker:latest
stage: build
services:
- docker:dind
before_script:
- docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
script:
- |
if [[ "$CI_COMMIT_BRANCH" == "master" ]]; then
tag=":dev"
else
tag=":$CI_COMMIT_REF_NAME"
fi
- docker build -t "$CI_REGISTRY_IMAGE${tag}" .
- docker push "$CI_REGISTRY_IMAGE${tag}"
tags:
- docker
only:
- master
- /^Release-v[0-9]+(?:.[0-9]+)+$/
gitlab runner中其实预先定义了许多变数,与当下gitlab的使用者/repo/环境都息息相关,初学者不熟悉有哪些变数可以用的话不妨在runner中执行export将变数输出看一看,或是花点时间认真阅读官方文件看看有哪些是自己需要的。
.gitlab-ci.yml的内容可以搭配左边选单CI/CD > pipeline > 画面右上角CI Lint做检验。会告诉你语法是否正确,预计如何执行pipeline。
执行的过程,可以点选pipeline查看Console,那这边的逻辑就是master主线会将image打包成dev 而/^Release-v[0-9]+(?:.[0-9]+)+$/
则是只要是这样的名字就将image如此打包,如下图所示。
那这样子我前几天写的两个应用都完成Auto Build罗,明天可以开始规划基础环境建设了。
gitlab官方的免费仔,在使用gitlab CI时是有Quota限制的,每个月只能执行400分钟的pipeline(open source则不受限制),如果超过就需要升级会员或是购买额外时间(在user settings那边有详细的usage quotas可以参阅唷)。
>>: Day 7 ( 入门 ) 按钮控制猫咪 ( 广播 )
在介绍 Spread Operator 和 Rest Operator 之前,先来介绍阵列相加的方法...
上一篇我们介绍完了aws如何一步一步把环境架起来 这一篇我们来顺便把前面heroku的坑也填上吧 这...
前言 前面两篇介绍了 List、ForEach、ScrollView、Navigation, 这篇文...
今天我们再解 General Skills 2 题好了, 我看到和昨天同样概念的题型耶 一起解完好了...
不怎麽重要的前言 上一篇介绍了if条件式的语法,让我们可以依照设定好的条件来执行不同内容。 这次我们...