我正在使用S3来托管静态网站,并且希望能够将TeamCity构建的结果上传到S3存储桶中。
答案 0 :(得分:3)
有第三方插件:https://github.com/guardian/teamcity-s3-plugin
此外,我建议您在TeamCity跟踪器中观看此请求,因为在某些时候可以提供官方支持:https://youtrack.jetbrains.com/issue/TW-21560
答案 1 :(得分:3)
经过一段时间的努力,找到了解决方案。
使用AWS中的IAM角色启动在EC2实例中托管的TeamCity代理。
设置部署者IAM角色,可以访问S3存储桶并允许TeamCity IAM角色承担它。
然后使用AWS CLI命令将内容上传到存储桶。
示例(Powershell)
步骤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%