1. 程式人生 > >Jenkins + Gitlab + Ansible--playbook 代碼上線流程(文末有免費視頻)

Jenkins + Gitlab + Ansible--playbook 代碼上線流程(文末有免費視頻)

read 跳轉 ansible 操作 oss 51cto git 關註 點擊

技術分享圖片

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 可以使用的用戶變量:

PropertyDefault
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: 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 代碼上線流程(文末有免費視頻)