Amazon S3
是保存私有
Maven
工件的完美场所。我假设您将公共工件保存在 Maven Central 中,因为您希望每个人都可以使用它们。私有工件是您不希望除团队成员以外的任何人都可以看到的工件。因此,您希望在那里部署您的
.jar
文件并确保它们仅对您的团队可见。以下是我们如何在
所有
Java 项目中执行此操作。
创建 S3 存储桶
首先,您创建一个新的 S3 存储桶。我建议您使用您的项目域和前缀来命名它。例如,对于
repo.teamed.io
,
repo
是前缀,
teamed.io
是域。
无需为此存储桶配置任何权限。只需通过 Amazon S3 控制台 创建它。
创建 IAM 用户
创建一个新的 IAM 用户。如果您的项目名称是
teamed
,我建议您将其命名为
teamed-maven
。
向用户添加新的“内联策略”:
{
"Statement": [
{
"Effect": "Allow",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::repo.teamed.io",
"arn:aws:s3:::repo.teamed.io/*"
]
}
]
}
此处,
repo.teamed.io
是您在一分钟前创建的 S3 存储桶的名称。
确保您有这个新用户的“访问密钥”。它必须看起来类似于:
{
"Statement": [
{
"Effect": "Allow",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::repo.teamed.io",
"arn:aws:s3:::repo.teamed.io/*"
]
}
]
}
密钥为 20 个字符(全部大写),秘密为 40 个字符。
扩展
settings.xml
将此配置添加到您的
~/.m2/settings.xml
文件中:
{
"Statement": [
{
"Effect": "Allow",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::repo.teamed.io",
"arn:aws:s3:::repo.teamed.io/*"
]
}
]
}
配置
pom.xml
将此配置添加到
pom.xml
:
{
"Statement": [
{
"Effect": "Allow",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::repo.teamed.io",
"arn:aws:s3:::repo.teamed.io/*"
]
}
]
}
然后,配置
S3 Wagon
,也在
pom.xml
中:
{
"Statement": [
{
"Effect": "Allow",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::repo.teamed.io",
"arn:aws:s3:::repo.teamed.io/*"
]
}
]
}
你准备好了。您只需从命令行运行 Maven 即可部署您的工件:
{
"Statement": [
{
"Effect": "Allow",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::repo.teamed.io",
"arn:aws:s3:::repo.teamed.io/*"
]
}
]
}
配置 s3auth.com
现在您希望通过提供安全凭据以安全模式在浏览器中查看这些工件。我建议您使用 s3auth.com ,如 S3 存储桶的基本 HTTP 身份验证中所述。
配置 Rultor
另一个建议是配置 rultor.com 以自动将工件部署到 S3。
首先,用这个
Rultor 遥控器
加密你的
settings.xml
:
{
"Statement": [
{
"Effect": "Allow",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::repo.teamed.io",
"arn:aws:s3:::repo.teamed.io/*"
]
}
]
}
您应该使用 GitHub 项目的名称,而不是
me/test
。
结果,您将获得一个名为
settings.xml.asc
的新文件。将其添加到项目的根目录,然后提交并推送。该文件包含您的秘密信息,但只有 Rultor 服务器可以解密它。
在项目的根目录中创建一个
.rultor.yml
文件(Rultor
参考页面
更详细地解释了这种格式):
{
"Statement": [
{
"Effect": "Allow",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::repo.teamed.io",
"arn:aws:s3:::repo.teamed.io/*"
]
}
]
}
现在是时候看看它们是如何协同工作的了。在 GitHub 问题跟踪器中创建一个新票证并将类似的内容发布到其中(阅读有关 Rultor 命令 的更多信息):
{
"Statement": [
{
"Effect": "Allow",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::repo.teamed.io",
"arn:aws:s3:::repo.teamed.io/*"
]
}
]
}
您将在几秒钟内收到回复。其余的将由 Rultor 完成。