另一种系列- 另一种 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-buildbefore_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:    - aliyunmaven-build:  image: maven:3.3-jdk-8  stage: maven-build  script: ' mvn package -B'  artifacts:    paths:      - target/*.jar  tags:    - aliyun  only:    - beta    - release    - tagsdocker-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:8VOLUME /tmpCOPY /target/demo-0.0.1-SNAPSHOT.jar app.jarRUN 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 局部实现