开发者社区 > 云原生 > Serverless > 正文

函数计算在应用中 流水线yaml配置中 构建镜像时如何获取上一步的构建产物?

函数计算在应用中 流水线yaml配置中 构建镜像时如何获取上一步的构建产物?

  • name: image-build
    context:
    data:
    # 任务显示名字,用于在控制台中展示
    displayName: 镜像构建
    # 打开任务执行,默认关闭
    enable: true
    # 指定构建信息
    build:
      # 指定dockerfile,使用代码仓库中的相对路径。不指定时默认为./Dockerfile
      dockerfile: code/Dockerfile
      # 指定镜像名,必须是ACR镜像
      image: registry-vpc.cn-hangzhou.aliyuncs.com/pipeline-demo/demo-repo:debug
    
    taskTemplate: build-image-task

展开
收起
三分钟热度的鱼 2024-08-07 20:00:54 54 0
1 条回答
写回答
取消 提交回答
  • 在阿里云函数计算(FC)服务中,如果您希望在流水线的yaml配置里,让构建镜像的任务能够获取上一步的构建产物,通常需要利用流水线任务间的依赖关系管理和输出变量(artifact)来实现这一需求。具体操作如下:

    定义上一步任务的输出(artifact):
    在产生构建产物的上游任务中,您需要定义其输出(artifact),这样后续任务才能访问这些产物。例如,如果前一步是一个代码编译任务,您应该在该任务的配置中声明产出的代码或编译结果作为artifact。

    name: code-compile
    context:
    data:
    displayName: 代码编译
    enable: true

    ... 其他配置

    outputs:

    • name: compiled-code # 输出名称,用于后续步骤引用
      path: ./output # 编译产物的相对路径或绝对路径

    在镜像构建任务中引用上一步的输出:
    在构建镜像的任务配置中,使用inputs属性来指定依赖哪些上游任务的输出。这使得构建镜像任务能够访问到之前步骤产生的编译产物。

    name: image-build
    context:
    data:
    displayName: 镜像构建
    enable: true
    build:
    dockerfile: code/Dockerfile
    image: registry-vpc.cn-hangzhou.aliyuncs.com/pipeline-demo/demo-repo:debug
    inputs: # 引用上游任务的输出

    • name: compiled-code # 必须与上游任务outputs中定义的name一致
      path: ./app # 将上游输出映射到当前任务的工作目录下的路径
      taskTemplate: build-image-task

    这样配置之后,当执行构建镜像的任务时,它会自动将上一步code-compile任务的输出compiled-code路径下的内容,映射到当前任务的工作目录中的./app路径下。接下来的Dockerfile构建过程就可以直接引用这些编译好的产物进行镜像打包。
    请注意,实际的配置细节可能会根据您使用的具体CI/CD系统(如阿里云CodePipeline)的语法和功能有所差异,但基本原理是相同的:利用任务间的依赖关系和输出输入管理机制来传递中间产物。务必参考阿里云CodePipeline或其他您正在使用的服务的官方文档,以确保配置的正确性和有效性。 此回答整理自钉群“阿里函数计算客户【已满,加2群:64970014484】”

    2024-08-07 22:16:16
    赞同 1 展开评论 打赏

快速交付实现商业价值。

相关产品

  • 函数计算
  • 相关电子书

    更多
    阿里云E-MapReduce 全面开启 Serverless 立即下载
    基于ACK One和ACR构建CI/CD流水线最佳实践 立即下载
    基于阿里云K8S服务快速构建DevOps流水线 资料下载 立即下载