天天看点

CI持续集成环境搭建(6) --Jenkins的安装与搭建1. 安装jenkins2. 配置jenkins3. 新建maven项目devops_test14. 执行构建5. jenkins集成gerrit (设置Gerrit Trigger)6. Issues

1. 安装jenkins

https://www.jenkins.io/doc/book/installing/docker/#setup-wizard

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
           

如果不能安装,就到官网下载jenkis的rmp包,官网地址(http://pkg.jenkins-ci.org/redhat-stable/)

wget http://pkg.jenkins-ci.org/redhat-stable/jenkins-2.7.3-1.1.noarch.rpm
 rpm -ivh jenkins-2.7.3-1.1.noarch.rpm
           

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 
           
CI持续集成环境搭建(6) --Jenkins的安装与搭建1. 安装jenkins2. 配置jenkins3. 新建maven项目devops_test14. 执行构建5. jenkins集成gerrit (设置Gerrit Trigger)6. Issues

2. 配置jenkins

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

效果如下:

CI持续集成环境搭建(6) --Jenkins的安装与搭建1. 安装jenkins2. 配置jenkins3. 新建maven项目devops_test14. 执行构建5. jenkins集成gerrit (设置Gerrit Trigger)6. Issues

按照提示执行

cat /var/lib/jenkins/secrets/initialAdminPassword 得到Administrator password

在页面输入获得的password,进入如下页面:

CI持续集成环境搭建(6) --Jenkins的安装与搭建1. 安装jenkins2. 配置jenkins3. 新建maven项目devops_test14. 执行构建5. jenkins集成gerrit (设置Gerrit Trigger)6. Issues

设置账号密码

比如 admin:admin root:123456

CI持续集成环境搭建(6) --Jenkins的安装与搭建1. 安装jenkins2. 配置jenkins3. 新建maven项目devops_test14. 执行构建5. jenkins集成gerrit (设置Gerrit Trigger)6. Issues

进入主页面

CI持续集成环境搭建(6) --Jenkins的安装与搭建1. 安装jenkins2. 配置jenkins3. 新建maven项目devops_test14. 执行构建5. jenkins集成gerrit (设置Gerrit Trigger)6. Issues

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

搜索ssh plugin 和 Maven Integration plugin 然后安装, 安装界面选择安装好后重启jenkins

CI持续集成环境搭建(6) --Jenkins的安装与搭建1. 安装jenkins2. 配置jenkins3. 新建maven项目devops_test14. 执行构建5. jenkins集成gerrit (设置Gerrit Trigger)6. Issues
CI持续集成环境搭建(6) --Jenkins的安装与搭建1. 安装jenkins2. 配置jenkins3. 新建maven项目devops_test14. 执行构建5. jenkins集成gerrit (设置Gerrit Trigger)6. Issues

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

CI持续集成环境搭建(6) --Jenkins的安装与搭建1. 安装jenkins2. 配置jenkins3. 新建maven项目devops_test14. 执行构建5. jenkins集成gerrit (设置Gerrit Trigger)6. Issues

在系统设置中设置ssh

CI持续集成环境搭建(6) --Jenkins的安装与搭建1. 安装jenkins2. 配置jenkins3. 新建maven项目devops_test14. 执行构建5. jenkins集成gerrit (设置Gerrit Trigger)6. Issues

在上步中Credentials add 添加用户root, 密码******

CI持续集成环境搭建(6) --Jenkins的安装与搭建1. 安装jenkins2. 配置jenkins3. 新建maven项目devops_test14. 执行构建5. jenkins集成gerrit (设置Gerrit Trigger)6. Issues

接着添加jenkins的url配置

CI持续集成环境搭建(6) --Jenkins的安装与搭建1. 安装jenkins2. 配置jenkins3. 新建maven项目devops_test14. 执行构建5. jenkins集成gerrit (设置Gerrit Trigger)6. Issues

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

CI持续集成环境搭建(6) --Jenkins的安装与搭建1. 安装jenkins2. 配置jenkins3. 新建maven项目devops_test14. 执行构建5. jenkins集成gerrit (设置Gerrit Trigger)6. Issues

配置其中的 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/

CI持续集成环境搭建(6) --Jenkins的安装与搭建1. 安装jenkins2. 配置jenkins3. 新建maven项目devops_test14. 执行构建5. jenkins集成gerrit (设置Gerrit Trigger)6. Issues

git的是命令路径 /usr/local/git/bin

CI持续集成环境搭建(6) --Jenkins的安装与搭建1. 安装jenkins2. 配置jenkins3. 新建maven项目devops_test14. 执行构建5. jenkins集成gerrit (设置Gerrit Trigger)6. Issues

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”

CI持续集成环境搭建(6) --Jenkins的安装与搭建1. 安装jenkins2. 配置jenkins3. 新建maven项目devops_test14. 执行构建5. jenkins集成gerrit (设置Gerrit Trigger)6. Issues

3. 新建maven项目devops_test1

CI持续集成环境搭建(6) --Jenkins的安装与搭建1. 安装jenkins2. 配置jenkins3. 新建maven项目devops_test14. 执行构建5. jenkins集成gerrit (设置Gerrit Trigger)6. Issues
CI持续集成环境搭建(6) --Jenkins的安装与搭建1. 安装jenkins2. 配置jenkins3. 新建maven项目devops_test14. 执行构建5. jenkins集成gerrit (设置Gerrit Trigger)6. Issues

1)配置git源码管理

添加root的私钥(章节3,公钥已加入到git仓库的authorized_keys里面)

CI持续集成环境搭建(6) --Jenkins的安装与搭建1. 安装jenkins2. 配置jenkins3. 新建maven项目devops_test14. 执行构建5. jenkins集成gerrit (设置Gerrit Trigger)6. Issues
CI持续集成环境搭建(6) --Jenkins的安装与搭建1. 安装jenkins2. 配置jenkins3. 新建maven项目devops_test14. 执行构建5. jenkins集成gerrit (设置Gerrit Trigger)6. Issues
CI持续集成环境搭建(6) --Jenkins的安装与搭建1. 安装jenkins2. 配置jenkins3. 新建maven项目devops_test14. 执行构建5. jenkins集成gerrit (设置Gerrit Trigger)6. Issues

note: git URL ssh方式,不是http方式

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.dockertagdevopst​est:vnum 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 numdockerpush192.168.1.7:5000/devopst​est:vnum

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标记为192.168.1.7:5000/devopst​est−tomcat:vnum 镜像。

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选项

CI持续集成环境搭建(6) --Jenkins的安装与搭建1. 安装jenkins2. 配置jenkins3. 新建maven项目devops_test14. 执行构建5. jenkins集成gerrit (设置Gerrit Trigger)6. Issues

配置完成后保存

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仓库,最后启动镜像服务,日志截图

CI持续集成环境搭建(6) --Jenkins的安装与搭建1. 安装jenkins2. 配置jenkins3. 新建maven项目devops_test14. 执行构建5. jenkins集成gerrit (设置Gerrit Trigger)6. Issues
CI持续集成环境搭建(6) --Jenkins的安装与搭建1. 安装jenkins2. 配置jenkins3. 新建maven项目devops_test14. 执行构建5. jenkins集成gerrit (设置Gerrit Trigger)6. Issues

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

CI持续集成环境搭建(6) --Jenkins的安装与搭建1. 安装jenkins2. 配置jenkins3. 新建maven项目devops_test14. 执行构建5. jenkins集成gerrit (设置Gerrit Trigger)6. Issues

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

CI持续集成环境搭建(6) --Jenkins的安装与搭建1. 安装jenkins2. 配置jenkins3. 新建maven项目devops_test14. 执行构建5. jenkins集成gerrit (设置Gerrit Trigger)6. Issues

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

1) 安装gerrit trigger和git plugin插件

Jenkins系统已经创建了管理员账户jenkins并安装了Gerrit Trigger插件和Git plugin插件

在“系统管理”->“插件管理"->”可选插件"->搜索上面两个插件进行安装

2)配置Gerrit Trigger

CI持续集成环境搭建(6) --Jenkins的安装与搭建1. 安装jenkins2. 配置jenkins3. 新建maven项目devops_test14. 执行构建5. jenkins集成gerrit (设置Gerrit Trigger)6. Issues
CI持续集成环境搭建(6) --Jenkins的安装与搭建1. 安装jenkins2. 配置jenkins3. 新建maven项目devops_test14. 执行构建5. jenkins集成gerrit (设置Gerrit Trigger)6. Issues

Add New Server : Check4Gerrit

勾选 Gerrit Server With Default Configurations

CI持续集成环境搭建(6) --Jenkins的安装与搭建1. 安装jenkins2. 配置jenkins3. 新建maven项目devops_test14. 执行构建5. jenkins集成gerrit (设置Gerrit Trigger)6. Issues

具体设置如下:

CI持续集成环境搭建(6) --Jenkins的安装与搭建1. 安装jenkins2. 配置jenkins3. 新建maven项目devops_test14. 执行构建5. jenkins集成gerrit (设置Gerrit Trigger)6. Issues

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’ 组

CI持续集成环境搭建(6) --Jenkins的安装与搭建1. 安装jenkins2. 配置jenkins3. 新建maven项目devops_test14. 执行构建5. jenkins集成gerrit (设置Gerrit Trigger)6. Issues

配置成功后,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端口

[[email protected] ~]# firewall-cmd --add-port=8081/tcp --permanent

success

[r[email protected] ~]# firewall-cmd --query-port=8081/tcp --permanent

yes

[[email protected] ~]# systemctl restart firewalld

[[email protected] ~]# 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

继续阅读