首页 文章

如何使用jenkins将bitbucket中的repo同步到S3

提问于
浏览
3

Background: 我有一个存储库,例如example.com以及master和develop分支 . 我的主分支repo通过jenkins build将更改推送到/ efs / prod并开发分支repo通过jenkins build将更改推送到/ efs / qa . 现在我在repo的开发分支中设置了一个文件夹/ s3来将更改推送到亚马逊S3,为此我在jenkins中使用了"Publish Artifacts to S3 Bucket"插件 .

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

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

有人能让我知道怎样才能让jenkins将bitbucket repo与S3同步 .

2 回答

  • 2

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

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

    aws s3 sync . s3://YOUR_BUCKET_NAME

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

    正如它在 aws-cli docs中所述:"Recursively copies new and updated files from the source directory to the destination."

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

    如果你真的想要这种行为,你可以在每次上传之前吹走存储桶内容,但这会导致停机,所以可能会考虑缓存你的存储桶内容的 CloudFront 设置,你可以在 aws s3 sync 成功结束后从Jenkins中清除这个缓存 .

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

  • 2

    我已经在jenkins的Build> Execute shell中使用下面的命令解决了它

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

相关问题