步骤产物 artifacts

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>]