Zadig 文档
Zadig
论坛
关于
Zadig
论坛
关于
v1.14.0
Loading...
      编辑文档
      反馈问题
      Slack 上联系我们

    本页导航

    工作流任务

    本文介绍如何在 Zadig 系统中使用自定义任务来实现工作流的开放能力,以下内容包括:如何研发实现自定义任务、如何使用自定义任务。

    # 实现自定义任务

    编码实现自定义工作流任务,并将代码和配置入库,下面以打印 Hello Zadig 任务为例说明。

    第一步:编码实现自定义任务的逻辑并保存,本例的源码 main.go 内容如下:

    package main
    
    import (
        "fmt"
        "github.com/spf13/viper"
    )
    
    const WhoAmI = "WHO_AM_I"
    
    func main() {
        viper.AutomaticEnv()
    
        who_am_i := viper.GetString(WhoAmI)
        fmt.Printf("Hello %s", who_am_i)
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15

    第二步:编译源代码,构建出镜像并 push 到镜像仓库中,相关命令及 Dockerfile 参考如下:

    编译源码命令

    CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -v -o greeting-bot main.go
    
    1

    Dockerfile 内容:

    FROM alpine/git:v2.30.2
    
    # https://wiki.alpinelinux.org/wiki/Setting_the_timezone
    RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories && apk add tzdata && \
        cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
        echo Asia/Shanghai  > /etc/timezone && apk del tzdata
    
    WORKDIR /app
    ADD greeting-bot .
    ENTRYPOINT ["/app/greeting-bot"]
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10

    镜像构建及 push 命令:

    docker build -f Dockerfile --tag koderover.tencentcloudcr.com/koderover-public/greeting-bot:amd64
    docker push koderover.tencentcloudcr.com/koderover-public/greeting-bot:amd64
    
    1
    2

    第三步:编写 YAML 格式的任务配置文件,并将该 YAML 文件提交到代码库中。本例的 YAML 配置文件 bot.yaml 如下:

    name: "输出 Hello 问候信息"           # 任务名称
    version: "v0.0.1"                   # 任务版本
    description: "和指定用户 say Hello"   # 任务描述
    image: koderover.tencentcloudcr.com/koderover-public/greeting-bot:amd64 # 上一步中构建出来的镜像
    
    inputs:                             # 配置在 Zadig 中可填写的变量
      - name: who_am_i                  # 变量名称
        description: "who am i"         # 变量描述
        type: string                    # 变量类型,支持 string(单行文本)和 text(多行文本)两种类型
        default: "Zadig"                # 变量的默认值
    
    envs:                               # 环境变量,启动上述镜像容器时会自动注入为环境变量,除了 envs,还支持使用 cmds 和 args
      - name: WHO_AM_I                  # 环境变量名称
        value: $(inputs.who_am_i)       # 环境变量的值,使用 $(inputs.who_am_i) 形式表示使用 Zadig 中的输入
    
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15

    代码库中目录结构组织满足如下形式:

    path/to/your/repo                # 代码库根目录
    ├── greeting-bot                 # 任务目录,有多个任务时,组织在单独的目录中
    │   └── v0.0.1                   # 版本号
    │       └── bot.yaml             # 任务的 YAML 文件
    
    1
    2
    3
    4

    至此,一个完整的自定义工作流任务开发完毕,接下来我们看如何使用该任务。

    # 使用自定义任务

    在使用任务之前,需要先在系统中集成代码源和镜像仓库,配置工作流任务来源:

    1. 参考 代码源集成,将上述代码库在 Zadig 中集成。
    2. 参考 镜像仓库集成,将构建镜像对应的镜像仓库在 Zadig 中集成。
    3. 系统管理员访问 系统设置 -> 集成管理 -> 工作流任务,配置代码仓库、分支等信息后保存(即:YAML 配置文件所在的代码库和分支)。

    若集成来源成功后,代码库中任务实现有改动,点击 同步 即可。

    pipeline_task

    配置完毕后,在自定义工作流中添加任务,选择任务后保存工作流即可,更多进阶功能可参考 自定义工作流。

    pipeline_task pipeline_task

    # 更多 Demo

    官方内置了以下自定义任务可直接使用:

    • Jira Issue 状态变更:结合 Zadig 工作流阶段来变更 Jira Issue 状态,打通与项目管理的联动。源码位于 jira-updater (opens new window)。
    • 执行 Jenkins Job:传入 Jenkins 构建参数,触发指定的 Jenkins Job 执行,源码位于 jenkins-runner (opens new window)。
    • MySQL 数据库变更:对 MySQL 数据库执行 SQL 语句,实现数据和代码变更联动变更,源码位于 mysql-runner (opens new window)。

    此外,还开放了工作流任务共享代码库:koderover/zadig-jobs (opens new window),其中包含若干 demo 实现和场景描述,供开发者使用和参考。

    ← 构建镜像管理 镜像仓库→

    资源
    文档
    论坛
    公司
    关于我们
    加入我们
    联系我们
    微信扫一扫
    hello@koderover.com
    上海市浦东软件园

    © 2023 筑栈(上海)信息技术有限公司 沪 ICP 备 19000177 号 - 1

    •  跟随系统
    •  浅色模式
    •  深色模式
    •  阅读模式