# 011-模版与变量构建
# 首先是模板,引用上一章的 .gitlab-ci.yml 文件内容
variables:
MAVEN_CLI_OPTS: "-Dfile.encoding=UTF-8 -s /usr/local/maven/conf/settings.xml"
stages:
- buildJar
buildJar:
stage: buildJar
variables:
projectdir: $CI_PROJECT_DIR
projectid: $CI_PROJECT_ID
projectname: $CI_PROJECT_NAME
jobid: $CI_JOB_ID
pipelineid: $CI_PIPELINE_ID
commitid: $CI_COMMIT_SHA
branchname: $CI_COMMIT_REF_NAME
appname: "kenaito-sso-service"
versioncode: "202411131900"
envLabel: "online"
script:
- mvn clean package -DskipTests -pl $appname -am
- rm -rf /home/gitlab-runner/springboot/$appname/$versioncode
- mkdir -p /home/gitlab-runner/springboot/$appname/$versioncode
- cp $appname/target/$appname.jar /home/gitlab-runner/springboot/$appname/$versioncode/$appname.jar
- cp Dockerfile"_"$envLabel /home/gitlab-runner/springboot/$appname/$versioncode/
- cd /home/gitlab-runner/springboot/$appname/$versioncode/
- tar zcvf $appname.tar.gz $appname.jar
- rm -f $appname.jar
- ls -al
- echo imageName=kenaito-register.odboy.local:15000/springboot/$appname:$envLabel"_"$versioncode
- buildah build-using-dockerfile -f Dockerfile_$envLabel -t kenaito-register.odboy.local:15000/springboot/$appname:$envLabel"_"$versioncode --build-arg APP_NAME=$appname --build-arg APP_ENV=$envLabel ./
- buildah push --tls-verify=false kenaito-register.odboy.local:15000/springboot/$appname:$envLabel"_"$versioncode
tags:
- springboot
only:
- master
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# 从上面可以看出,可以看出什么呢?
- 每个项目都放一个明显不符合运维统一管理的需求
- .gitlab-ci.yml 的内容太过冗长,内容可见,不具有保密性
# 针对以上两点,优化后的 .gitlab-ci.yml 内容如下
# 在 root 分组新建一个代码仓库,名称 devops-ci-template
# 仓库内容如下
# 那么优化过后的 .gitlab-ci.yml 文件内容如下
include:
- project: 'root/devops-ci-template'
ref: master
file: '/springboot_maven/.gitlab-ci.yml'
1
2
3
4
2
3
4
# 变量流水线测试
新建流水线 http://kenaito-gitlab.odboy.local:20080/root/kenaito/-/pipelines/new (opens new window)
# 可以看到,结果和预期一样
- 成功的隐藏了 .gitlab-ci.yml 内容
- 达到了变量模版构建的目的
# 镜像仓库里面也是有这次成功构建的应用镜像的
# 镜像拉取测试(在节点 192.168.235.103测试)
为什么在这个节点测试呢,因为这个节点有部署docker和k8s单点集群。别忘记添加授信镜像节点,harbor也是一样的
docker pull kenaito-register.odboy.local:15000/springboot/kenaito-sso-service:online_202411141949
1