jenkins的参数化构建

server configuration

hostnameip
jenkins133
git129
project134
  • jenkins和ansible装在一台机器上,jenkins去调用ansible,ansible去对后端服务器进行操作,让后端服务器自己去拉取代码
  • gti机子为我们的一个代码仓库,代码就是从这上面进行拉取的
  • project机子上装的tomcat和nginx,用来做参数化构建被控端的机子

整体思路 

新建任务 

构建一个自由风格的项目

选择参数化构建过程 

添加选项参数

选择要上线的服务

再添加选项参数

选择服务的状态

又一次添加选项参数

要拉取代码还是要回滚老版本

添加字符参数

上边定义了reset-id ,可以给reset-id进行赋值

添加一个构建步骤

构建后会先选择参数,

将选择的参数在控制台进行输出

应用并保存,然后去进行构建

与我刚才选择的一致,测试成功

下面去project的机器上进行操作

机器上已经预装好了nginx和tomcat

先去nginx的网站发布目录下去将html目录进行删除

[root@project ~]# cd /usr/share/nginx/
[root@project nginx]# ll
总用量 0
drwxr-xr-x. 3 root root 136 11月 23 21:13 html
drwxr-xr-x. 2 root root   6 11月 11 2022 modules
[root@project nginx]# rm -rf html
[root@project nginx]# 

设置project的免密登录,将project的公钥发给gitlab

测试一下能不能免密克隆下来

[root@project ~]# yum -y install git
[root@project ~]# git clone git@192.168.43.129:dog_wangwang/nginx-parameter.git
正克隆到 'nginx-parameter'...
remote: Enumerating objects: 6, done.
remote: Counting objects: 100% (6/6), done.
remote: Compressing objects: 100% (5/5), done.
remote: Total 6 (delta 0), reused 0 (delta 0), pack-reused 0
接收对象中: 100% (6/6), done.

克隆成功,然后将刚才克隆下来的移动到/usr/share/nginx下,并改名html

[root@project ~]# ll
总用量 543892
-rw-------. 1 root root      1241 10月 19 09:02 anaconda-ks.cfg
-rw-r--r--. 1 root root  10771165 11月 21 17:42 apache-tomcat-8.5.95.tar.gz
-rw-r--r--. 1 root root 169440335 11月 23 10:24 jdk-11.0.19_linux-x64_bin.tar.gz
-rw-r--r--. 1 root root 181719178 11月  2 11:43 jdk-17_linux-x64_bin.tar.gz
-rw-r--r--. 1 root root 194990602 11月 23 10:06 jdk-8u211-linux-x64.tar.gz
-rw-r--r--. 1 root root       888 10月 21 15:43 my_static_ip.sh
drwxr-xr-x. 3 root root        53 11月 23 21:33 nginx-parameter
-rwxr-xr-x. 1 root root      1208 11月 23 21:13 yum-server.sh
[root@project ~]# mv nginx-parameter/ /usr/share/nginx/html

去浏览器访问一下:http:192.168.43.134

 

然后去jenkins机器上操作

安装ansible,配置主机清单

[root@jenkins ~]# yum -y install ansible
[root@jenkins ~]# cat /opt/hosts
[nginx]
192.168.43.134

[root@jenkins ~]# ansible -i /opt/hosts all -m ping -o
192.168.43.134 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": false, "ping": "pong"}

#-i 指定主机清单
#-m 指定参数模块

写一个脚本 

[root@jenkins ~]# vim /opt/nginx-parameter.sh
#!/bin/bash

#nginx/tomcat
service_name=$1

#start/stop/restart/none
service_status=$2

#pull/reset1/reset2/reset-i/noned
gitlab_code=$3

#none/gitlab_code值为reset-id时需要
gitlab_id=$4

cmd="ansible -i /opt/hosts nginx"
if [ "$service_name" = "nginx" ];then
        if [ "$gitlab_code" = "pull" ];then
                $cmd -m shell -a "chdir=/usr/share/nginx/html git pull git@192.168.43.129:dog_wangwang/nginx-parameter.git"
        elif [ "$gitlab_code" = "reset1" ];then
                $cmd -m shell -a "chdir=/usr/share/nginx/html git reset --hard HEAD^"
        elif [ "$gitlab_code" = "reset2" ];then
                $cmd -m shell -a "chdir=/usr/share/nginx/html git reset --hard HEAD^^"
        elif [ "$gitlab_code" = "reset-id" ];then
                $cmd -m shell -a "chdir=/usr/share/nginx/html git reset --hard $gitlab_id"
        fi
        if [ "$service_status" != "none" ];then
        $cmd -m shell -a "systemctl $service_status $service_name"
        fi
fi
[root@jenkins ~]# sh -x /opt/nginx-parameter.sh
+ service_name=
+ service_status=
+ gitlab_code=
+ gitlab_id=
+ cmd='ansible -i /opt/hosts nginx'
+ '[' '' = nginx ']'

去jenkins页面 

 

修改完成后保存,然后去gitlab上修改项目的文件, 

修改后过来jenkins进行构建 

参数化构建成功 

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值