本文介绍主机项目是如何通过 Zadig 快速搭建自动化流程,下面以 Microservice-demo 案例为例进行演示,该案例包含 Vue.js 前端服务和 Golang 后端服务,实现的主要功能:分别展示前后端代码的构建时间。

登录 Zadig,进入系统设置 -> 主机管理,点击新建,填写主机信息。

创建

参数说明:

# 步骤一:在主机的 $HOME/.ssh 目录下执行以下命令生成 SSH 密钥对
ssh-keygen -t rsa -C "your_email@example.com" 
# 步骤二:将生成的公钥追加到 $HOME/.ssh/authorized_keys 文件中
cat id_rsa.pub >>  authorized_keys
# 步骤三:将生成的私钥 id_rsa 填入上图私钥字段中

进入 Zadig 系统,点击新建项目 -> 填写项目名称 vm-microservice-demo -> 选择主机项目 -> 点击立即创建 -> 点击下一步

创建项目

创建项目

创建项目

添加 Golang 后端服务

步骤一:点击 + 按钮,输入服务名称 backend,添加服务。

添加服务

步骤二:为 backend 服务配置构建、资源、部署和探活

构建配置

添加服务添加服务

#!/bin/bash
set -ex
env

if [ -e $WORKSPACE/backend ]; then
    rm -rf $WORKSPACE/backend
fi

cp -r $WORKSPACE/zadig/examples/microservice-demo/backend $WORKSPACE/backend
cp $WORKSPACE/zadig/examples/microservice-demo/vm/restart.sh $WORKSPACE/backend/restart.sh
cd $WORKSPACE/backend
chmod +x restart.sh
make build-backend
tar cvf $PKG_FILE backend

资源配置

分别为 dev 环境和 qa 环境配置主机资源。

资源配置

部署配置

部署配置

#!/bin/bash
set -ex

env

if [ $ENV_NAME = "dev" ]; then
    VM_NAME="vm_172" # 配置给 dev 环境使用的云主机的名称
elif [ $ENV_NAME = "qa" ]; then
    VM_NAME="vm_172" # 配置给 qa 环境使用的云主机的名称
fi

AGENT_NAME="vm_172"

eval AGENT_PK=\${${AGENT_NAME}_PK}
eval AGENT_PORT=\${${AGENT_NAME}_PORT}
eval VM_USERNAME=\${${VM_NAME}_USERNAME}
eval VM_IP=\${${VM_NAME}_IP}

scp -P $AGENT_PORT -i $AGENT_PK $ARTIFACT  $VM_USERNAME@$VM_IP:/cfs/microservice/backend/$PKG_FILE
scp -P $AGENT_PORT -i $AGENT_PK $WORKSPACE/backend/restart.sh  $VM_USERNAME@$VM_IP:/cfs/microservice/backend/restart.sh
ssh -p $AGENT_PORT -i $AGENT_PK $VM_USERNAME@$VM_IP 'cd /cfs/microservice/backend && ./restart.sh '$PKG_FILE''

探活配置

部署配置

填写完毕后,点击保存按钮完成 backend 服务的配置。

添加 Vue.js 前端服务

点击 + 按钮继续新建 frontend 服务并完成构建、资源、部署配置。

构建配置

服务构建

#!/bin/bash
set -ex

cd $WORKSPACE/zadig/examples/microservice-demo/frontend
make install-frontend-dep build-frontend
tar cvf $PKG_FILE dist

资源配置

backend 服务,此处不再赘述。

资源配置

部署配置

服务部署

#!/bin/bash
set -ex

if [ $ENV_NAME = "dev" ]; then
    VM_NAME="vm_172" # 配置给 dev 环境使用的云主机的名称
elif [ $ENV_NAME = "qa" ]; then
    VM_NAME="vm_172" # 配置给 qa 环境使用的云主机的名称
fi

AGENT_NAME="vm_172"
eval AGENT_PK=\${${AGENT_NAME}_PK}
eval AGENT_PORT=\${${AGENT_NAME}_PORT}
eval VM_USERNAME=\${${VM_NAME}_USERNAME}
eval VM_IP=\${${VM_NAME}_IP}

scp -P $AGENT_PORT -i $AGENT_PK $ARTIFACT $VM_USERNAME@$VM_IP:/cfs/microservice/frontend/$PKG_FILE
ssh -p $AGENT_PORT -i $AGENT_PK $VM_USERNAME@$VM_IP 'cd /cfs/microservice/frontend && 'rm -rf dist' && 'tar xvf $PKG_FILE' && 'rm $PKG_FILE''

填写完毕后,点击保存按钮完成 frontend 服务的配置。

点击向导的下一步,这时,Zadig 会根据你的配置,创建两套环境以及自动化工作流。继续点击下一步 -> 完成结束项目向导。

加入环境

完成向导

选择 vm-microservice-demo-workflow-dev 工作流 -> 点击执行 -> 选择服务,对 dev 环境的服务进行更新。

点击「运行」,可以运行工作流任务。

启动工作流

启动工作流

触发工作流后,可查看工作流运行状况,点击服务左侧的展开图标可查看服务构建的实时日志。

工作流运行

待工作流运行完毕,进入环境查看服务状态,可看到配置了探活检测的 backend 服务已正常运行。

服务状态

访问服务,可看到前后端构建时间也在服务中体现出来。

访问服务

添加触发器,使得代码 Push commit、Pull Request、Push tag 都能自动触发部署服务。

配置工作流

配置工作流

提交代码变更提交代码变更

提交代码变更

配置工作流 -> 参考 IM 通知填写相关配置 -> 保存修改。

IM 配置

工作流执行后,会自动将运行结果和环境、服务等信息推送到 IM 系统中,方便及时跟进。

IM 通知