Files
MapLibreParticleLab/cloudformation/ci.template.js
2019-10-23 14:56:17 -04:00

118 lines
3.6 KiB
JavaScript

'use strict';
const template = {
AWSTemplateFormatVersion: '2010-09-09',
Description: 'mapbox-gl-native-ios circleci resources',
Resources: {
BuildUser: {
Type: 'AWS::IAM::User',
Properties: {
Policies: [
{
PolicyName: 'listBuckets',
PolicyDocument: {
Statement: [
{
Action: [ 's3:ListBucket' ],
Effect: 'Allow',
Resource: [ 'arn:aws:s3:::mapbox' ],
Condition: { StringLike: { 's3:prefix': 'mapbox-gl-native/*' } }
},
{
Action: [ 's3:ListBucket' ],
Resource: [ 'arn:aws:s3:::mapbox-node-binary' ],
Effect: 'Allow'
},
{
Action: [ 's3:ListBucket' ],
Resource: [ 'arn:aws:s3:::mapbox-loading-dock' ],
Effect: 'Allow'
}
]
}
},
{
PolicyName: 'build-testing',
PolicyDocument: {
Statement: [
{
Action: [
's3:GetObject',
's3:GetObjectAcl',
's3:PutObject',
's3:PutObjectAcl'
],
Effect: 'Allow',
Resource: [
'arn:aws:s3:::mapbox/mapbox-gl-native/*',
'arn:aws:s3:::mapbox-node-binary/@mapbox/mapbox-gl-native/*',
'arn:aws:s3:::mapbox/mapbox-gl-native/ios/builds/*'
]
}
]
}
},
{
PolicyName: 'cloudwatch-metrics',
PolicyDocument: {
Statement: [
{
Action: [
'cloudwatch:PutMetricData',
'cloudwatch:GetMetricData',
'cloudwatch:GetMetricStatistics'
],
Effect: 'Allow',
Resource: [ '*' ]
}
]
}
},
{
PolicyName: 'get-signing-key',
PolicyDocument: {
Statement: [
{
Action: [ 's3:GetObject' ],
Effect: 'Allow',
Resource: [
'arn:aws:s3:::mapbox/android/signing-credentials/secring.gpg'
]
}
]
}
},
{
PolicyName: 'publish-metrics',
PolicyDocument: {
Statement: [
{
Action: [ 's3:PutObject', 's3:GetObject', 's3:GetObjectAcl' ],
Effect: 'Allow',
Resource: [
'arn:aws:s3:::mapbox-loading-dock/raw/mobile.binarysize/*',
'arn:aws:s3:::mapbox-loading-dock/raw/mobile.codecoverage/*',
'arn:aws:s3:::mapbox-loading-dock/raw/mobile_staging.docs_coverage/*',
'arn:aws:s3:::mapbox-loading-dock/raw/mobile_staging.codecoverage/*',
'arn:aws:s3:::mapbox-loading-dock/raw/mobile_staging.github_stats/*'
]
}
]
}
}
]
}
},
BuildUserKey: {
Type: 'AWS::IAM::AccessKey',
Properties: { UserName: { Ref: 'BuildUser' } }
}
},
Outputs: {
AccessKeyId: { Value: { Ref: 'BuildUserKey' } },
SecretAccessKey: { Value: { 'Fn::GetAtt': [ 'BuildUserKey', 'SecretAccessKey' ] } }
}
};
module.exports = template;