CI持续集成环境搭建(6) --Jenkins的安装与搭建

1. 安装jenkins

1)安装yum源:

cd /etc/yum.repos.d/
wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key

2) 安装jenkins

yum list --show-duplicates jenkins
yum install  -y jenkins-xxxx-xx
yum install net-tools

3) 修改端口为8081

vi /etc/sysconfig/jenkins

JENKINS_PORT=“8081

4) 启动jenkins

service jenkins start

5) 查看jenkins端口

lsof -i:8081 

在这里插入图片描述

2. 配置jenkins

1. 在浏览器中输入:http://${centosip}:8081

效果如下:

按照提示执行
cat /var/lib/jenkins/secrets/initialAdminPassword 得到Administrator password

在页面输入获得的password,进入如下页面:
在这里插入图片描述
设置账号密码
比如 admin:admin root:123456
在这里插入图片描述

进入主页面
在这里插入图片描述

2) 进入系统管理->插件管理->可选插件

搜索ssh plugin 和 Maven Integration plugin 然后安装, 安装界面选择安装好后重启jenkins
在这里插入图片描述
在这里插入图片描述

3) 系统管理->系统设置

在这里插入图片描述
在系统设置中设置ssh
在这里插入图片描述
在上步中Credentials add 添加用户root, 密码******
在这里插入图片描述
接着添加jenkins的url配置
在这里插入图片描述

4) 系统管理->全局工具配置


配置其中的 jdk git maven
yum安装的java, 用命令查找路径:
跟踪软连接
ll /usr/bin/java
ll /etc/alternatives/java
ll /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.151-5.b12.el7_4.x86_64/bin/java
jdk的home就是/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.151-5.b12.el7_4.x86_64/

在这里插入图片描述
git的是命令路径 /usr/local/git/bin
在这里插入图片描述

maven和docker
用命令 mvn -v 查看home路径
Apache Maven 3.0.5 (Red Hat 3.0.5-17)
Maven home: /usr/share/maven
Java version: 1.8.0_151, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.151-5.b12.el7_4.x86_64/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: “linux”, version: “3.10.0-327.el7.x86_64”, arch: “amd64”, family: “unix”
在这里插入图片描述

3. 新建maven项目devops_test1

在这里插入图片描述
在这里插入图片描述

1)配置git源码管理

添加root的私钥(章节3,公钥已加入到git仓库的authorized_keys里面)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2) 增加构建后操作

其中的num镜像数要多一个,要多tag一个有5000/devops_test辨识的镜像,第一次打包,要tag一个,以便于打包后是准确的v1版本

cd /var/lib/jenkins/workspace/devops_test/
num=docker images|grep "5000/devops_test"|wc -l
docker build -t devops_test:v n u m . d o c k e r t a g d e v o p s t e s t : v num . docker tag devops_test:v num 192.168.1.7:5000/mybank-tomcat:v n u m d o c k e r p u s h 192.168.1.7 : 5000 / d e v o p s t e s t : v num docker push 192.168.1.7:5000/devops_test:v num
docker run -d -p 8080:8080 devops_test:v$num

docker命令详解:

docker build -t devops_test:v$num .

docker build 命令用于使用 Dockerfile 创建镜像, 使用当前目录的dockerfile创建镜像。

docker tag devops_test:v$num 192.168.1.7:5000/mybank-tomcat:v$num 

将镜像devops_test-tomcat:v n u m 192.168.1.7 : 5000 / d e v o p s t e s t t o m c a t : v num标记为 192.168.1.7:5000/devops_test-tomcat:v num 镜像。
docker tag : 标记本地镜像,将其归入某一仓库。
–tag, -t: 镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签。

docker push 192.168.1.7:5000/devops_test:v$num

docker push : 将本地的镜像上传到镜像仓库,要先登陆到镜像仓库

docker run -d -p 8080:8080 devops_test:v$num

docker run :创建一个新的容器并运行一个命令
-d: 后台运行容器,并返回容器ID;
-i: 以交互模式运行容器,通常与 -t 同时使用;
-p: 端口映射,格式为:主机(宿主)端口:容器端口

3) 配置Build选项

在这里插入图片描述
配置完成后保存

4. 执行构建

1) 修改maven仓库路径

执行构建前,去服务器修改maven仓库路径 最好阿里云的镜像,增加如下配置,飞速下载

vi /etc/maven/settings.xml

<mirror>
 <id>alimaven</id>
 <mirrorOf>central</mirrorOf>
 <name>aliyun maven</name>
 <url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
</mirror>

2) 执行构建

构建成功并做成镜像后上传到docker仓库,最后启动镜像服务,日志截图

在这里插入图片描述
在这里插入图片描述

3) 在服务器上查看生成情况

在这里插入图片描述

4) 镜像服务正常,用浏览器访问服务正常

在这里插入图片描述

5. jenkins集成gerrit (设置Gerrit Trigger)

1) 安装gerrit trigger和git plugin插件

Jenkins系统已经创建了管理员账户jenkins并安装了Gerrit Trigger插件和Git plugin插件
在“系统管理”->“插件管理"->”可选插件"->搜索上面两个插件进行安装

2)配置Gerrit Trigger

在这里插入图片描述
在这里插入图片描述
Add New Server : Check4Gerrit
勾选 Gerrit Server With Default Configurations

在这里插入图片描述
具体设置如下:
在这里插入图片描述

Note: 填了SSH Keyfile之后,“SSH Keyfile password” 这一项是空,不需要填
设置好之后,点击“Test Connection”,如果测试连接出现如下的Success,即表示连接成功!
点击左下方的Save保存。

如果上一步在点击“Test Connection”测试的时候报错:
解决办法
管理员登录gerrit
Projects->List->All-Projects
Projects->Access
Global Capabilities->Stream Events 点击 Non-Interactive Users
添加 [email protected] 用户到 ‘Non-Interactive Users’ 组

在这里插入图片描述
配置成功后,gerrit有新的提交,就会自动触发jenkins

6. Issues

Issue 1: Host key verification failed.

/usr/bin/git ls-remote -h [email protected]:/opt/devops_test.git HEAD
Failed to connect to repository : Command “/usr/bin/git ls-remote -h [email protected]:/opt/devops_test.git HEAD” returned status code 128:
stdout:
stderr: Host key verification failed.

Solution:
https://blog.csdn.net/cdnight/article/details/81078191

假如创建的密钥对为id_rsa (私钥) 和 id_rsa.pub(公钥)
上图中的id_rsa即为key文件里复制的私钥,设置好后,将id_rsa.pub里的公钥复制到服务端对该git库拥有权限的用户主目录下的./ssh/authorized_keys文件
(注意[email protected]:/opt/devops_test.git,该地址前的git用户就是以上服务端被加入了公钥进authorized_keys的用户)

issue 2: error: unpack-objects died of signal 15

remote: Compressing objects: 100% (21/21)
remote: Compressing objects: 100% (21/21), done.
error: unpack-objects died of signal 15
fatal: unpack-objects failed

https://www.cnblogs.com/feng0520/p/9070071.html

issue 3: 打不开jenkins页面 http://192.168.101.22:8081

solution:
打开防火墙, 防火墙开启8081端口
[root@localhost ~]# firewall-cmd --add-port=8081/tcp --permanent
success
[root@localhost ~]# firewall-cmd --query-port=8081/tcp --permanent
yes
[root@localhost ~]# systemctl restart firewalld
[root@localhost ~]# systemctl enable firewalld

issue 4 : Failed to start firewalld.service: Unit is masked. for command systemctl restart firewalld

solution:
systemctl unmask firewalld

Issue 5: Test for gerrit Trigger Connection error : com.jcraft.jsch.JSchException: Auth fail

Solution:
Login to gerrit with common user Jenkins
Add Jenkins into ‘Non-Interactive Users’ 组:
管理员登录gerrit
Projects->List->All-Projects
Projects->Access
Global Capabilities->Stream Events 点击 Non-Interactive Users
添加 [email protected] 用户到 ‘Non-Interactive Users’ 组

issue 6: replication: org.eclipse.jgit.errors.TransportException: https://github.com/xiaojike1213/devops_test.git: not authorized

Solution:
仔细检查相关配置
如何完成github和gerrit的双向同步
https://www.coder4.com/archives/5788

issue 7: ssh-gerrit gerrit plugin reload replication error: fatal: remote plugin administration is disabled

solution:
在/home/gerrit/gerrit_site/etc/gerrit.config文件里添加下面内容:
[plugins]
allowRemoteAdmin = true
然后重启gerrit服务即可:
重载replication的同步服务:
ssh-gerrit gerrit plugin reload replication
同步所有工程:
ssh-gerrit replication start --all

issue 8: yum remove会卸载掉所有依赖的包

只卸载某一个包,而不影响其它依赖包
Solution:
rpm -e --nodeps git这个命令,就只删除git这个包,不会删除依赖包,

issue 9: jenkins编包完成,Put http://xx.xx.xx.xx:5000/v1/repositories/devops_test-tomcat/: dial tcp xx.xx.xx.xx:5000: connect: connection refused

Solution:
启动registry容器:docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 --name registry registry

发布了13 篇原创文章 · 获赞 2 · 访问量 2613

猜你喜欢

转载自blog.csdn.net/a10703060237/article/details/89710497