296 lines
8 KiB
YAML
296 lines
8 KiB
YAML
rBuildsBatchIamRole:
|
|
Type: AWS::IAM::Role
|
|
Properties:
|
|
Path: /service-role/
|
|
AssumeRolePolicyDocument:
|
|
Version: '2012-10-17'
|
|
Statement:
|
|
- Effect: Allow
|
|
Principal:
|
|
Service:
|
|
- batch.amazonaws.com
|
|
Action: sts:AssumeRole
|
|
ManagedPolicyArns:
|
|
- arn:aws:iam::aws:policy/service-role/AWSBatchServiceRole
|
|
rBuildsSpotFleetIamRole:
|
|
Type: AWS::IAM::Role
|
|
Properties:
|
|
Path: /service-role/
|
|
AssumeRolePolicyDocument:
|
|
Version: '2012-10-17'
|
|
Statement:
|
|
- Effect: Allow
|
|
Principal:
|
|
Service:
|
|
- spotfleet.amazonaws.com
|
|
Action: sts:AssumeRole
|
|
ManagedPolicyArns:
|
|
- arn:aws:iam::aws:policy/service-role/AmazonEC2SpotFleetTaggingRole
|
|
rBuildsInstanceIamRole:
|
|
Type: AWS::IAM::Role
|
|
Properties:
|
|
AssumeRolePolicyDocument:
|
|
Version: '2012-10-17'
|
|
Statement:
|
|
- Effect: 'Allow'
|
|
Principal:
|
|
Service:
|
|
- 'ec2.amazonaws.com'
|
|
Action:
|
|
- 'sts:AssumeRole'
|
|
Path: '/'
|
|
ManagedPolicyArns:
|
|
- arn:aws:iam::aws:policy/service-role/AmazonEC2ContainerServiceforEC2Role
|
|
|
|
rBuildsIamInstanceProfile:
|
|
Type: AWS::IAM::InstanceProfile
|
|
Properties:
|
|
Path: '/'
|
|
Roles:
|
|
- Ref: rBuildsInstanceIamRole
|
|
rBuildsEcsTaskIamRole:
|
|
Type: AWS::IAM::Role
|
|
Properties:
|
|
Path: /service-role/
|
|
AssumeRolePolicyDocument:
|
|
Version: '2012-10-17'
|
|
Statement:
|
|
- Effect: Allow
|
|
Principal:
|
|
Service:
|
|
- ecs-tasks.amazonaws.com
|
|
Action: sts:AssumeRole
|
|
ManagedPolicyArns:
|
|
- arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy
|
|
Policies:
|
|
- PolicyName: 's3-r-builds-bucket'
|
|
PolicyDocument:
|
|
Version: '2012-10-17'
|
|
Statement:
|
|
- Effect: Allow
|
|
Action:
|
|
- s3:*
|
|
Resource:
|
|
- arn:aws:s3:::${self:custom.${self:provider.stage}.s3Bucket}
|
|
- arn:aws:s3:::${self:custom.${self:provider.stage}.s3Bucket}/*
|
|
|
|
rBuildsEcsLaunchTemplate:
|
|
Type: AWS::EC2::LaunchTemplate
|
|
Properties:
|
|
LaunchTemplateName: r-builds-${self:provider.stage}-batch-managed-ecs-larger-volume
|
|
LaunchTemplateData:
|
|
BlockDeviceMappings:
|
|
- DeviceName: /dev/xvdcz
|
|
Ebs:
|
|
VolumeType: gp3
|
|
VolumeSize: 64
|
|
|
|
rBuildsBatchComputeEnvironment:
|
|
Type: AWS::Batch::ComputeEnvironment
|
|
DependsOn: rBuildsBatchIamRole
|
|
Properties:
|
|
Type: MANAGED
|
|
ServiceRole:
|
|
"Fn::GetAtt": [ rBuildsBatchIamRole, Arn ]
|
|
ComputeResources:
|
|
LaunchTemplate:
|
|
LaunchTemplateId:
|
|
Ref: rBuildsEcsLaunchTemplate
|
|
SpotIamFleetRole:
|
|
"Fn::GetAtt": [ rBuildsSpotFleetIamRole, Arn ]
|
|
SecurityGroupIds: ${self:custom.securityGroupIds}
|
|
Subnets: ${self:custom.subnets}
|
|
Type: SPOT
|
|
BidPercentage: 85
|
|
InstanceRole:
|
|
"Fn::GetAtt": [ rBuildsIamInstanceProfile, Arn ]
|
|
InstanceTypes:
|
|
- m6i
|
|
- m5
|
|
- m5a
|
|
- r6i
|
|
- r5
|
|
- r5a
|
|
- c6i
|
|
- c5
|
|
- c5a
|
|
Ec2KeyPair: ${self:custom.ec2KeyPair}
|
|
Tags: ${self:provider.stackTags}
|
|
MinvCpus: 0
|
|
DesiredvCpus: 0
|
|
MaxvCpus: 256
|
|
|
|
rBuildsBatchJobQueue:
|
|
Type: AWS::Batch::JobQueue
|
|
Properties:
|
|
ComputeEnvironmentOrder:
|
|
- Order: 1
|
|
ComputeEnvironment:
|
|
Ref: rBuildsBatchComputeEnvironment
|
|
State: ENABLED
|
|
Priority: 1
|
|
|
|
rBuildsBatchJobDefinitionUbuntu1804:
|
|
Type: AWS::Batch::JobDefinition
|
|
Properties:
|
|
Type: container
|
|
ContainerProperties:
|
|
Command:
|
|
- ./build.sh
|
|
Vcpus: 4
|
|
Memory: 4096
|
|
JobRoleArn:
|
|
"Fn::GetAtt": [ rBuildsEcsTaskIamRole, Arn ]
|
|
Image: "#{AWS::AccountId}.dkr.ecr.#{AWS::Region}.amazonaws.com/r-builds:ubuntu-1804"
|
|
Timeout:
|
|
AttemptDurationSeconds: 7200
|
|
rBuildsBatchJobDefinitionUbuntu2004:
|
|
Type: AWS::Batch::JobDefinition
|
|
Properties:
|
|
Type: container
|
|
ContainerProperties:
|
|
Command:
|
|
- ./build.sh
|
|
Vcpus: 4
|
|
Memory: 4096
|
|
JobRoleArn:
|
|
"Fn::GetAtt": [ rBuildsEcsTaskIamRole, Arn ]
|
|
Image: "#{AWS::AccountId}.dkr.ecr.#{AWS::Region}.amazonaws.com/r-builds:ubuntu-2004"
|
|
Timeout:
|
|
AttemptDurationSeconds: 7200
|
|
rBuildsBatchJobDefinitionUbuntu2204:
|
|
Type: AWS::Batch::JobDefinition
|
|
Properties:
|
|
Type: container
|
|
ContainerProperties:
|
|
Command:
|
|
- ./build.sh
|
|
Vcpus: 4
|
|
Memory: 4096
|
|
JobRoleArn:
|
|
"Fn::GetAtt": [ rBuildsEcsTaskIamRole, Arn ]
|
|
Image: "#{AWS::AccountId}.dkr.ecr.#{AWS::Region}.amazonaws.com/r-builds:ubuntu-2204"
|
|
Timeout:
|
|
AttemptDurationSeconds: 7200
|
|
rBuildsBatchJobDefinitionDebian10:
|
|
Type: AWS::Batch::JobDefinition
|
|
Properties:
|
|
Type: container
|
|
ContainerProperties:
|
|
Command:
|
|
- ./build.sh
|
|
Vcpus: 4
|
|
Memory: 4096
|
|
JobRoleArn:
|
|
"Fn::GetAtt": [ rBuildsEcsTaskIamRole, Arn ]
|
|
Image: "#{AWS::AccountId}.dkr.ecr.#{AWS::Region}.amazonaws.com/r-builds:debian-10"
|
|
Timeout:
|
|
AttemptDurationSeconds: 7200
|
|
rBuildsBatchJobDefinitionDebian11:
|
|
Type: AWS::Batch::JobDefinition
|
|
Properties:
|
|
Type: container
|
|
ContainerProperties:
|
|
Command:
|
|
- ./build.sh
|
|
Vcpus: 4
|
|
Memory: 4096
|
|
JobRoleArn:
|
|
"Fn::GetAtt": [ rBuildsEcsTaskIamRole, Arn ]
|
|
Image: "#{AWS::AccountId}.dkr.ecr.#{AWS::Region}.amazonaws.com/r-builds:debian-11"
|
|
Timeout:
|
|
AttemptDurationSeconds: 7200
|
|
rBuildsBatchJobDefinitionCentos7:
|
|
Type: AWS::Batch::JobDefinition
|
|
Properties:
|
|
Type: container
|
|
ContainerProperties:
|
|
Command:
|
|
- ./build.sh
|
|
Vcpus: 4
|
|
Memory: 4096
|
|
JobRoleArn:
|
|
"Fn::GetAtt": [ rBuildsEcsTaskIamRole, Arn ]
|
|
Image: "#{AWS::AccountId}.dkr.ecr.#{AWS::Region}.amazonaws.com/r-builds:centos-7"
|
|
Timeout:
|
|
AttemptDurationSeconds: 7200
|
|
rBuildsBatchJobDefinitionCentos8:
|
|
Type: AWS::Batch::JobDefinition
|
|
Properties:
|
|
Type: container
|
|
ContainerProperties:
|
|
Command:
|
|
- ./build.sh
|
|
Vcpus: 4
|
|
Memory: 4096
|
|
JobRoleArn:
|
|
"Fn::GetAtt": [ rBuildsEcsTaskIamRole, Arn ]
|
|
Image: "#{AWS::AccountId}.dkr.ecr.#{AWS::Region}.amazonaws.com/r-builds:centos-8"
|
|
Timeout:
|
|
AttemptDurationSeconds: 7200
|
|
rBuildsBatchJobDefinitionOpensuse153:
|
|
Type: AWS::Batch::JobDefinition
|
|
Properties:
|
|
Type: container
|
|
ContainerProperties:
|
|
Command:
|
|
- ./build.sh
|
|
Vcpus: 4
|
|
Memory: 4096
|
|
JobRoleArn:
|
|
"Fn::GetAtt": [ rBuildsEcsTaskIamRole, Arn ]
|
|
Image: "#{AWS::AccountId}.dkr.ecr.#{AWS::Region}.amazonaws.com/r-builds:opensuse-153"
|
|
Timeout:
|
|
AttemptDurationSeconds: 7200
|
|
|
|
# step function cloudwatch event trigger resources
|
|
rBuildsEventRuleIamRole:
|
|
Type: AWS::IAM::Role
|
|
Properties:
|
|
Path: /service-role/
|
|
AssumeRolePolicyDocument:
|
|
Version: '2012-10-17'
|
|
Statement:
|
|
- Effect: Allow
|
|
Principal:
|
|
Service:
|
|
- events.amazonaws.com
|
|
Action: sts:AssumeRole
|
|
Policies:
|
|
- PolicyName: 'allow-step-function-execution'
|
|
PolicyDocument:
|
|
Version: '2012-10-17'
|
|
Statement:
|
|
- Effect: Allow
|
|
Action:
|
|
- states:StartExecution
|
|
Resource:
|
|
Ref: RBuildsStepFunction
|
|
|
|
rBuildsEventRule:
|
|
Type: AWS::Events::Rule
|
|
Properties:
|
|
Description: Check for New R Versions
|
|
ScheduleExpression: rate(1 hour)
|
|
State: ${self:custom.${self:provider.stage}.eventRuleState}
|
|
Targets:
|
|
- Id: rbuilds
|
|
Input: '{}'
|
|
RoleArn:
|
|
Fn::GetAtt: [ rBuildsEventRuleIamRole, Arn ]
|
|
Arn:
|
|
Ref: RBuildsStepFunction
|
|
|
|
rBuildsDevelEventRule:
|
|
Type: AWS::Events::Rule
|
|
Properties:
|
|
Description: Build R-devel
|
|
ScheduleExpression: cron(0 4 * * ? *)
|
|
State: ${self:custom.${self:provider.stage}.eventRuleState}
|
|
Targets:
|
|
- Id: rbuilds
|
|
Input: '{"force": true, "versions": ["next", "devel"]}'
|
|
RoleArn:
|
|
Fn::GetAtt: [ rBuildsEventRuleIamRole, Arn ]
|
|
Arn:
|
|
Ref: RBuildsStepFunction
|