跳到主要内容

第4章 Jenkins参数化构建

Git参数-选择代码版本

git参数化构建插件

git源码管理

打印变量

选择构建

控制台输出

查看拉取下来的代码版本信息:

[root@jenkins-201 /var/lib/jenkins/workspace/gitlab_test]# sed -n '8p' pom.xml
<version>3.9.5</version>

第2章 单项选择-发布环境

插件说明

需要安装Active Choices Parameter插件。

此插件提供了单项选择、多项选择和动态选择功能。

1719794904064-c419db10-3871-499e-b6d3-82549d8a4159.png

第3章 多项选择-发布主机

动态选择

Active Choices Parameter插件除了提供多项选择以外,还具有根据其他选项动态返回不同内容的能力。

这里我们可以根据选择的发布环境不同,返回不同的主机列表清单。

1719795175660-a568e9ec-6603-4761-b7d3-ba67ccb74924.png

第4章 单项选择-发布方式

第5章 调用Ansible进行发布任务

1719883124983-3df1dbc3-cba3-4348-8db5-6078f92f41fd.png

1719883354997-00953eda-4640-4f55-89f9-6bdf86e81c1f.png

1719883468249-d9144a82-dbce-48fc-b592-214e1cba0d73.png

1719883579757-296700eb-5b79-43d9-9e2a-bb2e51a8e8c0.png

如果结合动态返回主机IP地址列表,而Ansible正好支持以逗号分隔的主机列表:

ansible-playbook -l 10.0.0.7,10.0.0.8 -e "version=v1.0" deploy.yaml
[root@jenkins-201 /opt/scripts]# cat deploy.sh
#!/bin/bash
deploy(){
tar zcf ${appVersion}.tar.gz *
ansible-playbook -l ${deployHost} -e "version=${appVersion} workspace=${WORKSPACE}" /opt/scripts/ansible_deploy.yaml
rm -rf ${appVersion}.tar.gz
}

rollback(){
ansible-playbook -l ${deployHost} -e "version=${appVersion}" /opt/scripts/ansible_rollback.yaml
}

#发布流程
if [ "${deployType}" == "deploy" ];then
deploy
else
rollback
fi

[root@jenkins-201 /opt/scripts]# cat ansible_deploy.yaml
- name: jenkins deploy
hosts: TEST,PROD
tasks:
- name: mkdir code
file:
path: "/code/{{ version }}"
state: directory

- name: unarchive code
unarchive:
src: "{{ workspace }}/{{ version }}.tar.gz"
dest: "/code/{{ version }}"

- name: rm old link
file:
path: /code/www
state: absent

- name: create new link
file:
src: "/code/{{ version }}"
dest: /code/www
state: link

[root@jenkins-201 /opt/scripts]# cat ansible_rollback.yaml
- name: jenkins deploy
hosts: TEST,PROD
tasks:
- name: rm old link
file:
path: /code/www
state: absent

- name: create new link
file:
src: "/code/{{ version }}"
dest: /code/www
state: link

1719884754994-1c75dd9b-1ac4-4e15-a05b-cad272a268eb.png

第6章 综合练习-参数化构建静态页面

#!/bin/bash
deploy(){
tar zcf ${appVersion}.tar.gz *
scp ${appVersion}.tar.gz ${i}:/code/
ssh ${i} "mkdir -p /code/${appVersion}"
ssh ${i} "tar zxf /code/${appVersion}.tar.gz -C /code/${appVersion}"
ssh ${i} "rm -rf /code/www && ln -s /code/${appVersion} /code/www"
ssh ${i} "rm -rf /code/${appVersion}.tar.gz"
rm -rf ${appVersion}.tar.gz
}

rollback(){
ssh ${i} "rm -rf /code/www && ln -s /code/${appVersion} /code/www"
}

#处理IP地址
host=$(echo $deployHost|sed 's#,# #g')

#发布流程
if [ "${deployType}" == "deploy" ];then
for i in $host
do
deploy
done
fi

#回滚流程
if [ "${deployType}" == "rollback" ];then
for i in $host
do
rollback
done
fi
[root@jenkins-201 /opt/scripts]# cat deploy.sh
#!/bin/bash
deploy(){
tar zcf ${appVersion}.tar.gz *
ansible-playbook -l ${deployHost} -e "version=${appVersion} workspace=${WORKSPACE}" /opt/scripts/ansible_deploy.yaml
rm -rf ${appVersion}.tar.gz
}

rollback(){
ansible-playbook -l ${deployHost} -e "version=${appVersion}" /opt/scripts/ansible_rollback.yaml
}

#发布流程
if [ "${deployType}" == "deploy" ];then
deploy
else
rollback
fi

更新: 2024-07-02 09:47:54