MaR*_*Bet 7 teamcity amazon-s3 amazon-web-services
我正在使用S3来托管一个静态网站,并希望能够将TeamCity构建的结果上传到S3存储桶中.
经过一段时间的研究,找到了解决方案。
将 TeamCity Agent 托管在使用 AWS 中的 IAM 角色启动的 EC2 实例中。
设置一个有权访问 S3 存储桶的部署者 IAM 角色,并允许 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']"
Run Code Online (Sandbox Code Playgroud)
步骤 2.(使用存储在环境变量中的会话令牌和访问密钥访问 AWS)
重要提示:需要在 TeamCity 中的不同步骤中完成)
#-----------------------------
# List S3 bucket content
#-----------------------------
aws s3 ls s3://%S3Bucket%
Run Code Online (Sandbox Code Playgroud)
有第三方插件:https ://github.com/guardian/teamcity-s3-plugin
另外,我建议在 TeamCity 跟踪器中关注此请求,因为在某些时候可以获得官方支持:https ://youtrack.jetbrains.com/issue/TW-21560
| 归档时间: |
|
| 查看次数: |
2019 次 |
| 最近记录: |