工作流的阶段划分了以下几个阶段:<code>Clone 代码</code>-><code>单元测试</code>-><code>Golang 编译打包</code>-><code>Docker 镜像构建/推送</code>-><code>Kubectl 部署服务</code>。
关于<code>Tekton</code>部署使用详见K8S 部署 Tekton Trigger 的使用。
在<code>Tekton</code>中我们就可以将这些阶段直接转换成<code>Task</code>任务,首先,我们先获取测试用的代码仓库:
所有的部署流程代码文件,我已整理好:
说明: 一般来说我们只需要提供<code>output</code>这个个用于持久化代码的 workspace,然后还包括<code>url</code>和<code>revision</code>这两个参数,其他使用默认的即可。
单元测试阶段比较简单,正常来说也是只是单纯执行一个测试命令即可,我们这里没有真正执行单元测试,所以简单测试下即可,apply 一个如下所示的 Task:
创建如下所的 Task 任务,首先需要通过定义一个 workspace 把 clone 任务里面的代码关联过来:
说明:
<code>docker build --no-cache -f ./Dockerfile -t $(params.image) . --network=host</code>后面加上 network ,否则镜像会打包失败,报错如下:
说明:<code>deploy</code>和<code>rollback</code>两部分我后面将使用<code>Argo CD</code>做 CD ,所以这里仅是简单介绍。
使用<code>tekton CLI</code>工具,安装详见Tekton CLI。
在 Dashboard 上也可以看到可以流水线可以正常执行,由于部署成功了,所以 rollback 回滚的任务也就被忽略了:
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLi0zaHRGcWdUYuVzVa9GczoVdG1mWfVGc5RHLwIzX39GZhh2csATMflHLwEzX4xSZz91ZsADMx8FdsYkRGZkRG9lcvx2bjxSa2EWNhJTW1AlUxEFeVRUUfRHelRHL0EzXlpXazxyayFWbyVGdhd3LcV2Zh1Wa9M3clN2byBXLzN3btg3PnVGcq5yM4MmMihjY0QGOwgTZzAjNmNTNkdTMwEWN1Q2NxQjNh9CX5EzLchDMxIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjL0M3Lc9CX6MHc0RHaiojIsJye.jpeg)
Tekton流水