git+jenkins+harbor+kubernates可持续集成构建之 —— centos7.7安装配置jenkins

大家好,我是Linux运维工程师 Linke 。技术过硬,很少挖坑~

jenkins安装,可以选择docker、rpm 、war安装,下面我是用 war 包启动,但凡 war 包,都可以由 tomcat 来启动。

jenkins有很多功能,对于大部分场景都适合jenkins带的这些功能,但是我用了以后,一步一步对jenkins的工作优化,最后优化到只剩下一个shell脚本了,其它多余的都被我用脚本完成。jenkins的作用只用于git的触发,然后去回调git,jenkins拉下git项目后,直接走我脚本做了所有的工作。因为没用脚本代替之前,在jenkins上加一个新项目实在太麻烦了,用了脚本之后,加新项目的时候,直接克隆一个旧项目,然后改一下git地址即可。

好吧,扯远了,这些应该在《git+jenkins+harbor+kubernates可持续集成构建之——总览》中来概括。毕竟这篇文档只是来写 jenkins 安装配置的。

#1 安装jenkins

jenkins官网地址

https://jenkins.io/zh/download/

准备服务器

ip系统安装服务
192.168.10.184centos7.7jenkins

wget 下载

wget http://mirror.serverion.com/jenkins/war-stable/2.204.5/jenkins.war

官网提供的文档,war包直接用java -jar jenkins.war启动了,为了方便管理,我使用 tomcat 启动的。

wget 下载tomcat

wget https://mirror.bit.edu.cn/apache/tomcat/tomcat-9/v9.0.33/bin/apache-tomcat-9.0.33.tar.gz

安装jdk,包自行解决,刚刚看了一下,官网下载Oracle jdk貌似必须要登陆才能下载,我懒的去打开官网抄下载地址了

cat > /etc/profile.d/java_env.sh <<EOF
export JAVA_HOME="/usr/lib/jvm/jdk1.8.0_111"
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
EOF
. /etc/profile.d/java_env.sh
java -version

解压到 /opt 目录,清理一下,将 jenkins.war 放到 webapps 中

tar xvf apache-tomcat-9.0.33.tar.gz -C /opt/
rm -fr /opt/apache-tomcat-9.0.33/webapps/*
cp -a jenkins.war /opt/apache-tomcat-9.0.33/webapps/
mv /opt/apache-tomcat-9.0.33 /opt/tomcat-jenkins

打开设置jvm内存大小和jenkins数据存储目录后,启动tomcat ,jvm和存储路径按自己实际情况去设置

vim /opt/tomcat-jenkins/bin/catalina.sh
export JAVA_OPTS="-XX:+UseG1GC -Xmx4G -Xms4G -server"
export JENKINS_HOME=/opt/jenkins_data
/opt/tomcat-jenkins/bin/catalina.sh start

然后起驾,去看日志

tail -f /opt/tomcat-jenkins/logs/catalina.out

走到这里,jenkins 才算启动,可能需要一段时间

浏览器打开 192.168.10.184:8080/jenkins ,先按提示解锁 jenkins , 将服务器上的 /root/.jenkins/secrets/initialAdminPassword 文件中的内容帖上后下一步

我这里选择了 安装推荐的插件 ,装起来大部分功能都有了。

叫上静静,一起等待一会儿,如果网慢,你可能要和静静多相处一会儿。这里有个问题,等待安装插件的时候,第一次安装完后,可能会有一些安装失败的,那是因为它们的依赖插件没有安装,选择重新安装失败的插件就会全部正常安装。

很明显,静静不喜欢我,她很快走了。这里显示要创建一个管理员用户。我创建了root 。jenkins默认的管理员用户是 admin ,密码就是秘钥文件中的那串字符串。建议创建管理员用户,如果有一天管理员用户忘记了,可以使用admin用户来更改。

这里默认就行 

 

需要再装下面几个插件来实现和 gitlab 的连接

“Gitlab Merge Request Builder” “GitLab” “Gitlab Hook” “Gitlab Authentication”

有需要的,也可以安装一个 “AnsiColor” 插件,这个可以显示 shell 脚本中设置的颜色,像这样的命令 echo -e "\033[1;32m 高亮绿色字 \033[0m" 可以在日志中打印出颜色。只需要在工程设置内,构建环境一栏,勾选 “Color ANSI Console Output” 选项即可。

 使用 ctrl + f ,搜索上面提到的几个插件,打上对勾安装上即可(一次可以选择很多来安装)。

 

至此,jenkins安装完毕,下面就是如何配置它和 gitlab 交互了。

--------------------------------------------------------------------------------------------------------------------------------------------------------------

#2 配置jenkins和gitlab的连接,自动拉取gitlab代码

jenkins 自动 拉取 gitlab 的代码的做法是 jenkins 提供了一个回调接口,在 gitlab 上设置以后,gitlab 做了相应的操作后,就会触发这个钩子,jenkins收到通知后,自动拉取 gitlab 上的项目。

由于jenkins要自动拉取gitlab代码,所以首先要在 他两之间做免密策略。有两种方式,要么用 sshkey ,要么用 git 的用户密码。这里我使用 sshkey 做的免密策略。jenkins拉去项目时,依赖git命令,所以首先得在jenkins 服务器装一个 git 命令。然后生成公钥和私钥在 git 上做免密拉取。

在jenkins 服务器安装 git 命令

yum install -y git

然后在jenkins上,添加项目,点击 新建任务

添加一个自由风格的项目,项目名自定。项目名我在生产环境的规则是以gitlab的项目名称为准,因为这样方便后期管理

然后进入工程配置页面,找到源码管理,选择 Git 后,在箭头所示处 添加你的 git 项目,之后jenkins会拉取这个地址下的项目。

下面有两种方式来配置这里,第一种是添加 ssh 的 git 项目地址,第二种是添加 http 的 git 项目地址。

第一种:使用 ssh 格式的地址来克隆代码,此时下面可能会报错。但是这不重要,选择箭头中的添加,点击 jenkins 进入 认证凭据 配置页面

在这里,我使用的是 SSH Username with private key ,这种方式需要在 git 上也创建一个 sshkey,在 git 上创建 sshkey 的方式在这篇博客有介绍 《git+jenkins+harbor+kubernates可持续集成构建之 —— 配置gitlab》 ,如图所示

 保存后在 Credentials 下就会有 op 这个选项了。

第二种:使用 http 的 git 地址来克隆代码,此时下面可能会报错。但是这不重要,选择箭头中的添加,点击 jenkins 进入 认证凭据 配置页面

http的不能使用 sshkey ,因此需要再创建一个用于 http 地址的凭证

然后点击下拉箭头,选择对应的凭证,报错就会消失,这就说明此时jenkins可以免密拉取这个 git 项目了。

此时可以点应用,保存,然后测试一下能否拉取代码到jenkins服务器。

点击篮球(一定要点击篮球,点击后面的 11 会进入另一个页面,需要再点一下才能进入日志页面)可以直接进入日志页面

此时去日志中显示的克隆项目的路径可以看到代码已然被克隆下来了。

这是gitlab中这个项目的样子。

现在 jenkins 已然具备了免密克隆 git 项目的功能,那么下一步就是想办法给 gitlab 做一个策略,让它在合适的时候自动去触发 jenkins的这个操作。

#3 配置gitlab自动触发jenkins

首先要再次进入刚刚创建的jenkins工程配置内,点击jenkins,回到主页,进入项目配置中。

 进入配置,直奔 构建触发器 这一步,按图中提示进行

 如上图,点了高级后,会出现下面这些,按照图中操作后,将回调地址 http://192.168.10.184:8080/jenkins/project/testclone 和 token  “fddf1ebd3872429e69950e4846c5a7d8” 复制保留起来,注意不要有空格,因为这个token之后可以用做任何一个项目上。然后保存。gitlab 配置方式,请看博客 《git+jenkins+harbor+kubernates可持续集成构建之 —— 配置gitlab》 中的  “#1 gitlab 配置自动触发 jenkins 来克隆代码” 这一段

在gitlab上配置好,点击测试连接 200 后,jenkins这边就收到通知,去 gitlab 克隆代码。Build History 也会出现新的构建任务

以上都没有问题后,在 gitlab 的测试项目上打一个 tag ,jenkins构建任务就会自动被触发,在《git+jenkins+harbor+kubernates可持续集成构建之 —— 配置gitlab》 “#1 gitlab 配置自动触发 jenkins 来克隆代码” 有测试案例

#4 其他git用户的项目回调jenkins

首先在 gitlab 上用其他用户创建一个新项目,如博客《git+jenkins+harbor+kubernates可持续集成构建之 —— 配置gitlab》 “#2 其他git用户的项目回调jenkins” 这节所示

在jenkins上,回到主页,新建任务

进入工程配置后,将git地址改为新项目地址

git地址修改后,如果没有报错,说明git项目那边权限添加的没问题,再往下可以看到 “构建触发器” 里的webhooks 地址前面都没变,只有后面的这个,变成了你创建这个工程的名字了。

此时把这个地址复制下来,帖到gitlab的 webhooks 中,请看博客 《git+jenkins+harbor+kubernates可持续集成构建之 —— 配置gitlab》小节“#2 其他git用户的项目回调jenkins” 中的添加

gitlab 上测试显示 200 后,jenkins这里便会有一个新任务被触发,如图所示,显示是被 研发 的那个用户触发的

此时在 gitlab 上打个 tag ,这里就会被自动触发

查看日志

 查看jenkins服务器上拉下来的项目

现在已经具备了自动拉取任何一个项目的功能,那么就可以继续往后面做了,接来下来就是将拉取下来的项目经过处理(我用的是shell脚本,我们的业务多,我写了一个处理项目统一的脚本,jenkins拉下代码后立即跑我的脚本),做成 镜像,放到 harbor 上后调用 k8s 去启动。

这种方式其实在很多场景下都适合,不同的是各个公司拉下代码后该如何做了。

如果我为你处理难题,赞一个。 感谢支持!!!

=============

使用jenkins可选择性的手动触发编译的话,可以采用 parameterized 插件

配置选项,先选择 This project is parameterized

 然后选择 Choice parameter

 

 然后写好变量可变量值

 然后保存了,点击构建的时候就会出现下图中的选项。

上面的选项方法其实还是挺操蛋的,如果维护了多个 job ,每个 job 都加同样的选项,那新增一个选项的时候,每个 job 都要加,笨方法的话得一个一个打开加,稍微简单点的就是打开jenkins中 job 的配置文件直接 sed 一下,我又找到了一个更简单的,直接读配置文件。

读配置文件的话,就需要一个插件,安装 Extended Choice Parameter

安装完毕后,在参数选项中就会有下面的一项。

然后可以参考下面的方式设置

 变量值的文件内如下图

然后 build 的时候就会有对应的选项了

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值