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

简介: 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

root@a9431b/e9ea2:/home/gitab-runner/bullds/1aAWVY02/0/11angpeng/gitlab-monitor# root@a9431b7e9ea2:/home/gitlab-runner/builds/iaAWVYo2/0/jiangpeng/gitlab-monitor#
ootea0431b7o0oa2:/home/gitlabrunner/builds/iaAwVYo2/0/jiangpeng/gitlab-monitor# mvn -v pache Maven 3.6.3(cecedd343002696d0abb50b32b541b8a6ba2883f) laven home:/opt/apache-maven-3.6.3
ava version: 1.8.0 201, vendor:Oracle Corporation, runtime: /opt/jdk1.8.0 201/jre efault locale: en us, platfonm encoding: ANSI X3.4-1968
S nama: "linly" version:"31AA-693.21.1.el7.x86 64", arch: "amd64", family: "unix" 
root@a9431b7e9ea2:/home/gitlab-runner/builds/iaAWVYo2/0/jiangpeng/gitlab-monitor# java -version ava version "1.8.0 201"
Java(TM) sE Runtime Environment (build 1.8.0 201-b09)
Java HotSpot(TM)64-Bit Server vM (build 25.201-b09, mixed mode)
root@a9431b7e9ea2:/home/gitlab-runner/builds/iaAWVYo2/0/jiangpeng/gitlab-monitor#

项目如何使用CI

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

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

3d13d768317732df84ca4a436689153.png

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"]
复制代码
root@a9431b7e9ea2:/home/gitlab-runner/builds/iaAWVYo2/0/jiangpeng/gitlab-monitor# /etc/gitlab-runner/config.toml  
concurrent =1
check interval =日
[session server]
session timeout =1800
[[runners]]
name = "docker p^H^H^H"
url ="http://git.scm.ppmoney.com/' token="iaAWVYo2-xZ62Lg66BFU' executor = "shell"
runners.custom build dir][runners.docker]
tls verify = false image = "latest" privileged = true
disable cache = false volumes = ["/cache".[runners.cache]
[runners.cache.s3][runners.cache.gcs]

GitLab 配置运行 CI 的runner

53beb1466e0aecc9a91b3fe8bd37780.png

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

fd642c0080801508dc0e8ee2663c0ac.png

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

gitlab-ci-multi-runner register
复制代码

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

root@a9431b7e9ea2:/home/gitlab-runner/builds/iaAWVYo2/0/jiangpeng/gitlab-monitor#gitlab-cimulti-runner register
Runtime platform  arch=amd64 0s=linux p1d=344 revision=4c96e5ad version=12.9.0  
Running in system-mode.
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):

设置成功可以看到

858021e2b5f4bd3b50c748c494a21f0.png

通过api触发 CI

6f38d35a7a816332c870953768c93a3.png

cad6b5572f94d927cb5adc8e30c508d.png

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

效果

f521d039d85dbfac4dadc093f991516.png

f16b53c08841166a3aa855dc40502dd.png

拓展阅读

maven 配置多个仓库

gitlab ci shell script permission denied

Triggering pipelines through the API

Install GitLab Runner

GitLab CI + Docker 实现持续集成

目录
相关文章
|
2月前
|
Java Maven Docker
gitlab-ci 集成 k3s 部署spring boot 应用
gitlab-ci 集成 k3s 部署spring boot 应用
|
27天前
|
存储 测试技术 持续交付
Docker与CI/CD的集成策略及其对软件开发效率和质量的提升作用
本文探讨了Docker与CI/CD的集成策略及其对软件开发效率和质量的提升作用。首先介绍了CI/CD的基本概念,接着阐述了Docker在环境一致性、快速部署、资源隔离和轻量化方面的优势。文章还详细讨论了构建、测试和部署阶段的具体集成方法,以及集成后带来的效率提升、可靠性增强、加速交付和易于管理等好处。最后,通过案例分析展示了集成的实际效果,强调了Docker与CI/CD结合的重要性和未来前景。
42 2
|
2月前
|
缓存 监控 数据可视化
利用GitLab CI/CD自动化您的软件开发流程
【10月更文挑战第10天】GitLab CI/CD 是 GitLab 内置的持续集成和持续部署工具,通过编写 .gitlab-ci.yml 文件,可以自动化构建、测试和部署应用程序的过程。本文介绍 GitLab CI/CD 的核心优势、实施步骤及在现代开发中的应用,帮助您提高开发效率和软件质量。
|
2月前
|
jenkins Shell 持续交付
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图(二)
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图(二)
83 0
|
2月前
|
JavaScript 测试技术 持续交付
使用 GitLab CI/CD 管道自动化部署 Web 应用
【10月更文挑战第2天】使用 GitLab CI/CD 管道自动化部署 Web 应用
88 0
|
2月前
|
jenkins Shell 持续交付
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图(一)
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图(一)
252 0
|
3月前
|
Docker 容器
Docker安装Gitlab和Gitlab-Runner并实现项目CICD
Docker安装Gitlab和Gitlab-Runner并实现项目CICD
|
4月前
|
JavaScript jenkins 持续交付
自动化部署与持续集成:使用Jenkins和Docker优化开发流程
【8月更文挑战第31天】在软件开发的世界里,时间就是一切。本文将引导你通过Jenkins和Docker的强大组合,实现自动化部署和持续集成,让你的开发流程如丝般顺滑。我们将从基础设置开始,逐步深入到构建管道,最终实现一键部署的梦想。准备好让你的开发效率飞跃,一起探索这个令人兴奋的旅程吧!
|
4月前
|
jenkins 持续交付 开发工具
Jenkins 与 Docker 集成的最佳实践
【8月更文第31天】随着容器技术的兴起,越来越多的团队开始采用 Docker 来构建和部署应用。Docker 提供了一种轻量级的虚拟化方法,使得应用可以在任何地方以相同的方式运行,这极大地提高了开发效率和部署的一致性。与此同时,Jenkins 作为一种广泛使用的持续集成/持续交付(CI/CD)工具,可以帮助团队自动化构建、测试和部署流程。本文将探讨如何将 Docker 与 Jenkins 集成,以简化开发环境的搭建和维护。
398 0
|
1月前
|
消息中间件 监控 Java
您是否已集成 Spring Boot 与 ActiveMQ?
您是否已集成 Spring Boot 与 ActiveMQ?
53 0

热门文章

最新文章