CI-CD(Jenkins持续集成、部署、发布)

文章目录

  • 一、CI-CD介绍
  • 二、基础环境部署
    • 1、部署Gitlab
    • 2、部署JDK、Maven
    • 3、部署Jenkins
    • 4、部署Git
  • 三、配置环境
    • 1、Jenkins基础环境及插件配置
      • 1.1、Jenkins全局工具配置
      • 1.2、Jenkins邮件配置
      • 1.3、Jenkins插件下载
      • 1.4、Jenkins SSH系统配置
    • 2、Jenkins配置Maven项目


一、CI-CD介绍

CI ,CD是什么?
CI,CD就是持续集成,持续交付,持续部署的简写,开发团队通过软件交付流水线(Pipeline)实现自动化,以缩短交付周期,大多数团队都有自动化流程来检查代码并部署到新环境。

  • 持续集成:将各个开发人员的工作集合到一个代码仓库中。通常,每天都要进行几次,主要目的是尽早发现集成错误,使团队更加紧密结合,更好地协作。

  • 持续交付:目的是最小化部署或释放过程中固有的摩擦。它的实现通常能够将构建部署的每个步骤自动化,以便任何时刻能够安全地完成代码发布。

  • 持续部署:一种更高程度的自动化,无论何时对代码进行重大更改,都会自动进行构建和部署。

二、基础环境部署

IP 服务
10.10.110.1 后端服务器
10.10.110.2 Gitlab
10.10.110.3 Jenkins,Git,Maven,Jdk

1、部署Gitlab

清华源镜像站
gitlab安装使用文档

[xiaobai@cicd] yum -y install curl wget policycoreutils openssh-server openssh-clients postfix policycoreutils-python
[xiaobai@cicd] systemctl start sshd postfix
[xiaobai@cicd] systemctl enable sshd postfix

#配置yum源下载gitlab,也可以wget下载
[xiaobai@cicd] vim /etc/yum.repos.d/gitlab.repo
[gitlab-ce]
name=Gitlab CE Repository
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/
gpgcheck=0
enabled=1

#下载gitlab
[xiaobai@cicd] yum makecache
[xiaobai@cicd] yum -y install gitlab-ce

#修改gitlab配置文件,修改的内容,配置文件里有的注释打开修改,没有的添加
[xiaobai@cicd] vim /etc/gitlab/gitlab.rb
external_url 'http://ip:端口' #这里写IP或域名,默认80,前面的http://不要删
gitlab_rails['time_zone'] = 'Asia/Shanghai'

git_data_dirs({
  "default" => {
    "path" => "/mnt/nfs-01/git-data"  #数据路径,可以更改
   }
})

gitlab_rails['gitlab_shell_ssh_port'] = 22



#更改完后加载gitlab配置
[xiaobai@cicd] gitlab-ctl reconfigure
#查看状态
[xiaobai@cicd] gitlab-ctl status
#我这里启动后,这个grafana服务始终是关闭的,用下面的命令查看日志
[xiaobai@cicd] gitlab-ctl tail
#查看日志发现默认端口3000被占用了,重新编写配置文件
external_url 'http://ip' #不写端口,只写ip
nginx['listen_port'] = 9091 #端口号写9090以后的
gitlab_rails['time_zone'] = 'Asia/Shanghai'

git_data_dirs({
  "default" => {
    "path" => "/mnt/nfs-01/git-data"  #数据路径,可以更改
   }
})

grafana['http_port'] = 9095 #端口号写9090以后的

#更改完后加载gitlab配置
[xiaobai@cicd] gitlab-ctl reconfigure
#再次查看发现都启动成功没有问题
[xiaobai@cicd] gitlab-ctl status

CI-CD(Jenkins持续集成、部署、发布)_第1张图片

启动成功,访问gitlab,如果是启动时没有问题的就输入external_url里写的IP+端口。启动有问题,配置了nginx[‘listen_port’]的就写external_url中的IP加nginx[‘listen_port’]的端口

CI-CD(Jenkins持续集成、部署、发布)_第2张图片

CI-CD(Jenkins持续集成、部署、发布)_第3张图片

点击Register后再次自动跳转回登录页面,使用刚才创建的账号登录,登录时报下面错误,去用管理员账号授权就OK了

Your account is pending approval from your GitLab administrator and hence blocked. Please contact your GitLab administrator if you think this is an error.

管理员密码在/etc/gitlab/initial_root_password 中,也可以在/etc/gitlab/gitlab.rb中自行设置gitlab_rails[‘initial_root_password’]。注意,一但更改/etc/gitlab/gitlab.rb这个配置文件,就要使用gitlab-ctl reconfigure这个命名使其生效

CI-CD(Jenkins持续集成、部署、发布)_第4张图片
CI-CD(Jenkins持续集成、部署、发布)_第5张图片
CI-CD(Jenkins持续集成、部署、发布)_第6张图片
设置完毕后再次使用刚才注册的用户就可以登录了

如果你的gitlab总是自动关闭,执行下面语句

#执行此操作就好了
[xiaobai@cicd] /opt/gitlab/embedded/bin/runsvdir-start 

2、部署JDK、Maven


喜欢自己找包下载的小伙伴来这里
Java8下载地址
Maven下载地址


不喜欢自己找包的小伙伴直接来提取就好了
jdk1.8安装包提取码:LWXB
maven3.6.3安装包提取码:LWXB


#安装的java8以上的版本
[xiaobai@cicd] tar xzvf jdk-8u111-linux-x64.tar.gz -C /usr/local
[xiaobai@cicd] cd /usr/local/
[xiaobai@cicd local] mv jdk1.8.0_111 java

#配置java环境变量
[xiaobai@cicd local] vim /etc/profile.d/java.sh
export JAVA_HOME=/usr/local/java
CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$PATH:$JAVA_HOME/bin

[xiaobai@cicd local] source /etc/profile
[xiaobai@cicd local] java -version
openjdk version "1.8.0_272"
OpenJDK Runtime Environment (build 1.8.0_272-b10)
OpenJDK 64-Bit Server VM (build 25.272-b10, mixed mode)

#安装Maven
[xiaobai@cicd local] cd java
[xiaobai@cicd java] wget https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
[xiaobai@cicd java] tar xzvf apache-maven-3.6.3-bin.tar.gz
[xiaobai@cicd java] mv apache-maven-3.6.3 maven

#配置Maven环境变量
[xiaobai@cicd java] vim /etc/profile.d/maven.sh
export JAVA_HOME=/usr/local/java
export MAVEN_HOME=/usr/local/java/maven
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin

[xiaobai@cicd java] cd
[xiaobai@cicd] source /etc/profile
[xiaobai@cicd] mvn -v
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: /data/java/maven
Java version: 1.8.0_111, vendor: Oracle Corporation, runtime: /data/java/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "x.xx.x-xxx.xx.x.elx_x.xxx_xx", arch: "amdxx", family: "unix"

3、部署Jenkins

#外网环境下
[xiaobai@cicd] wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
ERROR: cannot verify pkg.jenkins.io's certificate, issued by ‘/C=US/O=Let's Encrypt/CN=R3’:
  Issued certificate has expired.
To connect to pkg.jenkins.io insecurely, use --no-check-certificate.
#如果报这样的错误就在wget后面加上--no-check-certificate再执行一遍就好

[xiaobai@cicd] rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
[xiaobai@cicd] yum install -y jenkins
#jenkins的配置文件 /etc/sysconfig/jenkins

#需要修改的修改配置文件,然后后加载daemon
[xiaobai@cicd] systemctl daemon-reload
[xiaobai@cicd] systemctl start jenkins
[xiaobai@cicd] systemctl status jenkins
Jan 07 09:43:58 miguan1 jenkins[36067]: Starting Jenkins File "/usr/bin/java" is not executable.
Jan 07 09:43:58 miguan1 jenkins[36067]: [FAILED]
Jan 07 09:43:58 miguan1 systemd[1]: jenkins.service: control process exited, code=exited status=1
Jan 07 09:43:58 miguan1 systemd[1]: Failed to start LSB: Jenkins Automation Server.
-- Subject: Unit jenkins.service has failed
#启动jenkins报上述错误,去到/etc/init.d/jenkins文件里配置自己的java的目录
candidates="
......
/usr/local/java/bin/java
"
#在candidates中的最后添加自己的java路径就好

内网环境下,拉取不到jenkins.repo的小伙伴不要急,执行如下操作
jenkins.war包下载地址,在有外网的地方下载下来war包上传到内网的机器上。注意,下载下来的后缀可能是zip结尾的,传到服务器上要改成war结尾的启动

[xiaobai@cicd] mv jenkins.zip jenkins.war
[xiaobai@cicd] java -jar jenkins.war --httpPort=8080    #启动
#这个命令启动的时候会有一串密码输出出来,记住这串密码,这是你登录jenkins的密码

输入IP+端口访问Jenkins页面
CI-CD(Jenkins持续集成、部署、发布)_第7张图片
系统命令启动的jenkins密码如图,使用如下命令找到密码。war包启动的jenkins密码则在启动时输出的一串字符串里

[xiaobai@cicd] cat /var/lib/jenkins/secrets/initialAdminPassword

CI-CD(Jenkins持续集成、部署、发布)_第8张图片
选择安装推荐的插件(后续可以拓展,安装完成后会让你创建一个新用户,也可以继续使用admin登录,创建好后就进入了Jenkins,安装插件大部分人会失败,先不用管它,可以自己下载到本地插件放到~/.jenkins目录下,这个目录只不包括war包启动的用户,也可以进入Jenkins后更换下载插件的站点,具体去系统管理,插件管理,高级最下面有个升级站点)


通往Jenkins自定义安装插件的时空隧道


CI-CD(Jenkins持续集成、部署、发布)_第9张图片
注意:升级Jenkins时一定要先停止Jenkins服务

#系统命令启动的用户可以直接用如下命令更新Jenkins版本
[xiaobai@cicd] systemctl stop jenkins
[xiaobai@cicd] yum -y update jenkins
[xiaobai@cicd] systemctl start jenkins
#也可以自己下载war上传到Jenkins的目录下重启即可

4、部署Git

Git要和Jenkins在同一台机器上,Jenkins要去Gitlab上用Git拉取项目
git2.18安装包提取码:LWXB

[xiaobai@cicd] wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.18.0.tar.gz
[xiaobai@cicd] yum groupinstall "Development Tools"
[xiaobai@cicd] yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker openssh-clients
[xiaobai@cicd] tar xzvf git-2.18.0.tar.gz -C /usr/local
[xiaobai@cicd] mv /usr/local/git-2.18.0/ /usr/local/git
[xiaobai@cicd] cd /usr/local/git
[xiaobai@cicd git] make prefix=/usr/local/git all
[xiaobai@cicd git] make prefix=/usr/local/git install
[xiaobai@cicd git] vim /etc/profile.d/git.sh
export GIT_HOME=/usr/local/git
export PATH=$PATH:$GIT_HOME/bin

[xiaobai@cicd git] source /etc/profile
[xiaobai@cicd git] git --version
git version 2.18.4

#如果git --version出来的版本不是2.18.4的或你安装的版本,那说明你之前有安装过git,卸载之前的就可以了,也可以使用之前的版本
#卸载如下
[xiaobai@cicd git] yum -y remove git
[xiaobai@cicd git] source /etc/profile
[xiaobai@cicd git] git --version
git version 2.18.4

三、配置环境

1、Jenkins基础环境及插件配置

1.1、Jenkins全局工具配置

CI-CD(Jenkins持续集成、部署、发布)_第10张图片


CI-CD(Jenkins持续集成、部署、发布)_第11张图片


CI-CD(Jenkins持续集成、部署、发布)_第12张图片


CI-CD(Jenkins持续集成、部署、发布)_第13张图片


在这里插入图片描述

上面的jdk,git,maven都是在服务器上刚刚自己配的,不要在自动安装那一行打对钩,自己配上刚刚在服务器上的路径就好

1.2、Jenkins邮件配置

CI-CD(Jenkins持续集成、部署、发布)_第14张图片


CI-CD(Jenkins持续集成、部署、发布)_第15张图片


CI-CD(Jenkins持续集成、部署、发布)_第16张图片


CI-CD(Jenkins持续集成、部署、发布)_第17张图片

配置后不要忘记点应用保存,不然就是徒劳一场


1.3、Jenkins插件下载

有人会问当初安装Jenkins时不是下载过一些插件了吗?别急,Jenkins的插件有很多的,安装时下载的只是一些基础的插件,接下来安装的才是我们使用自动化发布的一些必要插件。

  • 支持自动化代码部署到tomcat容器 Deploy to container
  • Git插件 GIT pligin
  • Jenkins利用Maven编译打包插件 Maven Integration
  • 通过ssh连接 ssh 插件 Publish Over SSH
    CI-CD(Jenkins持续集成、部署、发布)_第18张图片

在可选插件里搜索要安装的插件


我们安装的插件有
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
CI-CD(Jenkins持续集成、部署、发布)_第19张图片

安装完插件重启Jenkins生效哦


通往Jenkins自定义安装插件的时空隧道


1.4、Jenkins SSH系统配置

CI-CD(Jenkins持续集成、部署、发布)_第20张图片
CI-CD(Jenkins持续集成、部署、发布)_第21张图片


到Jenkins服务器上,把用户的公钥传给后端服务器



下面有个高级,点进去
CI-CD(Jenkins持续集成、部署、发布)_第22张图片
不要忘记应用和保存

2、Jenkins配置Maven项目

CI-CD(Jenkins持续集成、部署、发布)_第23张图片

分割线

安装Gitlab插件
CI-CD(Jenkins持续集成、部署、发布)_第24张图片


CI-CD(Jenkins持续集成、部署、发布)_第25张图片


CI-CD(Jenkins持续集成、部署、发布)_第26张图片


CI-CD(Jenkins持续集成、部署、发布)_第27张图片


CI-CD(Jenkins持续集成、部署、发布)_第28张图片


配置认证可以使用ssh,这里用的是token
CI-CD(Jenkins持续集成、部署、发布)_第29张图片
点击添加


获取token,到Gitlab上
CI-CD(Jenkins持续集成、部署、发布)_第30张图片


CI-CD(Jenkins持续集成、部署、发布)_第31张图片


CI-CD(Jenkins持续集成、部署、发布)_第32张图片


CI-CD(Jenkins持续集成、部署、发布)_第33张图片


CI-CD(Jenkins持续集成、部署、发布)_第34张图片


去Jenkins插件中安装maven
CI-CD(Jenkins持续集成、部署、发布)_第35张图片


配置Gitlab的免密登录

#在jenkins机器上创建秘钥,把公钥拷给gitlab
[xiaobai@cicd] ssh-keygen -t rsa
[xiaobai@cicd] cat .ssh/id_rsa.pub

CI-CD(Jenkins持续集成、部署、发布)_第36张图片
配置好后add添加


在Gitlab上创建一个仓库
CI-CD(Jenkins持续集成、部署、发布)_第37张图片


CI-CD(Jenkins持续集成、部署、发布)_第38张图片
在新建的仓库里随便上传或写入一个文件


创建maven项目
CI-CD(Jenkins持续集成、部署、发布)_第39张图片


CI-CD(Jenkins持续集成、部署、发布)_第40张图片


CI-CD(Jenkins持续集成、部署、发布)_第41张图片
刚刚的token配置好像失效了,不知道为什么,还是乖乖配置ssh吧


gitlab仓库地址
CI-CD(Jenkins持续集成、部署、发布)_第42张图片


CI-CD(Jenkins持续集成、部署、发布)_第43张图片
配置好后选择刚刚配置的就不报错了
CI-CD(Jenkins持续集成、部署、发布)_第44张图片


CI-CD(Jenkins持续集成、部署、发布)_第45张图片


点高级
CI-CD(Jenkins持续集成、部署、发布)_第46张图片


到Gitlab上
CI-CD(Jenkins持续集成、部署、发布)_第47张图片


CI-CD(Jenkins持续集成、部署、发布)_第48张图片


CI-CD(Jenkins持续集成、部署、发布)_第49张图片
Jenkins的项目地址就是你创建test项目的IP+端口+路径
如果你不知到地址,就看配置test项目时浏览器的Jenkins的地址栏里


CI-CD(Jenkins持续集成、部署、发布)_第50张图片


回到Jenkins,配置Build
在这里插入图片描述


插件管理里下载Deploy to container插件
CI-CD(Jenkins持续集成、部署、发布)_第51张图片


CI-CD(Jenkins持续集成、部署、发布)_第52张图片

你可能感兴趣的:(架构,集群,jenkins,ci,maven)