1+ variables :
2+ GIT_DEPTH : 1
3+ REGION_TO_DEPLOY :
4+ description : " use sa-east-1 for dev, us-east-1 for RC, all for all regions"
5+ value : sa-east-1
6+ AGENT_BRANCH :
7+ description : " datadog-agent branch you want to release"
8+ value : main
9+ LAYER_SUFFIX :
10+ description : " Suffix to be appended to the layer name (default empty)"
11+ value : " "
12+
13+ image : 486234852809.dkr.ecr.us-east-1.amazonaws.com/docker:20.10-py3
14+
15+ stages :
16+ - build_tools_if_needed
17+ - build_layer
18+ - prepare_multi_region
19+ - trigger
20+
21+ build_tools :
22+ stage : build_tools_if_needed
23+ variables :
24+ CI_ENABLE_CONTAINER_IMAGE_BUILDS : " true"
25+ TARGET : 486234852809.dkr.ecr.us-east-1.amazonaws.com/ci/datadog-lambda-extension
26+ rules :
27+ - if : $CI_PIPELINE_SOURCE == "web"
28+ when : never
29+ - changes :
30+ - build-tools/**/*
31+ tags : ["runner:docker"]
32+ script :
33+ - cd build-tools && docker buildx build --tag ${TARGET} --push .
34+
35+ build_and_deploy_layer :
36+ stage : build_layer
37+ rules :
38+ - if : $CI_PIPELINE_SOURCE == "web"
39+ variables :
40+ CI_ENABLE_CONTAINER_IMAGE_BUILDS : " true"
41+ ROLE_TO_ASSUME : arn:aws:iam::425362996713:role/sandbox-layer-deployer
42+ TARGET : 486234852809.dkr.ecr.us-east-1.amazonaws.com/ci/datadog-lambda-extension
43+ tags : ["runner:docker"]
44+ artifacts :
45+ paths :
46+ - tmp/serverless/datadog_extension_signed.zip
47+ script :
48+ - mkdir tmp
49+ - git clone --branch ${AGENT_BRANCH} --depth=1 https://github.com/DataDog/datadog-agent.git
50+ - dockerId=$(docker create --platform linux/amd64 ${TARGET})
51+ - docker cp $dockerId:/build_tools .
52+ - EXTERNAL_ID=$(aws ssm get-parameter
53+ --region us-east-1
54+ --name ci.datadog-lambda-extension.externalid
55+ --with-decryption
56+ --query "Parameter.Value"
57+ --out text)
58+
59+ # build
60+ - ./build_tools
61+ build
62+ --version 1
63+ --agent-version 1
64+ --architecture amd64
65+ --context-path .
66+ --destination-path tmp/serverless
67+ --docker-path "scripts_v2/Dockerfile.build"
68+ --artifact-name "datadog_extension.zip"
69+
70+ # sign
71+ - ./build_tools
72+ sign
73+ --layer-path tmp/serverless/datadog_extension.zip
74+ --destination-path tmp/serverless/datadog_extension_signed.zip
75+ --assume-role "$ROLE_TO_ASSUME"
76+ --external-id "$EXTERNAL_ID"
77+
78+ # ls artifacts
79+ - ls tmp/serverless
80+
81+ # deploy to single region if needed
82+ - if [ "${REGION_TO_DEPLOY}" = "all" ]; then exit 0; fi
83+ - ./build_tools
84+ deploy
85+ --layer-path tmp/serverless/datadog_extension_signed.zip
86+ --architecture amd64
87+ --layer-name "Datadog-Extension"
88+ --layer-suffix "$LAYER_SUFFIX"
89+ --region "$REGION_TO_DEPLOY"
90+ --assume-role "$ROLE_TO_ASSUME"
91+ --external-id "$EXTERNAL_ID"
92+
93+ prepare_multi_region :
94+ stage : prepare_multi_region
95+ tags : ["runner:docker"]
96+ artifacts :
97+ paths :
98+ - trigger_region.yaml
99+ - tmp/serverless/datadog_extension_signed.zip
100+ rules :
101+ - if : $REGION_TO_DEPLOY != "all"
102+ when : never
103+ - if : $CI_PIPELINE_SOURCE == "web"
104+ - if : $CI_PIPELINE_SOURCE == "external"
105+ - if : $CI_PIPELINE_SOURCE == "trigger"
106+ - if : $CI_PIPELINE_SOURCE == "pipeline"
107+ - if : $CI_PIPELINE_SOURCE == "parent_pipeline"
108+ variables :
109+ TARGET : 486234852809.dkr.ecr.us-east-1.amazonaws.com/ci/datadog-lambda-extension
110+ ROLE_TO_ASSUME : arn:aws:iam::425362996713:role/sandbox-layer-deployer
111+ script :
112+ - echo $CI_PIPELINE_SOURCE
113+ - if [ "${REGION_TO_DEPLOY}" != "all" ]; then exit 0; fi
114+ - EXTERNAL_ID=$(aws ssm get-parameter
115+ --region us-east-1
116+ --name ci.datadog-lambda-extension.externalid
117+ --with-decryption
118+ --query "Parameter.Value"
119+ --out text)
120+ - dockerId=$(docker create --platform linux/amd64 ${TARGET})
121+ - docker cp $dockerId:/build_tools .
122+ - regions=$(./build_tools list_region --assume-role "$ROLE_TO_ASSUME" --external-id "$EXTERNAL_ID")
123+ - sed "s/xxx_layer_sufix_xxx/${LAYER_SUFFIX}/" trigger_region.orig.yaml > trigger_region.tmp.yaml
124+ - sed "s/xxx_aws_regions_xxx/${regions}/" trigger_region.tmp.yaml > trigger_region.yaml
125+ - cat trigger_region.yaml
126+
127+ multi_region :
128+ rules :
129+ - if : $REGION_TO_DEPLOY == "all"
130+ stage : trigger
131+ trigger :
132+ include :
133+ - artifact : trigger_region.yaml
134+ job : prepare_multi_region
0 commit comments