Flow 目前支持三种类型的步骤产物:
通过镜像构建上传至 ACR 或者私有镜像仓库的 Docker 镜像。
构建完成后,使用构建物上传至云效 Packages 的通用制品。
构建完成后,使用构建物上传归档至云效公共存储空间的通用制品。
三种类型的制品上传完成后,会生成步骤产物 artifacts 信息传递给后续部署任务使用。artifacts 本身为一系列关于制品文件的信息组合。
制品信息结构
Docker 镜像
{
"artifact": "yunxiao-demo", //镜像名称
"type": "dockerImage", //制品类型
"dockerUrl": "registry.cn-beijing.aliyuncs.com/yunxiao/yunxiao-demo:1.0" //镜像地址
}
Packages 制品
{
"artifact": "yunxiao-demo", //制品名称
"type": "packages", //制品类型
"repoId": "packages_repo_id", //Packages仓库id
"downloadUrl": "https://packages.aliyun.com/downloadurlxxxx", //制品下载地址
"version": "1.0", //制品版本
"md5": "dfdfdffff" //制品MD5
}
云效公共存储空间通用制品
{
"artifact": "yunxiao-demo", //制品名称
"type": "flowPublic", //制品类型
"downloadUrl": "https://sdfdff", //制品下载地址
"md5": "dffff" //制品MD5
}
示例
跨阶段使用云效公共存储空间通用制品
以下是一个类型为云效公共存储空间通用制品,跨 stages 的 artifacts 生产和使用示例:
name: demo-pipeline
sources:
my_repo:
……
stages:
build_stage:
name: 构建阶段
jobs:
build_job:
name: 构建任务
runsOn: public/beijing-region
steps:
build_step:
step: JavaBuild
name: java构建
with:
run: |
mvn -B clean package -Dmaven.test.skip=true -Dautoconfig.skip
upload_step:
step: ArtifactUpload #步骤ArtifactUpload会上传生成artifact
name: 构建物上传
with:
type: flowPublic
artifact: default #artifact名称default
path:
- target/
- deploy.sh
deploy_stage:
name: 部署阶段
jobs:
deploy_job:
name: 主机组部署任务
component: VMDeploy
with:
artifact: $[stages.build_stage.build_job.upload_step.artifacts.default] #使用步骤upload_step生成的制品default
machineGroup: <your-machine-group-id>
artifactDownloadPath: /home/admin/app/package.tgz
executeUser: root
run: |
mkdir -p /home/admin/application/
tar zxvf /home/admin/app/package.tgz -C /home/admin/application/
sh /home/admin/application/deploy.sh restart
同阶段不同任务使用 Docker 镜像
以下是一个类型为 Docker 镜像,同阶段不同任务内步骤的 artifact 生产和使用示例:
name: demo-pipeline
sources:
my_repo:
……
stages:
my_stage_1:
name: 阶段1
jobs:
my_job_1:
name: 任务1
runsOn: public/beijing-region
steps:
my_step_1:
step: ACRDockerBuild #步骤 ACRDockerBuild 会上传生成artifact
name: 步骤1
with:
region: cn-hangzhou
artifact: my-image
dockerRegistry: registry.cn-hangzhou.aliyuncs.com/cpj-space/my-image
dockerTag: 1.0
dockerfilePath: Dockerfile
certificate:
type: serviceConnection
serviceConnection: <your-service-connection-id>
my_job_2:
needs: my_job_1
name: 任务2
runsOn: public/beijing-region
steps:
my_step_2:
step: Shell
name: 步骤2
with:
run: |
echo $[jobs.my_job_1.my_step_1.artifacts.my-image.dockerUrl] #使用步骤DockerBuildAcr生成的镜像my-image,输出镜像地址
详细说明
生产步骤产物 artifacts
通过云效提供的构建物上传、镜像构建等步骤打包上传镜像制品。 具体查看“流水线步骤 steps”说明。
使用步骤产物 artifacts
流水线后续步骤通过以下语法使用前序步骤的 artifacts:
$[stages.<stage_id>.<job_id>.<step_id>.artifacts.<artifact>]
文档内容是否对您有帮助?