云原生系列2-CICD持续集成部署-GitLab和Jenkins

这篇具有很好参考价值的文章主要介绍了云原生系列2-CICD持续集成部署-GitLab和Jenkins。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、CICD持续集成部署

传统软件开发流程:
1、项目经理分配模块开发任务给开发人员(项目经理-开发)
2、每个模块单独开发完毕(开发),单元测试(测试)
3、开发完毕后,集成部署到服务器(测试、运维)
4、测试出现问题,提交bug,开发继续修复bug(开发)
5、bug修改完毕,继续提交测试....
问题:
1、模块之间依赖负载,集成部署经常出问题
2、测试人员经常在等待
3、按时交付也会出问题
思考:
1、测试时间能否提前(开发一提交代码,问题就能直接暴露出来:自动化测试)
2、人工集成部署 ( 能否使用自动化工具部署构建 )

持续集成:简称 CI
思想:每天要多次将代码合并到主干,并进行集成,测试,这样就可以提早发现错误,进行修正。持续集成也属于DevOps运维开发。
CI持续集成的好处:
1、自动化集成部署,提高了集成效率。
2、更快的修复问题。
3、更快的进行交付。
4、提高了产品质量。
持续集成流程:
云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生
云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生
云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生
DevOps 兴起于2009 年,近年来由于云计算、互联网的发展,促进了DevOps的基础设施及工具链的发展,涌现了一大批优秀的工具,这些工具包括开发,测试,运维的各个领域,例如:GitHub,Git/svn,Docker、Jenkins,HudSon,Ant/Maven/Gradle,QUnit、JMeter等,看下图:
云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生
云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生
这么多软件,按需学习,公司用什么学什么。
测试、部署的逻辑只需要写一遍,就可以自动运行了。
自动化监控平台(短信-)
自动化压测平台

2、GitLab类似github,是个私有仓库

1、GitLab安装,至少8G内存4核cpu

# 查找Gitlab镜像
docker search gitlab/gitlab-ce
# gitlab镜像拉取
docker pull gitlab/gitlab-ce
# 查看镜像
docker images
# 本机先建3个目录,为了gitlab容器通过挂载本机目录启动后可以映射到本机目录
# 配置文件
mkdir -p /home/gitlab/etc
# 数据文件
mkdir -p /home/gitlab/data
# 日志文件
mkdir -p /home/gitlab/logs
# 启动容器 mygitlab,如果不指定--hostname,host默认使用的是容器id访问。
docker run --name mygitlab -d \
--hostname=10.1.1.118 \
-p 4443:443 -p 8888:80 -p 8022:22 \
-v /home/gitlab/etc:/etc/gitlab \
-v /home/gitlab/data:/var/opt/gitlab \
-v /home/gitlab/logs:/var/log/gitlab \
--privileged=true \
gitlab/gitlab-ce:latest
# 动态查看容器日志
docker logs -f mygitlab

配置

# 配置http协议所使用的访问地址,不加端口默认为80
vim /home/gitlab/etc/gitlab.rb  加上下面这一行配置
external_url 'http://10.1.1.118'

/home/gitlab/data/gitlab-rails/etc/gitlab.yml,刚才启动容器指定的--hostname可在此配置文件修改配置

2、网页访问登入,http://10.1.1.118:8888
云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生

# 查看root用户默认密码
cat /home/gitlab/etc/initial_root_password
Password: Gsxzpjm/RwJgHlHIUJIOTFvfYnM19sC2VMPM7NTmCng=

登录成功后,修改密码(默认密码24小时有效)
云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生
3、创建项目
云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生
直接像使用github一样,所有操作都一样。

# 本机需要安装git环境
yum install git -y
git --version

克隆项目

# 全局配置
git config --global user.name "Administrator"
git config --global user.email "admin@example.com"
git config --global credential.helper store  #只需要输入一次账户密码信息就会被保存记住

# 注意点:需要配置端口8888
git clone http://10.1.1.118:8888/root/base-test.git    #有问题可rm -rf base-test删除项目再克隆一次
cd base-test     # 克隆下来后进入这个项目
# 创建一个分支git switch -c main,这里不创建分支main了,使用默认的master主分支
touch README.md    #创建一个项目
git add .      # git add README.md添加这个项目,git add . 添加当前目录下所有项目
git commit -m "update"  # 提交的信息-m "update"
git push -u origin master  #推送到master主分支

云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生
4、设置免密提交
云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生

[root@node1 ~]# ssh-keygen -t rsa -b 4096 -C "admin@example.com"   -t加密类型,-b加密大小,-C用户信息
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:woYgeVBL3AKa5oQ2Rz722JDGPBaLo26Mqd9XNPzYhcQ admin@example.com
The key's randomart image is:
+---[RSA 4096]----+
|o+o+     .       |
|o=O.=     E      |
|*B+/   . . .     |
|*oB.Bo  + . .    |
|.. ..o+.S= .     |
|+.   . .o o      |
|o+     .         |
|o  .  .          |
|... ..           |
+----[SHA256]-----+
[root@node1 ~]# cat /root/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDBm6BA8cjS4bjQKOpvReIE8nHEVTnd9tT25jhcxiQU2Epx190bCe/VVxomYQdIFEeECjPzx3TCLMHHxd5rNFaw9hljJwcQuaODmil5g1LmQRFZqnKoTXc9a5VDtW5CZpyGcgrl8lsE2Bgdh95Bmqta64VOhhc5sLjuSY6X5HQjBOvMmg6WetdlAiUIWp4egTXMXzXqCHfRkLw9opuqQpITpCmUOl94PRNG8eqhHGr0o38c/OJmNKDFXx9ouuuRLUJWvmK+qCsyvMTSGlvw3bKxsFGQA2V+Gn6jCgzrEZI1tZakmhoGw8EvuIViRrAjgre1tfzsO424cGGpRElXBHwhYx10NTX+e6HwZfvRznDuPsvkIQ6TlNIX0CIy2UxN63x4w3ZP3kOa+ZL0XTaGbHcxJZ2GUgYjQrHzSbDQ7cKKqiazl2epukcV+osf19QoVnbsg9uIBMC3t+i28fl+byZoJCpxIF+5ItmsyUq770ryKfaWVMrCYI76tMQHFKVE7rEe/fg6c2RwQxcEPfHOl1UN3nVo82x0HfqtMbDRmUdDMJaCf5X/QIS6oKTg7HosjnRb1XOioPAvr8aF2R5Qa3djkFssIj7BdNTia1lg7AuaGypMRIDohbrNOtkspxmVAyw4UQaqMX5buGYdJa+rBHUOK/UAXzj/EGKQCtmlkXGxFQ== admin@example.com

云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生
云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生

3、Jenkins安装

官网地址:https://www.jenkins.io/zh/
云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生
1、通过Docker安装Jenkins

# 创建挂载目录
mkdir -p /var/jenkins_home
chmod 777 /var/jenkins_home
# 安装jenkinsci/blueocean
docker run \
  -u root \
  -d \
  -p 8080:8080 \
  -p 50000:50000 \
  -v /var/jenkins_home:/var/jenkins_home \
  -v /var/run/docker.sock:/var/run/docker.sock \
  jenkinsci/blueocean

[root@node1 ~]# docker ps
CONTAINER ID   IMAGE                 COMMAND                  CREATED         STATUS         PORTS                                                                                      NAMES
c18bf132384c   jenkinsci/blueocean   "/sbin/tini -- /usr/…"   2 minutes ago   Up 2 minutes   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp, 0.0.0.0:50000->50000/tcp, :::50000->50000/tcp   reverent_gould
[root@node1 ~]# docker logs -f c1   动态查看容器日志

2、网页登入,http://10.1.1.118:8080
查看密码,[root@node1 ~]# cat /var/jenkins_home/secrets/initialAdminPassword
云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生
3、进入插件安装页面,安装插件默认是国外网址,先改成国内网址,再安装推荐的所有插件即可。

/var/jenkins_home/updates/default.json  里面默认是国外网址,插件下载慢
#把 “ www.google.com ”  改成  “ www.baidu.com ”
#全局搜索 “ updates.jenkins-ci.org/download ” 替换成 mirrors.tuna.tsinghua.edu.cn/jenkins
cd /var/jenkins_home/updates
sed -i 's/https:\/\/updates.jenkins-ci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json 
sed -i 's/https:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json

云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生
部分插件安装失败不用管,直接点击继续
云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生
4、插件安装完毕,注册登录账户
云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生
5、配置实例的地址
云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生
云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生
云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生
6、下载更新插件
插件下载慢问题解决,Manage Plugins点击Advanced,把Update Site改为国内插件下载地址
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生
云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生
云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生
云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生
云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生
云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生
云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生
带感叹号!的,说明插件下载完成等待重启安装
云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生
云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生
检查插件配置,比如要使用的gitlab、docker、webhook之类的。没有的话,需要勾选下载,所有插件都更新到最新版本。
云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生
云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生
插件安装完重启,重启容器会挂掉,再启动容器就好了,重启后再次网页登入

[root@node1 updates]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@node1 updates]# docker ps -a
CONTAINER ID   IMAGE                 COMMAND                  CREATED       STATUS                      PORTS     NAMES
c18bf132384c   jenkinsci/blueocean   "/sbin/tini -- /usr/…"   2 hours ago   Exited (5) 31 seconds ago             reverent_gould
[root@node1 updates]# docker start c1

云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生
7、创建流水线工程
云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生
云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生
云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生
云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生

pipeline {
    agent { docker 'maven:3.3.3' }
    stages {
        stage('build') {
            steps {
                sh 'mvn --version'
            }
        }
    }
}

云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生
云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生
云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生
双击进入此页面,右上角可叉掉
云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生
云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生

4、Jenkins使用

Jenkins基本指令,可参照官网学习,https://www.jenkins.io/zh/doc/pipeline/tour/hello-world/
Jenkins Pipeline(或简称为 “Pipeline”)是一套插件,将持续交付的实现和实施集成到 Jenkins 中。持续交付 Pipeline 自动化的表达了这样一种流程:将基于版本控制管理的软件持续的交付到您的用户和消费者手中。
Jenkins Pipeline 提供了一套可扩展的工具,用于将“简单到复杂”的交付流程实现为“持续交付即代码”。Jenkins Pipeline 的定义通常被写入到一个文本文件(称为 Jenkinsfile )中,该文件可以被放入项目的源代码控制库中。
1、创建流水线任务(Hello,Jenkins)
云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生

pipeline {
    agent { docker 'maven:3.3.3'}  // agent定义环境,这里可理解为docker run
    stages {
        stage('Build') { 
            steps {
                // 具体的执行逻辑 shell命令
                sh 'mvn -version'
            }
        }
    }
}

云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生
云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生
云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生
云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生
如果出现了错误,就会出现红色报错。

pipeline {
    agent { docker 'maven:3.3.3'}  // agent定义环境,这里可理解为docker run
    stages {
        stage('Build') { 
            steps {
                // 具体的执行逻辑 shell命令
                sh 'mvn -version'
                sh 'docker version'  //会报错,启动的容器里面没有docker
            }
        }
    }
}

云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生
云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生
2、重试retry、超时timeout
将agent环境修改为any(any是默认的linux环境)

pipeline {
    agent any
    stages {
        stage('Deploy') {   //Deploy部署,不是Build构建了
            steps {
                // 重试,连续执行多次,如果不成功就停止了。
                retry(3){  //重试3次就停止了
                    sh './start.sh'  // 测试脚本
                }
            }
        }
    }
}

云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生

pipeline {
    agent any
    stages {
        stage('Deploy') {   //Deploy部署,不是Build构建了
            steps {
                // 超时,超过预期的时间,就会自动终止。支付、回调等场景。
                timeout(time: 10,unit: 'SECONDS'){  //分钟 MINUTES
                    sh './health-check.sh' // 测试脚本
                }
            }
        }
    }
}

云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生

pipeline {
    agent any
    stages {
        stage('Deploy') {   //Deploy部署,不是Build构建了
            steps {
                // 超时,超过预期的时间,就会自动终止。支付、回调等场景。
                timeout(time: 10,unit: 'SECONDS'){  //分钟 MINUTES
                    sh 'ping www.baidu.com' 
                }
            }
        }
    }
}

云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生
3、钩子函数post,生命周期的函数
pipeline 执行到某个步骤的时候,来做一些事情。

pipeline {
    agent any
    stages {
        stage('Test') { 
            steps {
         		sh 'testfail'  //没有此命令会执行失败
            }
        }
    }
    // 钩子函数,比如执行结果不同,我们可以处理一些善后工作
    post {
    	// 行为
    	always {
    		echo 'always'
    	}
    	success {
            echo 'success'
    	}
    	failure {
    		echo 'failure'
    	}
    	unstable {
    		echo 'unstable'
    	}
    	changed {
    		echo 'changed'
    	}
    }
}

云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生

pipeline {
    agent any
    stages {
        stage('Test') { 
            steps {
         		sh 'echo  11'  //成功执行
            }
        }
    }
    // 钩子函数,比如执行结果不同,我们可以处理一些善后工作
    post {
    	// 行为
    	always {
    		echo 'always'
    	}
    	success {
            echo 'success'
    	}
    	failure {
    		echo 'failure'
    	}
    	unstable {
    		echo 'unstable'
    	}
    	changed {
    		echo 'changed'
    	}
    }
}

云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生
4、定义执行环境agent,将agent环境修改为any(any是默认的linux环境)
agent 指令告诉Jenkins在哪里以及如何执行Pipeline或者Pipeline子集。所有的Pipeline都需要 agent 指令。在执行引擎中,agent 指令会引起以下操作的执行:
1、所有在块block中的步骤steps会被Jenkins保存在一个执行队列中。 一旦一个执行器 executor 是可以利用的,这些步骤将会开始执行。
2、一个工作目录workspace(/var/jenkins_home/workspace) 将会被分配, 工作空间中会包含来自远程仓库的文件和一些用于Pipeline的工作文件。
在Pipeline中可以很容易的运行 Docker 镜像和容器。 Pipeline可以定义命令或者应用运行需要的环境和工具, 不需要在执行代理中手动去配置各种各样的系统工具和依赖。这种方式可以让你使用 Docker容器工具包 中的任何工具。

pipeline {
    agent {
        docker { image 'node:7-alpine' }
    }
    stages {
        stage('Test') {
            steps {
                sh 'node --version'
            }
        }
    }
}

云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生

如果是其他环境,就配置其他的运行镜像即可,默认any(linux环境)。
pipeline{
    agent {
        docker { image '***:version' }
    }
    stages{  
        // 执行步骤
        dockerfile
        dockercompose
        shell
        其他程序相关的命令
        .....
    }
}

5、环境变量environment
全局的环境变量,在所有的 steps 步骤都可以使用。像linux中profile文件、docker --env都是定义环境变量的。很多命令会使用环境变量,可以在这里定义。

pipeline {
    agent any 
    // 环境变量的定义
    environment{
    	DB_ENGINE = 'sqlite'
    	DB_PASSWORD='123456'
    }   
    stages {
        stage('Build') {
            steps {   // 在steps步骤中使用环境变量
                sh 'echo $DB_ENGINE'
                sh 'echo $DB_PASSWORD'
            }
        }
    }
}

云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生
6、多步骤

// 最外层 pipeline
pipeline {
	// agent 环境
    agent any
    // 步骤集合
    stages {
    	// 分步骤
        stage('Build') {  // 构建项目
        	// 具体的步骤
            steps {
                // 具体的执行逻辑 shell命令
                sh 'echo Build'  // Dockerfile、构建相关工作
            }
        }
        
        	// 分步骤
        stage('Test') {  // 测试项目
        	// 具体的步骤
            steps {
                // 具体的执行逻辑 shell命令
                sh 'echo Test'   // shell测试、web测试、压测
            }
        }
        
        // 分步骤
        stage('Deploy') {  // 部署
        	// 具体的步骤
            steps {
                // 具体的执行逻辑 shell命令
                sh 'echo Deploy'   // 访问、集群、liunx
            }
        }
    }
}

云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生
云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生
7、人工确认
通常在阶段之间,特别是不同环境阶段之间,可能需要人工确认是否可以继续运行。 例如,判断应用程序是否在一个足够好的状态可以进入到生产环境阶段。 这可以使用 input 步骤完成。 在下面的例子中,“Sanity check” 阶段会等待人工确认,并且在没有人工确认的情况下不会继续执行。

pipeline {
    agent any
    stages {
  
        stage('Deploy - Staging') {
            steps {
                echo 'curl '
            }
        }

        stage('Sanity check') {
            steps {
            	// 人工确认
                input "Does the staging environment look ok?"
            }
        }

        stage('Deploy - Production') {
            steps {
               echo 'Deploy - Production'
            }
        }
    }
}

云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生
云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生

5、webhook触发器

构建触发器,自动触发构建执行,有一个 webhook 触发器。测试环境关闭防火墙让容器之间互通。
逻辑:提交代码后,jenkins能够自动感知到代码提交了,流水线工程(项目打包,构建镜像,运行容器,测试接口,人工确认,部署上线)就会自动执行。
开发git提交代码push推送到仓库gitlab,仓库gitlab绑定jenkins触发器webhook,jenkins触发器webhook检测到仓库gitlab代码发生变化,会自动执行jenkins的流水线任务(pipeline)。在cicd链上,部署、测试脚本都要提前写好,一次写好,终身运行。
云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生
云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生
jenkins就发出了一个触发器命令,需要gitlab代码仓库那边配置触发
gitlab账户允许配置
云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生
项目中配置webhook
云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生
云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生
云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生
云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生
云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生
云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生
云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生
云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生

6、流水线项目

流水线项目官方文档:https://www.jenkins.io/zh/doc/tutorials/build-a-java-app-with-maven/
1、clone克隆GitHub示例仓库到本地,然后push到自己的gitlab仓库中

git clone https://github.com/jenkins-docs/simple-java-maven-app.git
mv simple-java-maven-app simple-java-maven-app2
git clone http://10.1.1.118:8888/root/simple-java-maven-app.git
cp -r simple-java-maven-app2/* simple-java-maven-app/

cd simple-java-maven-app
git add .
git commit -m "add"
git push -u origin master

云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生
云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生
2、在 jenkins 创建流水线项目 simple-java-maven-app
云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生
云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生
配置绑定git
云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生
添加git仓库登录凭证
云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生
云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生
云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生
云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生
测试构建
云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生
云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生
Docker maven构建很慢,需要配置镜像加速,可以自己定义settings文件,然后识别。
编写一个 settings.xml 放到项目下

<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
  <mirrors>
	<mirror>
      <id>nexus-aliyun</id>  
      <mirrorOf>*,!jeecg,!jeecg-snapshots</mirrorOf>  
      <name>Nexus aliyun</name>  
      <url>http://maven.aliyun.com/nexus/content/groups/public</url>  
    </mirror>
  </mirrors>
</settings>

云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生
云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生
云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生
修改 Jenkinsfile,指定我们自己写的 settings.xml

pipeline {
    agent {
        docker {
            image 'maven:3-alpine'
            args '-v /root/.m2:/root/.m2'
        }
    }
    stages {
        stage('Build') {
        	// 在原来的基础上增加 -gs settings.xml 指定我们的配置
            steps {
                sh 'mvn -B -gs settings.xml -DskipTests clean package'              
            }
        }
    }
}

云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生
提交到远程,再次测试构建
云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生
云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生
开发提交代码后,自动构建并运行测试。
云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生
云原生系列2-CICD持续集成部署-GitLab和Jenkins,云原生文章来源地址https://www.toymoban.com/news/detail-784938.html

到了这里,关于云原生系列2-CICD持续集成部署-GitLab和Jenkins的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Jenkins 持续集成 【CICD】

    持续集成是一种开发实践,它倡导团队成员频繁的集成他们的工作,每次集成都通过自动化构建(包括编译、构建、打包、部署、自动化测试)来验证,从而尽快地发现集成中的错误。让产品可以快速迭代,同时还能保持高质量。 Jenkins是基于Java开发的持续集成工具,开源免

    2024年04月12日
    浏览(36)
  • 持续集成(CICD)- Jenkins+Git+gogs综合实战(笔记一)

    目录续集---- 下面内容见:持续集成(CICD)- Jenkins+Git+gogs综合实战(笔记二) 七、拉取代码 方法一:直接填写命令进行拉取(不建议用这种) 方法二:使用源码管理拉取代码 步骤一:确认环境(检查自己是否有Git插件) 步骤二:构建项目时对项目的源码管理选择 Git 步骤三

    2024年03月12日
    浏览(46)
  • 持续集成交付CICD:Jenkins Pipeline与远程构建触发器

    目录 一、实验 1.Jenkins Pipeline本地构建触发器 2.Jenkins Pipeline与远程构建触发器(第一种方式) 3.Jenkins Pipeline与远程构建触发器(第二种方式) 4.Jenkins Pipeline与远程构建触发器(第三种方式) 二、问题 1.pipeline插件依赖安装报错 2.控制台输出环境变量名冲突 3.并行构建job存在

    2024年02月03日
    浏览(43)
  • 持续集成交付CICD:Jenkins流水线实现Nexus制品晋级策略

    目录 一、理论 1.开发测试运维环境 二、实验 1.Nexus制品晋级策略 (1)开发测试运维环境 (1)环境 表1 主机 主机 架构 版本 IP 备注 jenkins jenkins主节点       2.414.2 192.168.204.15:8080  gitlab runner (从节点) gitlab gitlab 主节点        12.10.14 192.168.204.8:82   jenkins slave (从节

    2024年02月04日
    浏览(45)
  • Jenkins结合gitlab自动化持续集成

    大家好,我是自动化测试老司机~ 最近在公司有负责搭建自动化测试环境,自动化脚本写好后,毋庸置疑是需要将自动化脚本进行持续集成测试,能够根据企业的定制化需求,通过Jenkins触发执行构建任务,定时执行自动化脚本等,今天就给大家介绍一下Jenkins结合gitlab进行自动

    2024年02月11日
    浏览(56)
  • 从零开始配置Jenkins与GitLab集成:一步步实现持续集成

    在软件开发中,持续集成是确保高效协作和可靠交付的核心实践。以下是在CentOS上安装配置Jenkins与GitLab集成的详细步骤: 1.安装JDK 解压JDK安装包并设置环境变量: JDK下载网址 Java Downloads | Oracle 台灣 2.安装Jenkins: 添加Jenkins仓库,安装Jenkins并修改运行用户和监听端口: 3. 配

    2024年02月11日
    浏览(42)
  • 【Jenkins】持续集成与交付 (六):Gitlab代码托管服务安装

    💖The Begin💖点点关注,收藏不迷路💖

    2024年04月28日
    浏览(38)
  • k8s部署gin-vue-admin框架、gitlab-ci、jenkins pipeline 、CICD

    测试环境使用的jenkins 正式环境使用的gitlab-ci 创建yaml文件 启动服务 配置jenkins 配置nginx jenkins机器上的dockerfile yaml其它都一样除了svc,因为svc需要绑定slb地址 启动 配置dockerfile 配置nginx 结果图 原文

    2024年02月08日
    浏览(51)
  • git视频教程Jenkins持续集成视频教程Git Gitlab Sonar教程

    @[TOC这里写自定义目录标题) https://edu.51cto.com/lesson/290903.html 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标

    2024年02月11日
    浏览(40)
  • 【云原生 • DevOps】一文掌握持续集成工具 Jenkins

    目录 一、持续集成工具 Jenkins 介绍 1. 什么是持续集成 2. Jenkins 介绍 二、Jenkins 的安装与部署 1. 安装 Jenkins 2. 本地访问 Jenkins 3. 插件的安装 4. 卸载 Jenkins 三、Jenkins 全局配置 1. Git 的安装与配置 2. JDK 的安装与配置 3. maven 的安装与配置 三、将代码上传至 Git 服务器 1. Gogs 的搭

    2024年02月03日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包