如何使用Hudson/Jenkins和Maven将静态Web资源发布到Amazon S3?

Dee*_*jay 5 hudson amazon-s3 amazon-web-services maven jenkins

我希望能够将静态Web资源(jpgs,css,那种东西)部署到Amazon S3,因为它们不会由与我的主webapp相同的服务器提供服务.

我使用Jenkins(FKA Hudson)和Maven构建Java webapp .WAR文件,然后使用Jenkins"Deploy to container"插件将其上传到Tomcat实例.

我真的希望将静态资产部署为主要构建过程的一部分,但我不知道将它们带到S3的最佳方法.我已经看过复制工件的Hudson/Jenkins插件,但那只是我的.WAR文件而不是项目中的文件.

有什么想法以"好"的方式做到这一点?我应该使用Maven插件而不是Hudson/Jenkins插件吗?

per*_*tus 6

这就是我这样做的方法:使用外部程序,例如s3cmd来完成这项工作.您只需指定一个像这样的shell脚本构建步骤

#!/bin/sh

s3cmd --guess-mime-type -P sync $WORKSPACE/src/main/resources s3://your-bucket-name/some/path
Run Code Online (Sandbox Code Playgroud)

您可以将它集成到pom.xml中并从那里调用它(因此部署过程的这部分是受版本控制的).


Dee*_*jay 1

事实证明我不需要这样做。我们一直计划使用 CloudFront 进行分发,最近 AWS 允许您为 CloudFront 分发指定“自定义源”。这意味着静态资产可以与其余的 .war 内容一起部署,然后 CloudFront 发行版指向该应用程序。