H5W3
当前位置:H5W3 > 其他技术问题 > 正文

GitLab CI + Docker 持续集成操作手册

概述

在传统软件的开发中,代码的集成工作通常是在所有人都将工作完成后在项目即将结束进行时,而这往往会花费大量的时间和精力。而持续集成是一种将集成阶段放在软件开发阶段的做法,以便更加有规律地构建,测试和集成代码。

“持续集成并不能消除 Bug,而是让它们非常容易发现和改正。”

持续集成可以在开发人员提交了新代码后,立刻进行构建、单元测试。从而我们可以根据测试结果以确定新的代码或者环境配置与原来的以及其他开发人员的代码或者环境配置能否正确地集成在一起。

GitLab CI 就已经集成在 GitLab 中,我们只需要在项目中添加一个 .gitlab-ci.yml 文件,然后添加一个 Runner,即可进行持续集成。而且随着 GitLab 的升级,GitLab 也变得越来越强大。

CI 的准备工作

docs.gitlab.com/runner/inst…
CI 操作需要安装 GitLab Runner, 以上链接包含了多种安装方式,本文介绍docker 安装方式

docker pull gitlab/gitlab-runner:latest
docker run -d --name gitlab-runner --restart always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /srv/gitlab-runner/config:/etc/gitlab-runner \
gitlab/gitlab-runner:latest
 

docker exec gitlab-runner -it bash 进入其中,安装 java 和maven

容器内安装 Java 和 Maven

wget https://repo.huaweicloud.com/java/jdk/8u201-b09/jdk-8u201-linux-x64.tar.gz
wget https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
tar -zxvf jdk-8u201-linux-x64.tar.gz mv jdk1.8.0_201
tar -xvf  apache-maven-3.6.3-bin.tar.gz
 

配置环境变量

vim /etc/profile
export JAVA_HOME=/opt/jdk1.8.0_201
export MAVEN_HOME=/opt/apache-maven-3.6.3
export PATH=${JAVA_HOME}/bin:${MAVEN_HOME}/bin:${PATH}
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
 

重新加载系统配置文件:source /etc/profile

项目如何使用CI

.gtilab-ci.yml 文件存放与项目于仓库的根目录,用以来定义 GitLab CI/CD 中的 Pipeline。其实无非是一个配置文件,理解起来挺简单的,我们主要是需要了解 Pipeline 的概念以及如何配置一个 .gitlab-ci.yml

给项目创建.gitlab-ci.yml文件,内容如下

build:
script: "pwd && mvn install"
 

如果运行提示permission denied,或者提示找不到mvn命令, 原因是自己maven安装在自己创建的目录下,安装路径有问题。 主要是因为gitlab-runner 配置文件.gitlab-ci.yml中的script脚本的执行用户是gitlab-runner
该用户只能访问/home/gitlab-runner文件夹下的东西,如果在其他位置执行一些命令,可以通过修改docker里的
/etc/gitlab-runner/config.toml解决

vi /etc/gitlab-runner/config.toml
## 追加内容
[runners.docker]
tls_verify = false
image = "latest"
privileged = true
disable_cache = false
volumes = ["/cache"]
 

GitLab 配置运行 CI 的runner

从下图可以看到有4种方式,这里选择手动设置

因为选择了Docker方式安装,需要进入docker执行如下命名,设置图片中第2、3项的链接和token,

gitlab-ci-multi-runner register
 

根据提示输入对应2 、3中的url和token

设置成功可以看到

通过api触发 CI

复制最后的crul 命令即可执行自动构建的操作。 当有新代码提交时同样会触发CI操作。

效果

拓展阅读

maven 配置多个仓库

gitlab ci shell script permission denied

Triggering pipelines through the API

Install GitLab Runner

GitLab CI + Docker 实现持续集成

本文地址:H5W3 » GitLab CI + Docker 持续集成操作手册

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址