Jenkins + Gitlab + Ansible--playbook 代码上线流程

《Jenkins + Gitlab + Ansible--playbook 代码上线流程》 目前使用 jenkins 上线流程图

jenkins 构建是支持 git 选择分支

  • 安装 Git Parameter 插件
  • 在系统管理中的插件管理

    《Jenkins + Gitlab + Ansible--playbook 代码上线流程》

    然后点击选插件,在右上角输入 Git Parameter,找到 Git Parameter 后点击左下方的的直接安装 。

参数化构建过程

插件安装成功后,在项目配置中后看到多了一个”参数化构建过程”

勾选”参数化构建过程”,然后添加 Git Parameter , 配置如下

在源码管理中添加(需要提前将公钥设置好)

《Jenkins + Gitlab + Ansible--playbook 代码上线流程》

参数化构建过程添加 git 参数 Git Parameter

填写 name 为 release_version,下面使用 Ansible 时需要填写描述 版本号

《Jenkins + Gitlab + Ansible--playbook 代码上线流程》

参数化构建过程添加选择型参数 Choice Parameter

《Jenkins + Gitlab + Ansible--playbook 代码上线流程》

Build with Parameters

Build with Parameters 就可以看到效果

《Jenkins + Gitlab + Ansible--playbook 代码上线流程》

构建环境使用 shell 方式

构建环境使用 shell 方式 ,然后执行 ansible-playbook。

《Jenkins + Gitlab + 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 可以使用的用户变量:

《Jenkins + Gitlab + Ansible--playbook 代码上线流程》

在 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)

《Jenkins + Gitlab + Ansible--playbook 代码上线流程》

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

微信后台回复 python、自动化即可获得相应课程的试听资料

运维自动化班 6 期火热报名中

课程概述:

理论结合实战,使学员既可掌握快速从零构建一套实用、完整、可扩展的运维自动化平台。


Django 基础

  • Django 类视图
  • Django 模型
  • Django 权限
  • Django rest framework
  • Django视图综述及综合实战


SQL 自动化上线平台

  • 手动VS自动的现状对比
  • Mysql,Inception,SQLAdvisor 讲解
  • 用户权限设计,执行流程梳理,平台登录双因子安全认证
  • 敏感配置加解密实现,人员/数据库配置设计,整体代码实现


公有云管理系统

  • 通过API对「Aws、阿里云、腾讯云、青云、百度云」管理
  • 工单系统和云管理平台联动
  • 后续展望:公有云账单、比价、资源监控


任务管理系统

  • Ansible 简介及常用场景分析
  • Ansible API 二次开发入门
  • 基于Ansible Playbook API 快速实现任务管理系统


运维工单系统

  • 工作中流程规范的设计思路
  • 典型工单系统的实现原理 —— 状态机


代码管理系统及发布平台

  • 基于 Gitlab + Jenkins + DevOps 平台实现 CI/CD 的设计思路
  • 结合运维平台流程规范实现持续集成与交付
  • 展望:结合 ELK 的日志分析平台,实现代码上线运维无人值守


赠送 SaltStack 二次开发视频

  • SaltStack 快速入门
  • SaltStack 数据系统
  • SaltStack 远程执行
  • SaltStack 配置管理
  • SlatStack 管理实践
  • SaltStack 实践案例
  • SaltStack 常用 API 使用及源码剖析
  • SaltStack 怎么和发布平台联动
    上课模式:
    网络直播班 线下面授班
    咨询报名:
    QQ(1):979950755 小月
    WeChat : 1902433859 小月
    开课时间:12月24日(周日)
    课程大纲
    原文作者:51reboot
    原文地址: https://www.jianshu.com/p/0bb9aac70cb6
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞