Jenkins + Gitlab + Ansible--playbook 代码上线流程(文末有免费视频)
jenkins 构建是支持 git 选择分支
安装 Git Parameter 插件
在系统管理中的插件管理
然后点击选插件,在右上角输入 Git Parameter,找到 Git Parameter 后点击左下方的的直接安装 。
参数化构建过程
插件安装成功后,在项目配置中后看到多了一个"参数化构建过程"
勾选"参数化构建过程",然后添加 Git Parameter , 配置如下
在源码管理中添加(需要提前将公钥设置好)
参数化构建过程添加 git 参数 Git Parameter
填写 name 为 release_version,下面使用 Ansible 时需要填写描述 版本号
参数化构建过程添加选择型参数 Choice Parameter
Build with Parameters
Build with Parameters 就可以看到效果
构建环境使用 shell 方式
构建环境使用 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
线后发送信息
上线后为了能及时通知相关人员,可以使用触发脚本的方式发送相关信息
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." 构建环境添加
];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 else cd /home/work/ansible_script && python wechat_alert.py @all $BUILD_USER "$module $release_version 已上线" $BUILD_URL $BUILD_LOG fi
上线后的通知( 点击详情可以跳转到 build url)
ansible-playbook
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
更多详情加技术交流群:238757010
这里有几份免费视频资料送大家
《Python 开发环境搭建》
一:环境介绍
二:安装软件并启动 VM
三:安装 Python
四:初始化 Django 配置
Jenkins+Ansible+Gitlab自动化部署(CI/CD)
Django REST FrameWork 实践
观看地址:视频教程
Jenkins + Gitlab + Ansible--playbook 代码上线流程(文末有免费视频)的更多相关文章
- Jenkins+Gitlab+Ansible自动化部署(六)
Pipeline Job实现Nginix+MySQL+PHP+Wordpress实现自动化部署交付(Jenkins+Gitlab+Ansible自动化部署(五)https://www.cnblogs. ...
- Jenkins+Gitlab+Ansible自动化部署(五)
Freestyle Job实现静态网站部署交付(接Jenkins+Gitlab+Ansible自动化部署(四)https://www.cnblogs.com/zd520pyx1314/p/102445 ...
- Jenkins+Gitlab+Ansible自动化部署(三)
接Jenkins+Gitlab+Ansible自动化部署(一)https://www.cnblogs.com/zd520pyx1314/p/10210727.html 和(二)https://www. ...
- Jenkins+Gitlab+Ansible自动化部署(一)
首先准备实验环境 虚拟机 主机名 IP地址 服务 系统版本 内核版本 Vmware Workstation 14 gitlab.example.com 192.168.244.130 gitlab ...
- Jenkins+Gitlab+Ansible自动化部署(四)
接Jenkins+Gitlab+Ansible自动化部署(三)https://www.cnblogs.com/zd520pyx1314/p/10235394.html Jenkins应用 Jenkin ...
- Jenkins+Gitlab+Ansible自动化部署(二)
接Jenkins+Gitlab+Ansbile自动化部署(一):https://www.cnblogs.com/zd520pyx1314/p/10210727.html Ansible的配置与部署 工 ...
- 源码分析 Kafka 消息发送流程(文末附流程图)
温馨提示:本文基于 Kafka 2.2.1 版本.本文主要是以源码的手段一步一步探究消息发送流程,如果对源码不感兴趣,可以直接跳到文末查看消息发送流程图与消息发送本地缓存存储结构. 从上文 初识 Ka ...
- i春秋官网4.0上线啦 文末有福利
爱瑞宝地(Everybody)期待了很久的 i春秋官网4.0上线啦 除了产品的功能更加完善 性能和体验也将大幅度提高 清新.舒适的视觉感受 搭配更加便捷的操作流程 只需一秒,扫码立即登录 即刻进入网络 ...
- 实用代码|javaMail发送邮件(文末重磅资源!)
每天进步一点点,距离大腿又近一步!阅读本文大概需要5分钟 JavaMail发送邮件,简单实用,了解一下呗~ 1.开启邮箱MAP/SMTP服务,获取第三方授权码 以QQ邮箱为例 2.主要代码 maven ...
随机推荐
- CSS学习摘要-层叠和继承
当有多个选择器作用在一个元素上时,哪个规则最终会应用到元素上? 其实这是通过层叠机制来控制的,这也和样式继承(元素从其父元素那里获得属性值)有关. 元素的最终样式可以在多个地方定义,它们以复杂的形式相 ...
- [EffectiveC++]item46:需要类型转换时请为模板定义非成员函数
- in有两种用法:
# in有两种用法: 1. 在for中. 是把每一个元素获取到赋值给前⾯的变量. 2. 不在for中. 判断xxx是否出现在str中. #len() 为内置函数,输出为1,2,3,4....., 长度 ...
- debian安装及使用mysql
在Debian中安装MySQL服务器是很方便的,使用apt-get命令即可完成. debian:~# apt-get install mysql-server mysql-client mysql-s ...
- debian 7 linux 安装jdk出现Error occurred during initialization of VM java/lang/NoClassDefFoun
debian 7 linux 安装jdk出现Error occurred during initialization of VM java/lang/NoClassDefFoun 这两天一直研究lin ...
- 扯不清楚的virtual和abstract
定义Person类: class Person { public void Say() { Console.WriteLine("I am a person"); } } 现在,我 ...
- 超链接<a>标签用法
1.a标签点击事件 1>1a href="javascript:js_method();" 这是我们平台上常用的方法,但是这种方法在传递this等参数的时候很容易出问题,而且 ...
- Docker镜像搭建Linux下samba共享目录
Samba 是 SMB/CIFS 网络协议的重新实现, 它作为 NFS 的补充使得在 Linux.OS/2.DOS 和 Windows 系统中进行文件共享.打印机共享更容易实现.SMB协议是客户机/服 ...
- 最简单的方式在linux上升级node.js版本
node的升级频率太高,n模块来升级是最方便的,网上看了很多资料介绍使用n模块,但是安装n模块之后却经常找不到这个命令 很多同学安装之后直接去使用n会发现命令不存在,就停留在这一步无法前进了. 解决 ...
- 多线程之并发容器ConcurrentHashMap
这部分内容转载自: http://www.haogongju.net/art/2350374 JDK5中添加了新的concurrent包,相对同步容器而言,并发容器通过一些机制改进了并发性能.因为同步 ...