另一种系列 - 另一种 CI/CD 形式
过往最常应用的是 jenkins 来进行 CICD, 从最开始接触 CICD,经验过大部分我的项目都是应用的 jenkins。
最近尝试一种新的 CICD 形式————应用 Gitlab CICD
Gitlab CICD
Gitlab Runner
在应用 jenkins 时,咱们是在一台机器上装置 jenkins,而后这台机器帮咱们干一些打包的脏活杂活。
在 Gitlab CICD 这个上下文外面,咱们应用 runner 做这部分的工作。runner 相对值得独自花大篇幅去聊它,但作为入门,咱们须要晓得如何配置并应用根本就能够了。
Gitlab Runner 配置
runner 实质还是一个机器上的服务,首先你须要有一台机器,能够是不同操作系统,甚至是虚拟机都 ok。
装置的具体过程能够参考文档,我是找的一台 linux 机器,大抵过程如下
其中 token 相干信息,能够在你的我的项目信息中找到。
配置实现后,刷新页面,你就能够看到对应 runner 了
Gitlab Runner 应用
在 应用 jenkins 时,咱们组织整个流水线是利用 jenkinsfile,在 gitlab CICD 中有一个相似的文件,叫做.gitlab-ci.yml。
gitlab 实际上有提供一些共享的 runner,你也能够用本人指定的 private 的 runner,指定的规定能够基于 tag。
我的 yml 文件大略如下
stages:
- maven-test
- maven-build
- docker-build
before_script:
- export IMAGE_TAG=$(echo -en $CI_COMMIT_REF_NAME | tr -c '[:alnum:]_.-' '-')
maven-test:
image: maven:3.3-jdk-8
stage: maven-test
script: "mvn clean pmd:check"
tags:
- aliyun
maven-build:
image: maven:3.3-jdk-8
stage: maven-build
script: 'mvn package -B'
artifacts:
paths:
- target/*.jar
tags:
- aliyun
only:
- beta
- release
- tags
docker-build:
stage: docker-build
script:
- docker build -t registry.cn-shanghai.aliyuncs.com/yycao/demo:${IMAGE_TAG} .
- docker login -u $CI_BUILD_USER -p $CI_BUILD_TOKEN registry.cn-shanghai.aliyuncs.com
- docker push registry.cn-shanghai.aliyuncs.com/yycao/demo:${IMAGE_TAG}
only:
- beta
- release
- tags
其中有些波及我的项目平安的字段,也能够在 cicd 内设置
最简略的 java spring 我的项目
应用 spring 最简略的一个我的项目作为例子,简略的进行容器化。
docker file 如下
FROM java:8
VOLUME /tmp
COPY /target/demo-0.0.1-SNAPSHOT.jar app.jar
RUN sh -c 'touch /app.jar'
ENV JAVA_OPTS=""ENTRYPOINT ["sh","-c","java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar"]
CI 流水线
最初,提交代码,在预设的对应的分支,就会主动开始打包了。CI 局部实现