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." 构建环境添加

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

上线后的通知( 点击详情可以跳转到 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: [email protected]_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 实践

观看地址:视频教程

原文地址:https://www.cnblogs.com/reboot51/p/9073487.html

时间: 2024-10-12 02:18:02

Jenkins + Gitlab + Ansible--playbook 代码上线流程(文末有免费视频)的相关文章

Jenkins+GitLab+Ansible playbook安装与基本使用

GitLab 什么是GitLab? GitLab是一个开源分布式版本控制系统,开发语言为Ruby,功能为管理项目源代码.版本控制.代码复用与查找 GitLab与GitHub的不同 github分布式在线代码托管仓库,个人版本可直接在线免费使用,企业版本收费且需要服务器安装gitlab分布式在线代码仓库托管软件,分社区免费版本与企业收费版本,都需要服务器安装 GitLab的优势和应用场景 ? 开源免费,适合中小型公司将代码放置在该系统中 ? 差异化版本管理,离线同步y以及强大分支管理功能 ? 便捷

Jenkins+Gitlab+Ansible自动化部署(六)

Pipeline Job实现Nginix+MySQL+PHP+Wordpress实现自动化部署交付(Jenkins+Gitlab+Ansible自动化部署(五)https://www.cnblogs.com/zd520pyx1314/p/10249094.html) 环境准备 编写ansible playbook脚本实现Wordpress远程部署 将wordpress源码与playbook部署脚本提交到gitlab仓库 编写pipeline job脚本实现Jenkins流水线持续交付流程 Jen

代码上线流程以及版本发布小结

之前的上线流程很简单粗暴如图: 这简直是灾难性质的,上传 SVN,在测试服务器上看看正在调试的接口没问题,直接 sync 到线上服务器.代码无法回滚,只能覆盖.而客户端的同学需要稳当的 api 作为调试,最初的做法,他们需要新数据,我们就需要上线代码.这很坑爹,也许某人某段代码正写了一半,又正好提交.被另外一个人上线了,那么就线上出了严重 BUG.对此我们很头疼,所以做了如下规划: 首先建立三个版本库 开发服务版本库(对应图片中 dev,假设为 http://211.155.84.144/top

SVN代码上线流程

为了确保维护svn代码的正确性,特制定上传代码流程如下: 开发人员开发: 开发人员本地分支----取得svn最新代码(根据前一天的最后tag合并)-----代码开发----提交分支. 合并时候注意事项,对于冲突的文件看是不是自己本地正在修改的文件,不是的话就按照诛仙的tag来覆盖,否则按照本地,最好提前解决冲突问题(不好操作的话就被分好自己本地代码,讲SVN代码拿过来,好好看一下冲突冲突的问题),这样在回合的时候就可以按照自己分支来操作了(当然我们也要看一下,以防止别人先合并) 开发人员代码合并

svn详细介绍,独立安装配置,hooks的配置管理以及大型门户网站代码上线流程

代码发布方案: 1,安装,优化 软件环境,(nginx,lvs)  <-------运维工程师 2,程序代码(不断更新).   <--------开发工程师,(开发,运维都可以发布) 3,配置变更(不断变更).   <--------运维工程师. 一.版本控制管理工具SVN详解 1.1 什么是SVN(subversion) ? SVN是近年来非常优秀的版本管理工具,与CSV管理工具一样,SVN是一个跨平台开元版本控制系统,但是SVN与众不同的是,SVN会备份并记 录每个文件每一次的修改更

代码上线流程

目录 上线流程 填写申请单 运维人员操作流程 上线流程 填写申请单 填写<系统变更.上线申请单> 顶目名称:顶目名称,如 Linux运维 项目版本:版本号 申请时间:需在工作日13点前作出申请 上线时间:由运维经理指定上线时间(一般是工作日下午17点左右,紧急情况例外) 完成时间:代码上线所有操作完成时间(代码上线.回滚,确认) 变更内容:需申请人对此处上线引起的结构.内容等变化,详细记录 申请人:填写申请代码上线人的姓名 上线人:填写服务器操作人的姓名(由运维经理指定) 技术经理:技术经理亲

源码分析 Kafka 消息发送流程(文末附流程图)

温馨提示:本文基于 Kafka 2.2.1 版本.本文主要是以源码的手段一步一步探究消息发送流程,如果对源码不感兴趣,可以直接跳到文末查看消息发送流程图与消息发送本地缓存存储结构. 从上文 初识 Kafka Producer 生产者,可以通过 KafkaProducer 的 send 方法发送消息,send 方法的声明如下: Future<RecordMetadata> send(ProducerRecord<K, V> record) Future<RecordMetada

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 +gitlab 自动化代码秒级上线

一,配置脚本 1 #!/bin/bash 2 #目标服务器IP地址 3 host=$1 4 #job名称 5 job_name=$2 6 #包名 7 name=web-$(date +%F)-$(($RANDOM+10000)) 8 #打包 9 cd /var/lib/jenkins/workspace/${job_name} && tar czf /opt/${name}.tar.gz ./* 10 #发送包到目标服务器 11 ssh ${host} "cd /var/www/