如何将TeamCity的工件文件夹上传到AWS S3存储桶?
答
有第三方插件:https://github.com/guardian/teamcity-s3-plugin
此外,我会建议看在TeamCity的跟踪这个请求作为在某些时候可以有官方的支持:https://youtrack.jetbrains.com/issue/TW-21560
答
这方面的工作了一段时间后,发现一个办法。
将TeamCity代理托管在使用AWS中的IAM角色启动的EC2实例中。
设置部署者IAM角色可以访问S3存储桶并允许TeamCity IAM角色承担它。
然后使用AWS CLI命令将内容上传到存储桶。
实施例(Powershell的)
STEP 1.请求帐户临时凭证
#-----------------------------
# Get parameters
#-----------------------------
$RoleArn = "%param_deployer_arn%"
$ExternalId = "%param_assume_role_external_id%"
$Region = "%param_region%"
$SessionName = "%param_session_name%"
#-----------------------------
# AWS Authentication - Assume Role
#-----------------------------
$Response = (Use-STSRole -Region $Region -RoleArn $RoleArn -ExternalId $ExternalId -RoleSessionName $SessionName).Credentials
$SecretAccessKey = $Response.SecretAccessKey
$SessionToken = $Response.SessionToken
$AccessKeyId = $Response.AccessKeyId
#-----------------------------
# Set environment variables
#-----------------------------
"##teamcity[setParameter name='env.AWS_SECRET_ACCESS_KEY' value='$SecretAccessKey']"
"##teamcity[setParameter name='env.AWS_SECURITY_TOKEN' value='$SessionToken']"
"##teamcity[setParameter name='env.AWS_ACCESS_KEY_ID' value='$AccessKeyId']"
步骤2.
(使用存储在环境变量会话令牌和访问密钥的访问AWS)重要提示:需要在TeamCity的不同步骤中完成)
#-----------------------------
# List S3 bucket content
#-----------------------------
aws s3 ls s3://%S3Bucket%
+1
您能否请您说明您是如何在TeamCity上执行CLI步骤的? –
+0
刚编辑我原来的帖子,并添加了一个例子。 – MaRoBet
作为链接问题的结果,还有一个由Jetbrains官方开发的插件https://github.com/JetBrains/teamcity-s3-artifact-storage-plugin。 – sthzg