【问题标题】:How to sync repo in bitbucket to S3 with jenkins如何使用 jenkins 将 bitbucket 中的 repo 同步到 S3
【发布时间】:2018-04-29 02:18:22
【问题描述】:

背景:我有一个存储库,例如 example.com 以及 master 和 develop 分支。我的主分支 repo 通过 jenkins build 将更改推送到 /efs/prod,develop 分支 repo 通过 jenkins build 将更改推送到 /efs/qa。现在我已经在我的 repo 开发分支中设置了一个文件夹,说 /s3 来将更改推送到 amazon S3,为此我在 jenkins 中使用了“将工件发布到 S3 Bucket”插件。

要求:我能够将 bitbucket 上传移动到 aws s3,但是当有人删除 bitbucket repo 中的文件时,我无法将其与 AWS s3 同步。 我已按照以下来源将 repo 更改移动到 s3

http://www.devops-share.com/upload-builds-from-jenkins-to-s3/

有人可以告诉我如何让 jenkins 将 bitbucket 存储库与 S3 同步。

【问题讨论】:

    标签: linux amazon-web-services jenkins bitbucket jenkins-plugins


    【解决方案1】:

    一种可能的解决方案是在 jenkins 实例上安装 aws-cli,使用 aws configure 进行设置,理想情况下授予它通过 IAM 策略上传到特定 S3 存储桶的特定权限。

    接下来实际上是上传您的数据,在您的 jenkins 完成处理/构建/编译您的代码后,从您要同步到 S3 的目录中运行以下命令:

    aws s3 sync . s3://YOUR_BUCKET_NAME

    如果您希望它排除某些目录,请添加--exclude "folder_name/**"

    正如aws-cli docs 中所述:“递归地将新文件和更新文件从源目录复制到目标。”

    它不会删除源目录中不存在但存储桶中存在的文件。

    如果您真的想要这种行为,您可以在每次上传之前清除存储桶内容,但这会导致停机,因此不妨考虑使用 CloudFront 设置缓存存储桶内容,然后您可以在 @ 之后从 Jenkins 清除此缓存987654329@已成功结束。

    要使CloudFront 缓存无效,请参阅docs

    【讨论】:

    • 实际上我想在从 bitbucket repo 中删除该文件时从 s3 中删除该文件。也就是说,在 repo 中删除文件应该会触发 jenkins 构建,并且应该反映 S3 中的更改。要将文件从 repo 同步到 s3,我在 jenkins 中使用了 Execute Shell 选项(aws s3 sync folder/ s3://bucket-path),还在 Bindings 选项下导出了我的 AWS 密钥和访问密钥。
    【解决方案2】:

    我已经通过在 Build>Execute shell in jenkins 中使用以下命令解决了这个问题

    aws s3 sync --delete cdn/ s3://bucket-path
    

    【讨论】:

      猜你喜欢
      • 2022-10-22
      • 2018-11-25
      • 2019-07-23
      • 1970-01-01
      • 2015-01-05
      • 1970-01-01
      • 2016-06-03
      • 2019-09-20
      • 2015-09-13
      相关资源
      最近更新 更多