基于 Jenkins 搭建一套 CI/CD 系统

这篇具有很好参考价值的文章主要介绍了基于 Jenkins 搭建一套 CI/CD 系统。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、CI/CD环境介绍

基于 Jenkins 搭建一套 CI/CD 系统,jenkins,ci/cd,运维

本次要实现如下效果,开发人员完成功能开发并提交代码到gitlab仓库,jenkins自动完成拉取代码、编译构建、代码扫描(sonarqube)、打包,再自动化完成部署到Tomcat服务器提供访问。

环境准备三台Centos7.6机器:

服务器 IP地址 配置 包含功能及版本
Gitlab 192.168.220.170 2核2G Gitlab:12.4.2 (393a5bdafa2)
Jenkins 192.168.220.172 2核2G

Jenkins:2.364

Maven:3.8.6

Sonarqube:7.9.6 (build 41879)

JDK:11.0.16

Git:1.8.3.1

Tomcat 192.168.220.173 2核2G

Tomcat:8.5.82

JDK:1.8.0_342

部署过程中踩过不少坑,这套Jenkins因为需要安装较多插件,而Jenkins上的插件版本要求比较严格,所以最好实验情况下直接安装最新的Jenkins版本,这样上面的插件基本都能安装,包括Pipeline、gitlab、SSH Server等。不然遇到Jenkins插件安装不顺畅对新人挺麻烦的。

Jenkins安装最新版,那JDK也必须11以上,那也就要求sonarqube也得7.8以上,三者之间都是有依赖关系的。

看下效果:

基于 Jenkins 搭建一套 CI/CD 系统,jenkins,ci/cd,运维

自动git拉取代码:

基于 Jenkins 搭建一套 CI/CD 系统,jenkins,ci/cd,运维

maven自动构建:

基于 Jenkins 搭建一套 CI/CD 系统,jenkins,ci/cd,运维

sonarqube自动扫描:

基于 Jenkins 搭建一套 CI/CD 系统,jenkins,ci/cd,运维

自动部署:

基于 Jenkins 搭建一套 CI/CD 系统,jenkins,ci/cd,运维

sonarqube扫描结果:

基于 Jenkins 搭建一套 CI/CD 系统,jenkins,ci/cd,运维

二、CI/CD平台搭建

1)安装gitlab

1. 安装相关依赖
yum -y install policycoreutils openssh-server openssh-clients postfix
2. 启动ssh服务&设置为开机启动
systemctl enable sshd && sudo systemctl start sshd
3. 设置postfix开机自启,并启动,postfix支持gitlab发信功能
systemctl enable postfix && systemctl start postfix
4. 开放ssh以及http服务,然后重新加载防火墙列表
firewall-cmd --add-service=ssh --permanent
firewall-cmd --add-service=http --permanent
firewall-cmd --reload
如果关闭防火墙就不需要做以上配置
5. 下载gitlab包,并且安装
在线下载安装包:
wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el6/gitlab-ce-12.4.2-ce.0.el6.x
86_64.rpm
安装:
rpm -i gitlab-ce-12.4.2-ce.0.el6.x86_64.rpm
6. 修改gitlab配置
vi /etc/gitlab/gitlab.rb
修改gitlab访问地址和端口,默认为80,我们改为82
external_url 'http://192.168.220.170:82'
nginx['listen_port'] = 82
7. 重载配置及启动gitlab
gitlab-ctl reconfigure
gitlab-ctl restart
8. 把端口添加到防火墙
firewall-cmd --zone=public --add-port=82/tcp --permanent
firewall-cmd --reload
启动成功后,看到以下修改管理员root密码的页面,修改密码后,然后登录即可

基于 Jenkins 搭建一套 CI/CD 系统,jenkins,ci/cd,运维

添加组、创建用户、创建项目

基于 Jenkins 搭建一套 CI/CD 系统,jenkins,ci/cd,运维

基于 Jenkins 搭建一套 CI/CD 系统,jenkins,ci/cd,运维

这样用户zhangsan就拥有了itheima_group组的权限。接下来使用zhangsan用户进入组创建一个新的项目,项目名称:hello_demo

基于 Jenkins 搭建一套 CI/CD 系统,jenkins,ci/cd,运维

该项目仓库地址是:

http://192.168.220.170:82/itheima_group/hello-demo.git

git@192.168.220.170:itheima_group/hello-demo.git

接下来将本地的maven工程代码上传到gitlab仓库,上传成功后如下:

基于 Jenkins 搭建一套 CI/CD 系统,jenkins,ci/cd,运维

到这gitlab就准备好了!

2)安装jenkins

1)安装JDK
Jenkins需要依赖JDK,所以先安装JDK11
yum install -y java-11-openjdk*
安装目录为:/usr/lib/jvm
2)获取jenkins安装包
wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo --no-check-certificate
rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key
yum install jenkins
3)启动Jenkinssystemctl start jenkins
4)打开浏览器访问
http://192.168.220.172:8080
注意:本服务器把防火墙关闭了,如果开启防火墙,需要在防火墙添加端口
5)获取并输入admin账户密码
cat /var/lib/jenkins/secrets/initialAdminPassword
6)跳过插件安装
因为Jenkins插件需要连接默认官网下载,速度非常慢,而且经过会失败,所以我们暂时先跳过插件安装

第二种安装:

 Jenkins本地安装:下载jenkins.war包,放在tomcat的webapps下,运行tomcat。

Jenkins安装完成后,需要替换插件更新源:需要执行以下步骤:

sed -i 's/https:\/\/updates.jenkins.io\/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

在Manage Jenkins -- Plungin Manager -- Update Site:将url替换为清华大学的url:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

基于 Jenkins 搭建一套 CI/CD 系统,jenkins,ci/cd,运维

提交后,在浏览器输入:http://192.168.220.172.:8080/restart重启jenkins生效。

Jenkins准备好后,就是与gitlab集成,完成代码自动拉取的动作了。但是需要先准备如下:

安装Credentials Binding插件

要在Jenkins使用凭证管理功能,需要安装Credentials Binding插件,拉取gitlab代码需要使用凭证的方式拉取:

基于 Jenkins 搭建一套 CI/CD 系统,jenkins,ci/cd,运维

再去添加gitlab认证的凭证:

基于 Jenkins 搭建一套 CI/CD 系统,jenkins,ci/cd,运维

还要再jenkins服务器上安装git工具和git插件:

基于 Jenkins 搭建一套 CI/CD 系统,jenkins,ci/cd,运维

基于 Jenkins 搭建一套 CI/CD 系统,jenkins,ci/cd,运维

在jenkins上准备一个项目:

基于 Jenkins 搭建一套 CI/CD 系统,jenkins,ci/cd,运维

基于 Jenkins 搭建一套 CI/CD 系统,jenkins,ci/cd,运维

到这里,jenkins拉取gitlab代码的准备条件都ok了。开始与gitlab集成吧。

基于 Jenkins 搭建一套 CI/CD 系统,jenkins,ci/cd,运维

保存,然后回到项目点“Build Now”:

基于 Jenkins 搭建一套 CI/CD 系统,jenkins,ci/cd,运维

基于 Jenkins 搭建一套 CI/CD 系统,jenkins,ci/cd,运维

如上图,jenkins自动去gitlab拉取代码,并且将代码工程放在如上路径下:

基于 Jenkins 搭建一套 CI/CD 系统,jenkins,ci/cd,运维

好了,到这里说明jenkins已经安装成功了,也安装了相关的插件和配置了jenkins的基本配置,并且完成了与gitlab的集成,完成构建自动触发代码拉取到本地。

3)部署Tomcat服务器

把Tomcat压缩包上传到192.168.66.102服务器
yum install java-1.8.0-openjdk* -y #安装JDK(已完成)
tar -xzf apache-tomcat-8.5.47.tar.gz #解压
mkdir -p /opt/tomcat #创建目录
mv /root/apache-tomcat-8.5.47/* /opt/tomcat #移动文件
/opt/tomcat/bin/startup.sh #启动tomcat

 

注意:服务器已经关闭了防火墙,所以可以直接访问Tomcat啦,地址为:http://192.168.66.102/8080

基于 Jenkins 搭建一套 CI/CD 系统,jenkins,ci/cd,运维

基于 Jenkins 搭建一套 CI/CD 系统,jenkins,ci/cd,运维

tomcat已经部署成功!

4)配置jenkins与tomcat集成,完成CD持续部署功能

同样的,也是需要在jenkins上做大量的配置:

Maven安装和配置

tar -xzf apache-maven-3.6.2-bin.tar.gz #解压
mkdir -p /opt/maven #创建目录
mv apache-maven-3.6.2/* /opt/maven #移动文件

配置环境变量

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
export MAVEN_HOME=/opt/maven
export PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin

Jenkins全局工具配置,关联JDK和Maven

基于 Jenkins 搭建一套 CI/CD 系统,jenkins,ci/cd,运维

基于 Jenkins 搭建一套 CI/CD 系统,jenkins,ci/cd,运维

添加Jenkins全局变量

基于 Jenkins 搭建一套 CI/CD 系统,jenkins,ci/cd,运维

准备好后,来测试Maven构建是否生效,还是用刚刚的项目:hello_web

基于 Jenkins 搭建一套 CI/CD 系统,jenkins,ci/cd,运维

基于 Jenkins 搭建一套 CI/CD 系统,jenkins,ci/cd,运维

基于 Jenkins 搭建一套 CI/CD 系统,jenkins,ci/cd,运维

可以看到,项目构建成功。可以去服务器上看到war包已经生成。

基于 Jenkins 搭建一套 CI/CD 系统,jenkins,ci/cd,运维

war可以自动编译,还差自动部署了,有需要配置一些步骤:

安装 Deploy to container插件

基于 Jenkins 搭建一套 CI/CD 系统,jenkins,ci/cd,运维

添加Tomcat凭证

基于 Jenkins 搭建一套 CI/CD 系统,jenkins,ci/cd,运维

jenkins项目配置构建后操作

基于 Jenkins 搭建一套 CI/CD 系统,jenkins,ci/cd,运维

基于 Jenkins 搭建一套 CI/CD 系统,jenkins,ci/cd,运维

保存配置,点“Build Now”:

基于 Jenkins 搭建一套 CI/CD 系统,jenkins,ci/cd,运维

基于 Jenkins 搭建一套 CI/CD 系统,jenkins,ci/cd,运维

可以看到项目成功部署,可以正常访问。文章来源地址https://www.toymoban.com/news/detail-839228.html

到了这里,关于基于 Jenkins 搭建一套 CI/CD 系统的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • CI/CD持续集成持续发布(jenkins)

            在实际开发中,我们经常要一边开发一边测试,当然这里说的测试并不是程序员对自己代码的单元测试,而是同组程序员将代码提交后,由测试人员测试; 或者前后端分离后,经常会修改接口,然后重新部署; 这些情况都会涉及到频繁的打包部署; 手动打包常规步

    2024年02月14日
    浏览(68)
  • jenkins容器内CI/CD 项目失败问题

    1.1 原因:jenkins容器内: docker.sock 权限 1.2 问题解决方案 文件权限如下: srw-rw---- 1 root 994 0 Jun 30 06:51 docker.sock 进行权限修改 最终权限修改成功为:srw-rw-rw- 1 root root 0 Jun 30 06:51 docker.sock 2.1 问题原因 项目为前端vue,依赖于nodejs 和 npm, 需要为容器安装npm, nodejs 2.2 问题解决方

    2024年02月13日
    浏览(49)
  • docker部署Jenkins(Jenkins+Gitlab+Maven实现CI/CD)

          GitLab是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的Web服务,可通过Web界面进行访问公开的或者私人项目。它拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释。       GitLab是由GitLabInc.开发,使用MIT许可证的基于

    2024年02月03日
    浏览(46)
  • gitlab+jenkins+harbor实现CI/CD(2)——初级

    git安装 jenkins主机上安装docker-ce 配置仓库证书 测试 创建项目 创建一个freestyle project 在jenkins主机获取密钥 在gitlab上传公钥 在jenkins上传私钥 输入测试命令后保存 点击立即构建 查看控制台输出 工作路径 构建触发器,定时触发 安装插件 gitlab和 Cloudbee docker 配置gitlab 在网络设

    2024年02月09日
    浏览(51)
  • Jenkins CI/CD 持续集成专题三 Jenkins 使用shell脚本打包组件配置流程

    第六步 查看编译状态和产物 到这里,jenkins 配置shell脚本打包组件的完整配置流程就已经完成

    2024年04月29日
    浏览(58)
  • 基于SNAT+DNAT发布内网K8S及Jenkins+gitlab+Harbor模拟CI/CD的综合项目

    目录 项目名称 项目架构图 项目环境 项目概述 项目准备 项目步骤 一、修改每台主机的ip地址,同时设置永久关闭防火墙和selinux,修改好主机名,在firewalld服务器上开启路由功能并配置snat策略。 1. 在firewalld服务器上配置ip地址、设置永久关闭防火墙和selinux,并修改好主机名

    2024年02月09日
    浏览(57)
  • nodejs前端项目的CI/CD实现(二)jenkins的容器化部署

    docker安装jenkins,可能你会反问,这太简单了,有什么好讲的。 我最近就接手了一个打包项目,它是一个nodejs的前端项目,jenkins已在容器里部署且运行OK。 但是,前端组很追求新技术,不断地升级Nodejs的版本,之前是14,现在需要升级到16。 也就是说,原本运行顺畅的打包不

    2024年01月20日
    浏览(54)
  • Rancher2.7 + Jenkins CI/CD全流程保姆级最佳实践

    CI方面,官方推荐的视频教程等多是使用极狐Gitlab CI,但社区版极狐每月仅400分钟构造时间,额外购买价格为1000分钟/68元,而私有化部署极狐Gitlab对比部署使用Jenkins,具有更高的成本、更狭窄的适用面,且如果个人使用其代码仓库功能,并不比Gitee可靠。 Gitee 同样提供CI服务

    2024年02月05日
    浏览(82)
  • [Docker实现测试部署CI/CD----Jenkins集成相关服务器(3)]

             SonarScanner 是一种代码扫描工具,专门用来扫描和分析项目代码质量。扫描和分析完 成之后,会将结果写入到 SonarQube 服务器的数据库中,并在 SonarQube 平台显示这些数 据。         在 SonarQube 官网的帮助文档中可以下载 SonarScanner。这里下载一个 Linux 系统下使

    2024年02月14日
    浏览(43)
  • Jenkins分布式实现: 构建弹性和可扩展的CI/CD环境!

    Jenkins是一个流行的开源持续集成(Continuous Integration,CI)和持续交付(Continuous Delivery,CD)工具,它通过自动化构建、测试和部署过程,帮助开发团队更高效地交付软件。Jenkins的分布式实现允许将任务分散到多个计算机上执行,从而提高系统的弹性和可扩展性。本文将深入

    2024年02月01日
    浏览(63)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包