Jenkins+Gitlab+ansible-playbook上线流程

目前使用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

时间: 2024-09-23 06:31:31

Jenkins+Gitlab+ansible-playbook上线流程的相关文章

jenkins结合ansible用shell实现自动化部署和回滚

最近用jenkins+gitlab+ansible做持续化集成,自动化部署和版本回滚.然而deploy plugin没能做到增量升级和回滚操作,折腾了很久决定自己写个脚本来简单实现. 环境: centos 7.0 64位 gitlab:v2.9.0 git:2.9 jenkins 1.651.3.git plugin.GitLab Plugin.Dynamic Parameter Plug-in等 ansible:2.1.0.0 各工具职能: 1.gitlab做版本管理 2.jenkins根据指

一步一步用jenkins,ansible,supervisor打造一个web构建发布系统

新blog地址:http://hengyunabc.github.io/deploy-system-build-with-jenkins-ansible-supervisor/ 一步一步用jenkins,ansible,supervisor打造一个web构建发布系统. 本来应该还有gitlab这一环节的,但是感觉加上,内容会增加很多.所以直接用github上的spring-mvc-showcase项目来做演示. https://github.com/spring-projects/spring-

jenkins集成ansible注意事项Failed to connect to the host via ssh.

  在集成jenkins和ansible实现自动化部署时,root用户下执行ansible命令时可以正常运行.由于是通过jenkins用户去执行ansible命令,而jenkins用户却报如下异常: XXXXXXX | UNREACHABLE! => { "changed": false, "msg": "Failed to connect to the host via ssh.", "unreachable": tr

Jenkins与网站代码上线解决方案

1.1 前言   Jenkins是一个用Java编写的开源的持续集成工具.在与Oracle发生争执后,项目从Hudson项目独立. Jenkins提供了软件开发的持续集成服务.它运行在Servlet容器中(例如Apache Tomcat).它支持软件配置管理(SCM)工具(包括AccuRev SCM.CVS.Subversion.Git.Perforce.Clearcase和RTC),可以执行基于Apache Ant和Apache Maven的项目,以及任意的Shell脚本和Windows批处理

155.5. ansible-playbook - run an ansible playbook

定义组 # cat /etc/ansible/hosts [www] 192.168.2.23 创建yml文件 # cat test.yml --- - hosts: www user: root tasks: - name: no selinux action: command /usr/sbin/setenforce 0 - name: no iptables action: service name=iptables state=stopped - name: made up task j

jenkins gitlab整合注意事项

  jenkins整合gitlab时,Source Code Management添加gitlab仓库路径无论怎么尝试都报如下两个异常: Failed to connect to repository : Command "git ls-remote -h git@xxxxx.com:xxx/dev_test.git HEAD" returned status code 128: stdout: stderr: Permission denied, please tryagain. P

Akamai支持新标准 简化直播视频上线流程

近日,云服务提供商Akamai宣布将为新兴的MPEG-DASH和HTTP动态流 (HDS)技术标准提供原生支持,进一步简化直播和流媒体节目的互联网发布流程.通过将更多的技术标准引入公司全球化分布的直播入口节点,Akamai期待为客户通过日益繁多的互联网设备时,实现更高灵活性. MPEG-DASH是一种同时可以满足通过互联网和有线电视广播网络的互动电视的技术标准,可满足混合型广播宽带电视业务(HbbTV)的要求;HDS则广泛应用于给予Adobe Flash的流媒体视频.DASH和HDS将与Akam

App上线流程全攻略(史上最详细步骤)

/*****************************************2************************************************/ /*3(我这里省了创建证书,创建证书和真机调试里面差别不大,选择下面的"Production"中AppStore)*******/ /*************4(如果有远程推送APNS,那里就不是默认了,记得勾选"Push Notifications")**************

DNF佣兵系统上线 流程及奖励介绍

&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp; 阿拉德冒险团:佣兵系统 同一个账号下同一个大区内70级角色指定成佣兵,可以出战:诺斯玛尔.安特贝鲁峡谷.海上列车.异次元裂缝.时空之门.能源中心或者随机地区:出战期间内可以获得金币奖励的同时还可以有概率获得特殊道具:佣兵角色的出战时间越短.装备的时装等级越高,奖励则会越丰富:佣兵出战期间内,无法登录角色:取消出战的话,则可正常登陆角色,没有惩罚,只需根据登录佣兵的时