Jenkins Pipeline实现持续集成

本文详细介绍如何使用Jenkins和Pipeline插件实现项目的自动化构建流程,包括从GitLab拉取代码、测试、代码评审、打包等操作,并通过GitLab webhook实现代码推送自动触发构建。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前段时间学习了一下Jenkins相关的知识,Jenkins这块使用起来需要配置的地方较多。这篇文章主要使用Jenkins的Pipeline实现一个项目的自动化构建流程。开发人员push代码到GitLab,然后自动触发Jenkins的Pipeline,Jenkins先拉取代码,然后进行测试、代码评审(评审结果推送到SonarQube)、打包等相关操作

一、安装和初始化Jenkins

1)、使用Docker安装

docker run \
  -u root -d --name jenkins\
  -p 8080:8080 \
  -v jenkins-data:/var/jenkins_home \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v "$HOME":/home \
  jenkinsci/blueocean:1.15.0

2)、初始化Jenkins

访问http://IP:8080/
在这里插入图片描述
先解锁Jenkins,/var/jenkins_home/secrets/initialAdminPassword文件中的内容为管理员密码

[root@localhost ~]# docker exec -it jenkins /bin/bash
bash-4.4# cat /var/jenkins_home/secrets/initialAdminPassword

解锁成功后,选择安装推荐的插件,等待插件的安装
在这里插入图片描述
插件安装成功后,创建第一个管理员用户
在这里插入图片描述
实例配置这里,使用默认的Jenkins URL即可
在这里插入图片描述
最后点击重启Jenkins
在这里插入图片描述
重启后,使用刚刚创建的用户进行登录

二、配置Jenkins

1)、全局工具配置

在Jenkins主界面左侧选择系统管理,然后选择全局工具配置
在这里插入图片描述
配置JDK:

查看容器中JAVA_HOME位置

bash-4.4# echo $JAVA_HOME
/usr/lib/jvm/java-1.8-openjdk

在这里插入图片描述
安装并配置Maven:

[root@localhost ~]# ls
anaconda-ks.cfg  apache-maven-3.5.3-bin.tar.gz
[root@localhost ~]# docker exec -it jenkins /bin/bash
bash-4.4# mkdir -p /usr/lib/maven
bash-4.4# exit
exit
[root@localhost ~]# docker cp apache-maven-3.5.3-bin.tar.gz jenkins:/usr/lib/maven
[root@localhost ~]# docker exec -it jenkins /bin/bash
bash-4.4# cd /usr/lib/maven/
bash-4.4# ls
apache-maven-3.5.3-bin.tar.gz
bash-4.4# tar -zxf apache-maven-3.5.3-bin.tar.gz 
bash-4.4# cd apache-maven-3.5.3
bash-4.4# pwd
/usr/lib/maven/apache-maven-3.5.3

在这里插入图片描述

三、搭建流水线

1)、基本流程

在系统管理的插件管理中,下载Pipeline插件和Pipeline Maven Integration
在这里插入图片描述在这里插入图片描述
在Jenkins主界面左侧选择新建任务,创建一个流水线任务
在这里插入图片描述
创建完成后,点击该任务,点击设置,输入Pipeline script
在这里插入图片描述

node{
    stage('git clone'){
        checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'bdcdd49a-86ed-426f-b740-fb1606f0b7d0', url: 'http://192.168.126.160:8888/root/jenkins-demo.git']]])
    }
    stage('mvn test'){
        withMaven(maven: 'maven') {
                sh "mvn test"
        }
    }
    stage('mvn build'){
        withMaven(maven: 'maven') {
                sh "mvn clean install -Dmaven.test.skip=true"
        }
    }
}

git clone阶段是从GitLab中拉取代码,点击左下方流水线语法,示例步骤选择checkout,SCM选择Git,输入Repository URL,添加凭据信息,最后点击生成流水线脚本
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

    stage('mvn test'){
        withMaven(maven: 'maven') {
                sh "mvn test"
        }
    }

maven相关的阶段都是使用withMaven,这里必须要安装前面提到的Pipeline Maven Integration这个插件才能使用该语法,maven:后面指定的是配置maven的时候指定的Name

配置完成后,点击保存,任务左侧选择立即构建

构建结果如下图:
在这里插入图片描述
2)、GitLab webhook触发自动构建

Jenkins中下载GitLab插件
在这里插入图片描述
修改任务配置,构建触发器中勾选Build when a change is pushed to GitLab
在这里插入图片描述
点击高级,Secret token的位置点击生成
在这里插入图片描述
然后需要在GitLab中使用系统管理员登陆,在点击上方的Admin Area,在Setting中找到Outbound requests,点击Expand然后勾选Allow requests to the local network from hooks and services
在这里插入图片描述在这里插入图片描述
在打开项目,URL为配置Jenkins构建触发器的时显示的GitLab webhook URL,Secret Token为刚刚Jenkins中生成的token,Trigger勾选的是Push events,然后add webhook
在这里插入图片描述
配置成功后,当push代码的时候就会自动触发该流水线任务
在这里插入图片描述
3)、流水线中添加代码评审

SonarQube安装和基本使用请参考:https://blog.youkuaiyun.com/qq_40378034/article/details/88768136

登录SonarQube,找到配置下的权限选择用户,生成令牌
在这里插入图片描述
输入令牌名称点击生成
在这里插入图片描述
修改流水线脚本:-Dsonar.host.url参数指定的是SonarQube的地址,-Dsonar.login参数指定的是刚刚生成的令牌

node{
    stage('git clone'){
        checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'bdcdd49a-86ed-426f-b740-fb1606f0b7d0', url: 'http://192.168.126.160:8888/root/jenkins-demo.git']]])
    }
    stage('mvn test + sonar'){
        withMaven(maven: 'maven') {
                sh "mvn test verify sonar:sonar -Dsonar.host.url=http://192.168.126.155:9000/ -Dsonar.login=58ababa4d3264d1ae7ed4ca1a1fa6b7c90200269"
        }
    }
    stage('mvn build'){
        withMaven(maven: 'maven') {
                sh "mvn clean install -Dmaven.test.skip=true"
        }
    }
}

这样每次执行流水线任务的时候,就可以在SonarQube中看到代码评审的结果了
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

邋遢的流浪剑客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值