Skip to content

Commit 36bc555

Browse files
authored
Move from github-actions to gitlab to publish layers (#136)
1 parent c4a5acc commit 36bc555

File tree

16 files changed

+284
-300
lines changed

16 files changed

+284
-300
lines changed

.gitlab-ci.yml

Lines changed: 134 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,134 @@
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

build-tools/Cargo.lock

Lines changed: 0 additions & 103 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

build-tools/Cargo.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ version = "0.1.0"
44
edition = "2021"
55

66
[dependencies]
7-
aes-gcm = "0.10.1"
87
aws-config = "0.53.0"
98
aws-sdk-ec2 = "0.23.0"
109
aws-sdk-lambda = "0.23.0"

build-tools/Dockerfile

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,9 @@ FROM rust as builder
22
WORKDIR /usr/src/app
33
COPY Cargo.toml .
44
COPY Cargo.lock .
5-
RUN mkdir ./src && echo 'fn main() { println!("Dummy!"); }' > ./src/main.rs
6-
RUN cargo build --release
7-
RUN rm -rf ./src
85
COPY src ./src
9-
RUN touch -a -m ./src/main.rs
106
RUN cargo build --release
117

12-
FROM ubuntu:jammy as compresser
13-
RUN apt-get update
14-
RUN apt-get install -y zip
15-
RUN mkdir -p /bin
16-
WORKDIR /bin
17-
COPY --from=builder /usr/src/app/target/release/build_tools /bin/build_tools
18-
RUN zip -r build_tools.zip /bin/build_tools
19-
20-
#keep the smallest possible docker image
218
FROM scratch
22-
COPY --from=compresser /bin/build_tools.zip /
23-
ENTRYPOINT ["/build_tools.zip"]
9+
COPY --from=builder /usr/src/app/target/release/build_tools /build_tools
10+
ENTRYPOINT ["/build_tools"]

build-tools/bin/build_tools

-33.4 MB
Binary file not shown.

build-tools/build.sh

Lines changed: 0 additions & 6 deletions
This file was deleted.

build-tools/src/commands/auth_command.rs

Lines changed: 0 additions & 41 deletions
This file was deleted.

0 commit comments

Comments
 (0)