目前使用jenkins上线流程图
jenkins构建时支持git选择分支
1.安装Git Parameter插件
1.1在系统管理中的插件管理
1.2然后点击选插件,在右上角输入Git Parameter,找到Git Parameter后点击左下方的的直接安装
2.插件安装成功后,在项目配置中后看到多了一个"参数化构建过程"
勾选"参数化构建过程",然后添加Git Parameter,配置如下
2.1在源码管理中添加(需要提前将公钥设置好)
2.2 参数化构建过程添加git参数 Git Parameter
填写name为release_version,下面使用ansible时需要
填写描述 版本号
2.3 参数化构建过程添加选择型参数 Choice Parameter
3. Build with Parameters 就可以看到效果
4. 构建环境使用shell方式,然后执行ansible-playbook
#!/bin/bash
echo $module
echo $release_version
BUILD_LOG=`git tag -n | grep $release_version | awk '{print $2$3}'` #获取tag注释信息
version="{\"release_version\":\"$release_version\",\"group\":\"$module\"}"
if test ! -z $release_version
then
cd /home/work/ansible_script/ && /bin/ansible-playbook -i host test_online.yml --extra-vars="$version"
fi
5. 上线后为了能及时通知相关人员,可以使用触发脚本的方式发送相关信息
5.1 Jenkins获取运行job的用户名
需要安装user build vars plugin 插件,然后就可以取到$BUILD_USER 变量。
user build vars plugin下载地址
:
https://wiki.jenkins-ci.org/display/JENKINS/Build+User+Vars+Plugin
可以使用的用户变量:
Property | Default |
---|---|
BUILD_USER | Full name (first name + last name) |
BUILD_USER_FIRST_NAME | First name |
BUILD_USER_LAST_NAME | Last name |
BUILD_USER_ID | Jenkins user ID |
BUILD_USER_EMAIL | Email address |
在jenkins任务中使用构建变量:注意需要勾选 "Set jenkins user build variables."
构建环境添加
if [ $? -ne 0 ];then
cd /home/work/ansible_script && python wechat_alert.py @all $BUILD_USER "$module $release_version <div class=\"highlight\">上线失败,请关注</div>" $BUILD_URL $BUILD_LOG
exit 1
else
cd /home/work/ansible_script && python wechat_alert.py @all $BUILD_USER "$module $release_version 已上线" $BUILD_URL $BUILD_LOG
fi
6. 上线后的通知(点击详情可以跳转到build url)
7. ansible-playbook(目前是php的环境laravel框架)
../test_online.yml
---
- hosts: '{{ group }}'
remote_user: work
become: True
become_method: sudo
vars:
work_root_dir: /data/www
module_name: test
work_repo: git@gitlab_host/devops/test.git
module_dir: ./
roles:
- test_online
../roles/test_online
目录结构
.
├── defaults
│ └── main.yml
├── meta
│ └── main.yml
├── README.md
├── tasks
│ ├── deploy.yml # git相关操作
│ ├── directory.yml # 创建目录
│ ├── main.yml
│ └── symlinks.yml # 需要软连的log 等其他目录
└── vars
└── main.yml
ansible-playbook内容可以查看
https://github.com/Blacklight-Design/ansible-laravel5-deploy