概述
在传统软件的开发中,代码的集成工作通常是在所有人都将工作完成后在项目即将结束进行时,而这往往会花费大量的时间和精力。而持续集成是一种将集成阶段放在软件开发阶段的做法,以便更加有规律地构建,测试和集成代码。
“持续集成并不能消除 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
代码语言:javascript复制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
配置环境变量
代码语言:javascript复制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,
代码语言:javascript复制gitlab-ci-multi-runner register
根据提示输入对应2 、3中的url和token
设置成功可以看到
通过api触发 CI
复制最后的crul 命令即可执行自动构建的操作。 当有新代码提交时同样会触发CI操作。