jenkins教程菜鸟_jenkins部署三种构建方式的详细步骤

本文详述了使用jenkins进行自动化部署的三种方式:触发式构建、参数化构建和定时构建。通过生成和配置公钥、设置gitlab webhook、编写触发脚本等步骤,实现从开发到测试再到预上线环境的自动化部署流程。
摘要由CSDN通过智能技术生成

部署背景:

jenkins:                     CentOS 7.4C         IP:172.16.3.74

gitlab-11.5.3:             CentOS 7.4D         IP:172.16.4.74

此上部署都是根据我之前的博客配置完成的;

jenkins有三种构建方式:

触发式构建:用于开发环境部署,开发人员可以push代码或者合并代码到gitlab项目的master分支上,jenkins就部署代码到对应服务器;

参数化构建:用于测试环境或者预上线环境部署,只需要在jenkins的界面传入对应参数即可执行部署;

定时构建:在参数化基础上添加,可以每天定时打包;

触发式构建部署过程:

1.首先,我们需要在jenkins主机上生成root用户的公钥和jenkins用户的公钥;

因为jenkins用户默认没有bash;所以我们需要给jenkins设定一个bash,用以输入命令;[root@master testProject]# grep jenkins /etc/passwd

jenkins:x:982:976:Jenkins Automation Server:/var/lib/jenkins:/bin/false

[root@master ~]#usermod -s /bin/bash jenkins

[root@master testProject]# grep jenkins /etc/passwd

jenkins:x:982:976:Jenkins Automation Server:/var/lib/jenkins:/bin/bash

2.生成公钥:[root@master ~]# ssh-keygen -t rsa

[root@master ~]# cat .ssh/id_rsa.pub

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCq4LhWeHNqq34B7j2uL4Ss4EJWyZkWeNHrgsN/2IkaVPatLEJliDHGnPVnKQEejUmApjRofTzJ6eHryzr/7NYNYVoYY08gpVYer2Tct0EWp7V6IA+8OUrMYZYGXLVEBaj/SsTlp23sPZKYUfshGW4wFMBsTGtSNspsSl2MyBnNbO/VDNZUtkx18UwBocBdOLM0ogaT1Taa+/XOtTYs5tP1LWfZA/Wcbwih+9mZFZD55wsyUgIGEgQd9M88lhbHKzjTU9bVUPBOLwQVdcnsd5o/KduNidwY3+Pd+75hDXwE6o4xh5M0+pd6M+KyDMQLN8ZD51P1+91IDvp2W9uEQDCf root@master.ljy.com

[root@master ~]# su - jenkins

-bash-4.2$ ssh-keygen -t rsa

-bash-4.2$ cat .ssh/id_rsa.pub

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6j4gWxtlwzuwEDBOHmuchiZgNRAdNTLHj+70TJY+lqTKM4YkYHvdD6ZXtmTafrHW5onMzzzdNr3xnsvuGVdxc7hzJ5KZ27bWAo4Ka2IhH2+KXaKxooqcVOsrHdzEOsoOM9fLgLzZgn674NRZky4lZTNxFb9Iu8nu3EgjIa2Juio/DM+IPmipy4u+qHWoJ2RJqVuNh+qiSrpXXnwYLEB28MoHbCZa2otHoIITAekYvTJfIyqfl5NT3IXG4+AaWhQ0sTsEw3qpB4Tgi3FTtVuVXvp0QrvCCN6UKS1/nIcaNU9KFak4bGjv7V7uE2MexWOjacLWuxByuF4/hLca08a0F jenkins@master.ljy.com

3.把生成的公钥文件(.ssh/id_rsa.pub内容)复制到gitlab服务器上:

添加完成之后。

注意:我们需要在jenkins用户登录中对root用户进行免密认证,否则在我们进行触发式构建的时候,会执行不成功,出现 Host key verification failed错误,会让我们功亏一篑,因为jenkins默认是jenkins用户执行我们设置的命令,而我们脚本一旦有ssh root@HOST_IP的时候,那么jenkins就需要登录为root用户执行后边的命令,我们就让jenkins免密登录root即可解决;

[root@master ~]#登出

Connection to 172.16.3.74 closed.

-bash-4.2$ ssh-copy-id -i .ssh/id_rsa.pub root@172.16.3.74

/bin/ssh-copy-id: INFO: Source of key(s) to be installed: ".ssh/id_rsa.pub"

/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed

/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys

root@172.16.3.74's password:

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'root@172.16.3.74'"

and check to make sure that only the key(s) you wanted were added.

-bash-4.2$

5.找到我们创建的gitlab库,并下载至jenkins主机上;

下载过程;[root@master ~]# git config --global user.name ljy

[root@master ~]# git config --global user.email ljy@123.com

[root@master ~]# git clone git@172.16.4.74:/root/testProject

6.创建触发式任务;

7.选择git Repository的URL;

8.设定触发条件;

9.创建触发脚本并写入触发shell;[root@master ~]#cd testProject/

[root@master testProject]#cat jenkins_trigger.sh

#!/bin/bash

#

echo "test successful"

[root@master testProject]#chmod +x jenkins_trigger.sh

10.进入jenkins à 全局安全设置;

把此选项的取消勾选,否则jenkins认为gitlab请求不合法;

11(可选).我们可以设置一个API token;

输入名称,会输出一个token,我们需要把token复制下来;

12.进入gitlab服务器,添加一个webhooks;

URL格式:

http://name:token@JENKINS_HOST_IP/job/JOB_NAME/build?token=BUILD_TOKEN

比如我设置的:http://ljy:11b8ddbc06578b2bc23961a5e56ccd639d@172.16.3.74:8080/job/fastjson/build?token=hehe

注意:如果我们是gitlab-10.6以后的版本,我们会无法创建,出现一个requests to the local network are not allowed的红色报警信息,这时我们需要允许gitlab访问本地网络,默认不允许访问本地网络;

13.我们对设置好的webhooks进行Test;

14.出现一个HTTP 201的返回值即证明成功;

15.进入jenkins查看是否成功;

返回值为SUCCESS即为成功;

参数化构建就相对简单一点;

1.依旧是创建一个任务;

2. 任务内容:

创建一个参数脚本;[root@master ~]#cd testProject/

[root@master testProject]#vim jenkins_paramter.sh

[root@master testProject]#cat jenkins_paramter.sh

#!/bin/bash

#

git_pro(){

echo "pull $1 code"

}

git_pro $1

[root@master testProject]#

[root@master testProject]#chmod +x jenkins_paramter.sh

[root@master testProject]#

3.保存以后,开始执行此任务;

显示SUCCESS即为成功;

定时构建;

1.定时构建依据在参数化基础之上,选择一个临近的时间;

2.可以用参数化构建的脚本;也可以新建一个脚本;

3.测试;

4.显示SUCCESS即为成功;

至此:三种构建方式已经部署完毕;作为公司常用工具,这个技能还是很必要的;

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值