另一种系列- 另一种 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 局部实现