前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >用审批流程实现运维自动化发布

用审批流程实现运维自动化发布

作者头像
以谁为师
发布2023-09-12 09:40:22
5300
发布2023-09-12 09:40:22
举报

通过实现自动化流程可以减少人工介入和手动干预,从而实现更高效的流程。审批通过后,Jenkins 自动化发布可以自动触发构建和部署过程,减少人工错误和延迟,将结果实时推送群通知提高沟通效率。

发布申请

流程
用审批流程实现运维自动化发布_Server
用审批流程实现运维自动化发布_Server
  • 钉钉/飞书审批订阅:

需要创建一个审批流程通过钉钉的审批应用或飞书的审批功能来实现。在流程中添加适当的字段来收集用户输入的数据,如代码版本、部署环境等信息

  • 接收审批结果:

钉钉和飞书提供了审批结果的回调机制需要创建一个接收回调的服务

  • 触发 Jenkins 自动化发布

收到审批结果回调后,根据审批结果将触发 Jenkins 的自动化发布

发布申请

Lark PC或APP端通过「工作台」-「审批」查找

用审批流程实现运维自动化发布_Server_02
用审批流程实现运维自动化发布_Server_02
用审批流程实现运维自动化发布_Server_03
用审批流程实现运维自动化发布_Server_03

创建飞书 审批

飞书&Lark PC或APP端:「工作台」-「审批中心」-「管理后台」

创建审批

用审批流程实现运维自动化发布_回调接口_04
用审批流程实现运维自动化发布_回调接口_04

审批设计

保存 approval_code id 订阅审批事件时需要

用审批流程实现运维自动化发布_Developer_05
用审批流程实现运维自动化发布_Developer_05
用审批流程实现运维自动化发布_回调接口_06
用审批流程实现运维自动化发布_回调接口_06

创建应用

开发者后台 - 创建应用

https://open.larksuite.com/app

添加订阅事件

  1. 提供后端回调接口
  2. 添加订阅事件并授权
用审批流程实现运维自动化发布_Developer_07
用审批流程实现运维自动化发布_Developer_07

激活订阅审批

应用订阅 approval_code 后,该应用就可以收到该审批定义对应实例的事件通知。同一应用只需要订阅一次,无需重复订阅。 当应用不希望再收到审批事件时,可以使用取消订阅接口进行取消,取消后将不再给应用推送消息。

用审批流程实现运维自动化发布_回调接口_08
用审批流程实现运维自动化发布_回调接口_08

Subscribe to approval events - Server Docs - Documentation - Lark Developer

后端开发

架构图

用审批流程实现运维自动化发布_回调接口_09
用审批流程实现运维自动化发布_回调接口_09

开发环境

  • 前端: vue3 element-plus
  • 后端: Django REST framework
用审批流程实现运维自动化发布_Server_10
用审批流程实现运维自动化发布_Server_10
用审批流程实现运维自动化发布_Server_11
用审批流程实现运维自动化发布_Server_11

群消息推送

用审批流程实现运维自动化发布_Developer_12
用审批流程实现运维自动化发布_Developer_12

Jenkins CI&CD

构建步骤 - 执行shel

代码语言:javascript
复制
source /etc/profile
tag=`date "+%Y%m%d%H%M"` && echo Date:"$tag" # 获取Tag日期 tag=202308032124
namespace=${JOB_BASE_NAME%%-*} # 拼接命名空间 bos-server => bos

# 打包
cd ${WORKSPACE} && pwd
mvn clean package
# 构建镜像
docker build -t harbor.test.cc/pro/${JOB_BASE_NAME}:${tag} -f Dockerfile . # 构建镜像
docker push harbor.test.cc/pro/${JOB_BASE_NAME}:${tag} # 推送新镜像到仓库



# Kuboard api基于镜像版本发布
curl -X PUT \
    -H "content-type: application/json" \
    -H "Cookie: KuboardUsername=admin; KuboardAccessKey=kkcrdrhk4j2p.xxxxx" \
    -d '{"kind":"deployments","namespace":"'$namespace'","name":"'${JOB_BASE_NAME}'","images":{"harbor.test.cc/pro/'${JOB_BASE_NAME}'":"harbor.test.cc/pro/'${JOB_BASE_NAME}:${tag}'"}}' \
    "http://kuboard.test.cc/kuboard-api/cluster/pro-eks-serverless/kind/CICDApi/logan/resource/updateImageTag"

构建后操作 - Post build task

代码语言:javascript
复制
#!/bin/bash

webhookURL=https://open.larksuite.com/open-apis/bot/v2/hook/xxxxxxxxx(发布变更群)


getBuildState(){
  buildNr=$1
  curl -u jenkins:xxxxxx  ${JOB_URL}/${buildNr}/api/json |grep -Po '"result":\s*"\K\w+'
}

state=$(getBuildState ${BUILD_NUMBER}  )
nowTime=$(date "+%Y-%m-%d %H:%M:%S")
echo ${state}


if [[ "x${state}" == "xSUCCESS" ]] ; then
   curl -X POST -H "Content-Type: application/json" \
        -d '{"msg_type":"post","content": {"post": {"zh_cn": {"title": "发布结果通知","content": [[{"tag": "text","text": "'"应用: $JOB_BASE_NAME\n分支: $SELECT\n构建: $BUILD_DISPLAY_NAME\n状态: 成功\n日期: $nowTime "'"}]]} } }}' \
$webhookURL
else
   curl -X POST -H "Content-Type: application/json" \
        -d '{"msg_type":"text","content":{"text":"'"应用: $JOB_BASE_NAME\n分支: $SELECT\n状态: 失败\n日期: $nowTime\nURL: $JOB_URL "'"}}' \
$webhookURL
fi
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 发布申请
    • 流程
      • 发布申请
      • 创建飞书 审批
        • 创建审批
          • 审批设计
          • 创建应用
            • 添加订阅事件
              • 激活订阅审批
              • 后端开发
                • 架构图
                  • 开发环境
                  • 群消息推送
                  • Jenkins CI&CD
                    • 构建步骤 - 执行shel
                      • 构建后操作 - Post build task
                      相关产品与服务
                      容器服务
                      腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档