You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在DroneCI流水线中新增步骤,将文件及镜像上传至AWS S3?

改造DroneCI流水线实现S3文件上传与ECR镜像推送

以下是满足需求的完整DroneCI流水线配置,包含指定JS文件上传、镜像文件上传到S3,以及原有的ECR镜像推送步骤:

kind: pipeline
type: docker
name: default

steps:
  # 步骤1:推送指定JS文件到S3(ECR推送前执行)
  - name: upload-js-file-to-s3
    image: amazon/aws-cli
    environment:
      AWS_ACCESS_KEY_ID:
        from_secret: aws_access_key_id
      AWS_SECRET_ACCESS_KEY:
        from_secret: aws_secret_access_key
      AWS_REGION: us-east-1 # 替换为你的AWS区域
      S3_BUCKET: your-s3-bucket-name # 替换为你的S3桶名
      JS_FILE_PATH: /test/bundle_file/my_file.js
    commands:
      - aws s3 cp $JS_FILE_PATH s3://$S3_BUCKET/path/to/destination/ # 替换为S3目标目录

  # 步骤2:构建镜像并导出为tar文件
  - name: build-and-save-image
    image: docker:dind
    volumes:
      - name: docker-sock
        path: /var/run/docker.sock
    commands:
      - docker build -t your-ecr-repo-uri:latest . # 替换为你的ECR仓库URI
      - docker save -o app-image.tar your-ecr-repo-uri:latest # 导出镜像为tar包

  # 步骤3:上传镜像tar文件到S3
  - name: upload-image-to-s3
    image: amazon/aws-cli
    environment:
      AWS_ACCESS_KEY_ID:
        from_secret: aws_access_key_id
      AWS_SECRET_ACCESS_KEY:
        from_secret: aws_secret_access_key
      AWS_REGION: us-east-1 # 替换为你的AWS区域
      S3_BUCKET: your-s3-bucket-name # 替换为你的S3桶名
    commands:
      - aws s3 cp app-image.tar s3://$S3_BUCKET/images/ # 替换为S3镜像存储目录

  # 步骤4:推送镜像到ECR(原有的步骤)
  - name: push-to-ecr
    image: plugins/ecr
    settings:
      access_key:
        from_secret: aws_access_key_id
      secret_key:
        from_secret: aws_secret_access_key
      repo: your-ecr-repo-name # 替换为你的ECR仓库名
      region: us-east-1 # 替换为你的AWS区域
      tags: latest

volumes:
  - name: docker-sock
    host:
      path: /var/run/docker.sock

关键说明:

  • 权限配置:确保Drone中已添加aws_access_key_id和aws_secret_access_key两个secret,且对应的AWS账号拥有S3写入和ECR推送权限
  • 占位符替换:将配置中所有your-xxx占位符替换为实际的AWS资源信息
  • 执行顺序:通过步骤定义顺序保证JS文件上传在ECR推送前完成,镜像构建导出后再上传到S3
  • 镜像导出:使用docker save命令将镜像导出为tar包,方便上传到S3;如果不需要保留本地tar包,可在上传后添加rm app-image.tar命令清理

内容的提问来源于stack exchange,提问作者Jay Modi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 10:42:33