2
2
# SPDX-License-Identifier: Apache-2.0 OR ISC
3
3
import typing
4
4
5
- from aws_cdk import Duration , Stack , aws_codebuild as codebuild , aws_iam as iam , Environment
5
+ from aws_cdk import (
6
+ Duration ,
7
+ Environment ,
8
+ Stack ,
9
+ aws_codebuild as codebuild ,
10
+ aws_iam as iam ,
11
+ )
6
12
from constructs import Construct
7
13
8
14
from cdk .components import PruneStaleGitHubBuilds
9
- from util .iam_policies import code_build_batch_policy_in_json , device_farm_access_policy_in_json
10
- from util .metadata import GITHUB_REPO_OWNER , GITHUB_REPO_NAME , GITHUB_PUSH_CI_BRANCH_TARGETS , PRE_PROD_ACCOUNT , \
11
- STAGING_GITHUB_REPO_OWNER , STAGING_GITHUB_REPO_NAME
15
+ from util .iam_policies import (
16
+ code_build_batch_policy_in_json ,
17
+ device_farm_access_policy_in_json ,
18
+ )
19
+ from util .metadata import (
20
+ GITHUB_REPO_OWNER ,
21
+ GITHUB_REPO_NAME ,
22
+ GITHUB_PUSH_CI_BRANCH_TARGETS ,
23
+ PRE_PROD_ACCOUNT ,
24
+ STAGING_GITHUB_REPO_OWNER ,
25
+ STAGING_GITHUB_REPO_NAME ,
26
+ )
12
27
from util .build_spec_loader import BuildSpecLoader
13
28
14
29
@@ -18,12 +33,14 @@ class AwsLcAndroidCIStack(Stack):
18
33
# The Device Farm resource used to in this CI spec, must be manually created.
19
34
# TODO: Automate Device Farm creation with cdk script.
20
35
21
- def __init__ (self ,
22
- scope : Construct ,
23
- id : str ,
24
- spec_file_path : str ,
25
- env : typing .Union [Environment , typing .Dict [str , typing .Any ]],
26
- ** kwargs ) -> None :
36
+ def __init__ (
37
+ self ,
38
+ scope : Construct ,
39
+ id : str ,
40
+ spec_file_path : str ,
41
+ env : typing .Union [Environment , typing .Dict [str , typing .Any ]],
42
+ ** kwargs
43
+ ) -> None :
27
44
super ().__init__ (scope , id , env = env , ** kwargs )
28
45
29
46
github_repo_owner = GITHUB_REPO_OWNER
@@ -42,11 +59,14 @@ def __init__(self,
42
59
codebuild .FilterGroup .in_event_of (
43
60
codebuild .EventAction .PULL_REQUEST_CREATED ,
44
61
codebuild .EventAction .PULL_REQUEST_UPDATED ,
45
- codebuild .EventAction .PULL_REQUEST_REOPENED ),
46
- codebuild .FilterGroup .in_event_of (codebuild .EventAction .PUSH ).and_branch_is (
47
- GITHUB_PUSH_CI_BRANCH_TARGETS ),
62
+ codebuild .EventAction .PULL_REQUEST_REOPENED ,
63
+ ),
64
+ codebuild .FilterGroup .in_event_of (
65
+ codebuild .EventAction .PUSH
66
+ ).and_branch_is (GITHUB_PUSH_CI_BRANCH_TARGETS ),
48
67
],
49
- webhook_triggers_batch_build = True )
68
+ webhook_triggers_batch_build = True ,
69
+ )
50
70
51
71
# Define a IAM role for this stack.
52
72
code_build_batch_policy = iam .PolicyDocument .from_json (
@@ -55,11 +75,16 @@ def __init__(self,
55
75
device_farm_policy = iam .PolicyDocument .from_json (
56
76
device_farm_access_policy_in_json (env )
57
77
)
58
- inline_policies = {"code_build_batch_policy" : code_build_batch_policy , "device_farm_policy" : device_farm_policy }
59
- role = iam .Role (scope = self ,
60
- id = "{}-role" .format (id ),
61
- assumed_by = iam .ServicePrincipal ("codebuild.amazonaws.com" ),
62
- inline_policies = inline_policies )
78
+ inline_policies = {
79
+ "code_build_batch_policy" : code_build_batch_policy ,
80
+ "device_farm_policy" : device_farm_policy ,
81
+ }
82
+ role = iam .Role (
83
+ scope = self ,
84
+ id = "{}-role" .format (id ),
85
+ assumed_by = iam .ServicePrincipal ("codebuild.amazonaws.com" ),
86
+ inline_policies = inline_policies ,
87
+ )
63
88
64
89
# Define CodeBuild.
65
90
project = codebuild .Project (
@@ -69,10 +94,19 @@ def __init__(self,
69
94
source = git_hub_source ,
70
95
role = role ,
71
96
timeout = Duration .minutes (180 ),
72
- environment = codebuild .BuildEnvironment (compute_type = codebuild .ComputeType .SMALL ,
73
- privileged = False ,
74
- build_image = codebuild .LinuxBuildImage .STANDARD_4_0 ),
75
- build_spec = BuildSpecLoader .load (spec_file_path , env ))
97
+ environment = codebuild .BuildEnvironment (
98
+ compute_type = codebuild .ComputeType .SMALL ,
99
+ privileged = False ,
100
+ build_image = codebuild .LinuxBuildImage .STANDARD_4_0 ,
101
+ ),
102
+ build_spec = BuildSpecLoader .load (spec_file_path , env ),
103
+ )
76
104
project .enable_batch_builds ()
77
105
78
- PruneStaleGitHubBuilds (scope = self , id = "PruneStaleGitHubBuilds" , project = project , ec2_permissions = False , env = env )
106
+ PruneStaleGitHubBuilds (
107
+ scope = self ,
108
+ id = "PruneStaleGitHubBuilds" ,
109
+ project = project ,
110
+ ec2_permissions = False ,
111
+ env = env ,
112
+ )
0 commit comments