Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Hudson/Jenkins和Maven将静态web资源发布到AmazonS3?_Maven_Hudson_Amazon S3_Amazon Web Services_Jenkins - Fatal编程技术网

如何使用Hudson/Jenkins和Maven将静态web资源发布到AmazonS3?

如何使用Hudson/Jenkins和Maven将静态web资源发布到AmazonS3?,maven,hudson,amazon-s3,amazon-web-services,jenkins,Maven,Hudson,Amazon S3,Amazon Web Services,Jenkins,我希望能够将静态web资源(JPG、css等)部署到AmazonS3,因为它们不会由与我的主webapp相同的服务器提供服务 我使用Jenkins(FKA Hudson)和Maven构建一个JavaWebApp.WAR文件,然后使用Jenkins“Deploy to container”插件将其上传到Tomcat实例 我真的希望静态资产作为主构建过程的一部分进行部署,但我不知道将它们部署到S3的最佳方法。我见过Hudson/Jenkins插件复制工件,但那只是我的.WAR文件,而不是项目中的文件

我希望能够将静态web资源(JPG、css等)部署到AmazonS3,因为它们不会由与我的主webapp相同的服务器提供服务

我使用Jenkins(FKA Hudson)和Maven构建一个JavaWebApp.WAR文件,然后使用Jenkins“Deploy to container”插件将其上传到Tomcat实例

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


有没有什么好办法?我应该用Maven插件而不是Hudson/Jenkins插件来完成这项工作吗?

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

#!/bin/sh

s3cmd --guess-mime-type -P sync $WORKSPACE/src/main/resources s3://your-bucket-name/some/path

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

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

我创建了一个s3 webcache maven插件,该插件将图像、javascript、css和任何其他静态资源从src/main/webapp上传到给定的s3 Bucket,有关资料可于

此外,它还创建了一个名为WEB-INF/s3 webcache.xml的清单,servlet过滤器可以使用该清单将WEB服务器的请求重定向到s3CloudForge

您需要将以下配置放入:


br.com.dynamicflow.aws
,特别是pom.xml文件(带有插件配置)和web.xml文件(带有过滤器配置)。

我建议使用。您可以在大多数平台上通过
pip
轻松安装它

同步到CloudFront与同步S3存储桶一样简单:

aws s3 sync your-local-dir/ s3://your-bucket --acl "public-read"
公共标志使资产世界可读


您应该能够将上述内容作为构建步骤添加到您的配置中,而不是通过插件进行操作。

src/main/resources文件夹中的资源不是吗?如果我愿意,它们可以是-关键是如何将它们发送到Amazon S3?这表明您将maven文件推送到了git存储库中。我认为提交AWS密钥不是一个好主意。即使存储库是私有的,凭据也存储在外部文件中。
aws s3 sync your-local-dir/ s3://your-bucket --acl "public-read"