2

另一种系列- 另一种 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 部分完成


Yangyang
105 声望11 粉丝

Coding/Reading|Thinking