Skip to content

Commit c096dd5

Browse files
committed
Migrate CI from aws ssm to Vault
1 parent 5bde49e commit c096dd5

File tree

4 files changed

+119
-47
lines changed

4 files changed

+119
-47
lines changed

ci/pipelines/default-pipeline.yml

Lines changed: 55 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ include:
44
# SETUP
55

66
stages:
7+
- fetch-secrets
78
- ci-image
89
- security
910
- analysis
@@ -13,6 +14,10 @@ stages:
1314
- notify
1415

1516
.snippets:
17+
fetch-secrets:
18+
- mkdir -p ./ci/pipelines/secrets
19+
- ./ci/scripts/fetch-secrets.sh
20+
1621
# macOS AMI will already have cmdline-tools installed
1722
install-android-api-components:
1823
- echo y | ~/android_sdk/cmdline-tools/latest/bin/sdkmanager --install "emulator"
@@ -39,15 +44,27 @@ stages:
3944
- if [[ "$exit_code" -ne 0 ]]; then exit 1; fi
4045
- exit 0
4146
set-publishing-credentials:
42-
- aws ssm get-parameter --region us-east-1 --name ci.dd-sdk-android.gradle-properties --with-decryption --query "Parameter.Value" --out text >> ./gradle.properties
43-
- export GPG_PRIVATE_KEY=$(aws ssm get-parameter --region us-east-1 --name ci.dd-sdk-android.signing.gpg_private_key --with-decryption --query "Parameter.Value" --out text)
44-
- export GPG_PASSWORD=$(aws ssm get-parameter --region us-east-1 --name ci.dd-sdk-android.signing.gpg_passphrase --with-decryption --query "Parameter.Value" --out text)
45-
- export CENTRAL_PUBLISHER_USERNAME=$(aws ssm get-parameter --region us-east-1 --name ci.dd-sdk-android.publishing.central_username --with-decryption --query "Parameter.Value" --out text)
46-
- export CENTRAL_PUBLISHER_PASSWORD=$(aws ssm get-parameter --region us-east-1 --name ci.dd-sdk-android.publishing.central_password --with-decryption --query "Parameter.Value" --out text)
47-
- export GPG_PUBLIC_FINGERPRINT=$(aws ssm get-parameter --region us-east-1 --name ci.dd-sdk-android.signing.gpg_public_key --with-decryption --query "Parameter.Value" --out text | gpg --import --import-options show-only | grep -E -o -e "[A-F0-9]{40}")
47+
- cp ./ci/pipelines/secrets/gradle.properties ./gradle.properties
48+
- export GPG_PRIVATE_KEY=$(cat ./ci/pipelines/secrets/gpg_private_key)
49+
- export GPG_PASSWORD=$(cat ./ci/pipelines/secrets/gpg_passphrase)
50+
- export CENTRAL_PUBLISHER_USERNAME=$(cat ./ci/pipelines/secrets/central_username)
51+
- export CENTRAL_PUBLISHER_PASSWORD=$(cat ./ci/pipelines/secrets/central_password)
52+
- export GPG_PUBLIC_FINGERPRINT=$(cat ./ci/pipelines/secrets/gpg_public_key | gpg --import --import-options show-only | grep -E -o -e "[A-F0-9]{40}")
4853

4954
# CI IMAGE
5055

56+
fetch-secrets:
57+
stage: fetch-secrets
58+
tags: ["macos:sonoma","specific:true"]
59+
image: $CI_IMAGE_DOCKER
60+
script:
61+
- !reference [.snippets, fetch-secrets]
62+
artifacts:
63+
paths:
64+
- ./ci/pipelines/secrets/
65+
expire_in: 1 hour
66+
when: always
67+
5168
ci-image:
5269
stage: ci-image
5370
when: manual
@@ -184,9 +201,9 @@ test:kover:
184201
- pip3 install datadog
185202
- rm -rf ~/.gradle/daemon/
186203
- export DD_AGENT_HOST="$BUILDENV_HOST_IP"
187-
- export DD_API_KEY=$(aws ssm get-parameter --region us-east-1 --name ci.dd-sdk-android.api_key --with-decryption --query "Parameter.Value" --out text)
188-
- export DD_APP_KEY=$(aws ssm get-parameter --region us-east-1 --name ci.dd-sdk-android.app_key --with-decryption --query "Parameter.Value" --out text)
189-
- CODECOV_TOKEN=$(aws ssm get-parameter --region us-east-1 --name ci.dd-sdk-android.codecov-token --with-decryption --query "Parameter.Value" --out text)
204+
- export DD_API_KEY=$(cat ./ci/pipelines/secrets/api_key)
205+
- export DD_APP_KEY=$(cat ./ci/pipelines/secrets/app_key)
206+
- CODECOV_TOKEN=$(cat ./ci/pipelines/secrets/codecov_token)
190207
- GRADLE_OPTS="-Xmx3072m" DD_TAGS="test.configuration.variant:release" ./gradlew :dd-sdk-android-core:koverXmlReportRelease --no-daemon --build-cache --gradle-user-home cache/ -Dorg.gradle.jvmargs=-javaagent:$DD_TRACER_FOLDER/dd-java-agent.jar=$DD_COMMON_AGENT_CONFIG
191208
- GRADLE_OPTS="-Xmx3072m" DD_TAGS="test.configuration.variant:release" ./gradlew :dd-sdk-android-internal:koverXmlReportRelease --no-daemon --build-cache --gradle-user-home cache/ -Dorg.gradle.jvmargs=-javaagent:$DD_TRACER_FOLDER/dd-java-agent.jar=$DD_COMMON_AGENT_CONFIG
192209
- GRADLE_OPTS="-Xmx3072m" DD_TAGS="test.configuration.variant:release" ./gradlew :koverReportFeatures --no-daemon --build-cache --gradle-user-home cache/ -Dorg.gradle.jvmargs=-javaagent:$DD_TRACER_FOLDER/dd-java-agent.jar=$DD_COMMON_AGENT_CONFIG
@@ -372,7 +389,7 @@ test-pyramid:detekt-api-coverage:
372389
timeout: 1h
373390
script:
374391
- mkdir -p ./config/
375-
- aws ssm get-parameter --region us-east-1 --name ci.dd-sdk-android.gradle-properties --with-decryption --query "Parameter.Value" --out text >> ./gradle.properties
392+
- cp ./ci/pipelines/secrets/gradle.properties ./gradle.properties
376393
- GRADLE_OPTS="-Xmx4096M" ./gradlew assembleLibrariesDebug --stacktrace --no-daemon
377394
- GRADLE_OPTS="-Xmx4096M" ./gradlew printSdkDebugRuntimeClasspath --stacktrace --no-daemon
378395
- GRADLE_OPTS="-Xmx4096M" ./gradlew :tools:detekt:jar --stacktrace --no-daemon
@@ -390,13 +407,13 @@ test-pyramid:publish-e2e-synthetics:
390407
- develop
391408
script:
392409
- mkdir -p ./config/
393-
- aws ssm get-parameter --region us-east-1 --name ci.dd-sdk-android.gradle-properties --with-decryption --query "Parameter.Value" --out text >> ./gradle.properties
394-
- aws ssm get-parameter --region us-east-1 --name ci.dd-sdk-android.keystore --with-decryption --query "Parameter.Value" --out text | base64 -d > ./sample-android.keystore
395-
- aws ssm get-parameter --region us-east-1 --name ci.dd-sdk-android.e2e_config_json --with-decryption --query "Parameter.Value" --out text > ./config/us1.json
396-
- export E2E_STORE_PASSWD=$(aws ssm get-parameter --region us-east-1 --name ci.dd-sdk-android.keystore-password --with-decryption --query "Parameter.Value" --out text)
397-
- export E2E_DD_API_KEY=$(aws ssm get-parameter --region us-east-1 --name ci.dd-sdk-android.e2e_api_key --with-decryption --query "Parameter.Value" --out text)
398-
- export E2E_DD_APP_KEY=$(aws ssm get-parameter --region us-east-1 --name ci.dd-sdk-android.e2e_app_key --with-decryption --query "Parameter.Value" --out text)
399-
- export E2E_MOBILE_APP_ID=$(aws ssm get-parameter --region us-east-1 --name ci.dd-sdk-android.e2e_mobile_app_id --with-decryption --query "Parameter.Value" --out text)
410+
- cp ./ci/pipelines/secrets/gradle.properties ./gradle.properties
411+
- cp ./ci/pipelines/secrets/keystore ./sample-android.keystore
412+
- cp ./ci/pipelines/secrets/e2e_config.json ./config/us1.json
413+
- export E2E_STORE_PASSWD=$(cat ./ci/pipelines/secrets/keystore_password)
414+
- export E2E_DD_API_KEY=$(cat ./ci/pipelines/secrets/e2e_api_key)
415+
- export E2E_DD_APP_KEY=$(cat ./ci/pipelines/secrets/e2e_app_key)
416+
- export E2E_MOBILE_APP_ID=$(cat ./ci/pipelines/secrets/e2e_mobile_app_id)
400417
- GRADLE_OPTS="-Xmx4096M" ./gradlew assembleLibrariesRelease --stacktrace --no-daemon
401418
- GRADLE_OPTS="-Xmx4096M" ./gradlew :sample:kotlin:packageUs1Release --stacktrace --no-daemon
402419
- npm update -g @datadog/datadog-ci
@@ -417,13 +434,13 @@ test-pyramid:publish-webview-synthetics:
417434
- develop
418435
script:
419436
- mkdir -p ./config/
420-
- aws ssm get-parameter --region us-east-1 --name ci.dd-sdk-android.gradle-properties --with-decryption --query "Parameter.Value" --out text >> ./gradle.properties
421-
- aws ssm get-parameter --region us-east-1 --name ci.dd-sdk-android.keystore --with-decryption --query "Parameter.Value" --out text | base64 -d > ./sample-android.keystore
422-
- aws ssm get-parameter --region us-east-1 --name ci.dd-sdk-android.webview_config_json --with-decryption --query "Parameter.Value" --out text > ./config/us1.json
423-
- export E2E_STORE_PASSWD=$(aws ssm get-parameter --region us-east-1 --name ci.dd-sdk-android.keystore-password --with-decryption --query "Parameter.Value" --out text)
424-
- export E2E_DD_API_KEY=$(aws ssm get-parameter --region us-east-1 --name ci.dd-sdk-android.webview_api_key --with-decryption --query "Parameter.Value" --out text)
425-
- export E2E_DD_APP_KEY=$(aws ssm get-parameter --region us-east-1 --name ci.dd-sdk-android.webview_app_key --with-decryption --query "Parameter.Value" --out text)
426-
- export E2E_MOBILE_APP_ID=$(aws ssm get-parameter --region us-east-1 --name ci.dd-sdk-android.webview_mobile_app_id --with-decryption --query "Parameter.Value" --out text)
437+
- cp ./ci/pipelines/secrets/gradle.properties ./gradle.properties
438+
- cp ./ci/pipelines/secrets/keystore ./sample-android.keystore
439+
- cp ./ci/pipelines/secrets/webview_config.json ./config/us1.json
440+
- export E2E_STORE_PASSWD=$(cat ./ci/pipelines/secrets/keystore_password)
441+
- export E2E_DD_API_KEY=$(cat ./ci/pipelines/secrets/webview_api_key)
442+
- export E2E_DD_APP_KEY=$(cat ./ci/pipelines/secrets/webview_app_key)
443+
- export E2E_MOBILE_APP_ID=$(cat ./ci/pipelines/secrets/webview_mobile_app_id)
427444
- GRADLE_OPTS="-Xmx4096M" ./gradlew assembleLibrariesRelease --stacktrace --no-daemon
428445
- GRADLE_OPTS="-Xmx4096M" ./gradlew :sample:kotlin:packageUs1Release --stacktrace --no-daemon
429446
- npm update -g @datadog/datadog-ci
@@ -444,13 +461,13 @@ test-pyramid:publish-staging-synthetics:
444461
- develop
445462
script:
446463
- mkdir -p ./config/
447-
- aws ssm get-parameter --region us-east-1 --name ci.dd-sdk-android.gradle-properties --with-decryption --query "Parameter.Value" --out text >> ./gradle.properties
448-
- aws ssm get-parameter --region us-east-1 --name ci.dd-sdk-android.keystore --with-decryption --query "Parameter.Value" --out text | base64 -d > ./sample-android.keystore
449-
- aws ssm get-parameter --region us-east-1 --name ci.dd-sdk-android.e2e_staging_config_json --with-decryption --query "Parameter.Value" --out text > ./config/staging.json
450-
- export E2E_STORE_PASSWD=$(aws ssm get-parameter --region us-east-1 --name ci.dd-sdk-android.keystore-password --with-decryption --query "Parameter.Value" --out text)
451-
- export E2E_DD_API_KEY=$(aws ssm get-parameter --region us-east-1 --name ci.dd-sdk-android.e2e_staging_api_key --with-decryption --query "Parameter.Value" --out text)
452-
- export E2E_DD_APP_KEY=$(aws ssm get-parameter --region us-east-1 --name ci.dd-sdk-android.e2e_staging_app_key --with-decryption --query "Parameter.Value" --out text)
453-
- export E2E_MOBILE_APP_ID=$(aws ssm get-parameter --region us-east-1 --name ci.dd-sdk-android.e2e_staging_mobile_app_id --with-decryption --query "Parameter.Value" --out text)
464+
- cp ./ci/pipelines/secrets/gradle.properties ./gradle.properties
465+
- cp ./ci/pipelines/secrets/keystore ./sample-android.keystore
466+
- cp ./ci/pipelines/secrets/e2e_staging_config.json ./config/staging.json
467+
- export E2E_STORE_PASSWD=$(cat ./ci/pipelines/secrets/keystore_password)
468+
- export E2E_DD_API_KEY=$(cat ./ci/pipelines/secrets/e2e_staging_api_key)
469+
- export E2E_DD_APP_KEY=$(cat ./ci/pipelines/secrets/e2e_staging_app_key)
470+
- export E2E_MOBILE_APP_ID=$(cat ./ci/pipelines/secrets/e2e_staging_app_id)
454471
- GRADLE_OPTS="-Xmx4096M" ./gradlew assembleLibrariesRelease --stacktrace --no-daemon
455472
- GRADLE_OPTS="-Xmx4096M" ./gradlew :sample:kotlin:packageStagingRelease --stacktrace --no-daemon
456473
- npm update -g @datadog/datadog-ci
@@ -471,13 +488,13 @@ test-pyramid:publish-benchmark-synthetics:
471488
- develop
472489
script:
473490
- mkdir -p ./config/
474-
- aws ssm get-parameter --region us-east-1 --name ci.dd-sdk-android.gradle-properties --with-decryption --query "Parameter.Value" --out text >> ./gradle.properties
475-
- aws ssm get-parameter --region us-east-1 --name ci.dd-sdk-android.keystore --with-decryption --query "Parameter.Value" --out text | base64 -d > ./sample-benchmark.keystore
476-
- aws ssm get-parameter --region us-east-1 --name ci.dd-sdk-android.benchmark_config_json --with-decryption --query "Parameter.Value" --out text > ./config/benchmark.json
477-
- export BM_STORE_PASSWD=$(aws ssm get-parameter --region us-east-1 --name ci.dd-sdk-android.keystore-password --with-decryption --query "Parameter.Value" --out text)
478-
- export BM_DD_API_KEY=$(aws ssm get-parameter --region us-east-1 --name ci.dd-sdk-android.benchmark_api_key --with-decryption --query "Parameter.Value" --out text)
479-
- export BM_DD_APP_KEY=$(aws ssm get-parameter --region us-east-1 --name ci.dd-sdk-android.benchmark_app_key --with-decryption --query "Parameter.Value" --out text)
480-
- export BM_MOBILE_APP_ID=$(aws ssm get-parameter --region us-east-1 --name ci.dd-sdk-android.benchmark_mobile_app_id --with-decryption --query "Parameter.Value" --out text)
491+
- cp ./ci/pipelines/secrets/gradle.properties ./gradle.properties
492+
- cp ./ci/pipelines/secrets/keystore ./sample-benchmark.keystore
493+
- cp ./ci/pipelines/secrets/benchmark_config.json ./config/benchmark.json
494+
- export BM_STORE_PASSWD=$(cat ./ci/pipelines/secrets/keystore_password)
495+
- export BM_DD_API_KEY=$(cat ./ci/pipelines/secrets/benchmark_api_key)
496+
- export BM_DD_APP_KEY=$(cat ./ci/pipelines/secrets/benchmark_app_key)
497+
- export BM_MOBILE_APP_ID=$(cat ./ci/pipelines/secrets/benchmark_mobile_app_id)
481498
- GRADLE_OPTS="-Xmx4096M" ./gradlew assembleLibrariesRelease --stacktrace --no-daemon
482499
- GRADLE_OPTS="-Xmx4096M" ./gradlew :sample:benchmark:packageRelease --stacktrace --no-daemon
483500
- npm update -g @datadog/datadog-ci

ci/scripts/fetch-secrets.sh

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
#
2+
# Unless explicitly stated otherwise all files in this repository are licensed under the Apache License Version 2.0.
3+
# This product includes software developed at Datadog (https://www.datadoghq.com/).
4+
# Copyright 2016-Present Datadog, Inc.
5+
#
6+
7+
source ./ci/scripts/vault_config.sh
8+
source ./ci/scripts/get-secret.sh
9+
10+
# Gradle properties
11+
get_secret $DD_ANDROID_SECRET__GRADLE_PROPERTIES > ./ci/pipelines/secrets/gradle.properties
12+
# Signing and publishing
13+
get_secret $DD_ANDROID_SECRET__SIGNING_GPG_PRIVATE_KEY > ./ci/pipelines/secrets/gpg_private_key
14+
get_secret $DD_ANDROID_SECRET__SIGNING_GPG_PASSPHRASE > ./ci/pipelines/secrets/gpg_passphrase
15+
get_secret $DD_ANDROID_SECRET__SIGNING_GPG_PUBLIC_KEY > ./ci/pipelines/secrets/gpg_public_key
16+
get_secret $DD_ANDROID_SECRET__PUBLISHING_CENTRAL_USERNAME > ./ci/pipelines/secrets/central_username
17+
get_secret $DD_ANDROID_SECRET__PUBLISHING_CENTRAL_PWD > ./ci/pipelines/secrets/central_password
18+
# API and App keys
19+
get_secret $DD_ANDROID_SECRET__API_KEY > ./ci/pipelines/secrets/api_key
20+
get_secret $DD_ANDROID_SECRET__APP_KEY > ./ci/pipelines/secrets/app_key
21+
get_secret $DD_ANDROID_SECRET__CODECOV_TOKEN > ./ci/pipelines/secrets/codecov_token
22+
# Keystore
23+
get_secret $DD_ANDROID_SECRET__KEYSTORE > ./ci/pipelines/secrets/keystore
24+
get_secret $DD_ANDROID_SECRET__KEYSTORE_PWD > ./ci/pipelines/secrets/keystore_password
25+
# E2E Testing
26+
get_secret $DD_ANDROID_SECRET__E2E_CONFIG_JSON > ./ci/pipelines/secrets/e2e_config.json
27+
get_secret $DD_ANDROID_SECRET__E2E_API_KEY > ./ci/pipelines/secrets/e2e_api_key
28+
get_secret $DD_ANDROID_SECRET__E2E_APP_KEY > ./ci/pipelines/secrets/e2e_app_key
29+
get_secret $DD_ANDROID_SECRET__E2E_MOBILE_APP_ID > ./ci/pipelines/secrets/e2e_mobile_app_id
30+
# WebView
31+
get_secret $DD_ANDROID_SECRET__WEBVIEW_CONFIG_JSON > ./ci/pipelines/secrets/webview_config.json
32+
get_secret $DD_ANDROID_SECRET__WEBVIEW_API_KEY > ./ci/pipelines/secrets/webview_api_key
33+
get_secret $DD_ANDROID_SECRET__WEBVIEW_APP_KEY > ./ci/pipelines/secrets/webview_app_key
34+
get_secret $DD_ANDROID_SECRET__WEBVIEW_MOBILE_APP_ID > ./ci/pipelines/secrets/webview_mobile_app_id
35+
# Staging
36+
get_secret $DD_ANDROID_SECRET__E2E_STAGING_CONFIG_JSON > ./ci/pipelines/secrets/e2e_staging_config.json
37+
get_secret $DD_ANDROID_SECRET__E2E_STAGING_API_KEY > ./ci/pipelines/secrets/e2e_staging_api_key
38+
get_secret $DD_ANDROID_SECRET__E2E_STAGING_APP_KEY > ./ci/pipelines/secrets/e2e_staging_app_key
39+
get_secret $DD_ANDROID_SECRET__E2E_STAGING_APP_ID > ./ci/pipelines/secrets/e2e_staging_app_id
40+
# Benchmark
41+
get_secret $DD_ANDROID_SECRET__BENCHMARK_CONFIG_JSON > ./ci/pipelines/secrets/benchmark_config.json
42+
get_secret $DD_ANDROID_SECRET__BENCHMARK_API_KEY > ./ci/pipelines/secrets/benchmark_api_key
43+
get_secret $DD_ANDROID_SECRET__BENCHMARK_APP_KEY > ./ci/pipelines/secrets/benchmark_app_key
44+
get_secret $DD_ANDROID_SECRET__BENCHMARK_MOBILE_APP_ID > ./ci/pipelines/secrets/benchmark_mobile_app_id

ci/scripts/get-secret.sh

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,20 @@ source ./ci/scripts/list-secrets.sh
1616
# - For <secret_name> use constants defined in './ci/scripts/vault_config.sh'
1717
# - Requires `vault` to be installed
1818
get_secret() {
19-
local secret_name=$SECRET_NAME
19+
local secret_name=$1
2020

2121
export VAULT_ADDR=$DD_VAULT_ADDR
22-
if vault token lookup &>/dev/null; then
23-
echo "Reading '$secret_name' secret in local env. You are already authenticated with 'vault'." >&2
22+
23+
if [ "$CI" = "true" ]; then
24+
echo "Login as CI"
25+
vault login -method=aws -no-print
2426
else
25-
echo "Reading '$secret_name' secret in local env. You will now be authenticated with OIDC in your web browser." >&2
26-
vault login -method=oidc -no-print
27+
if vault token lookup &>/dev/null; then
28+
echo "Reading '$secret_name' secret in local env. You are already authenticated with 'vault'." >&2
29+
else
30+
echo "Reading '$secret_name' secret in local env. You will now be authenticated with OIDC in your web browser." >&2
31+
vault login -method=oidc -no-print
32+
fi
2733
fi
2834

2935
local secret_value=$(vault kv get -field=value "$DD_ANDROID_SECRETS_PATH_PREFIX/$secret_name")
@@ -33,9 +39,12 @@ get_secret() {
3339
exit 1
3440
fi
3541

36-
echo $secret_value
42+
echo "$secret_value"
3743
}
3844

39-
list_secrets
40-
select_secret
41-
get_secret "$@"
45+
# Only run the main logic if the script is executed directly (not sourced)
46+
if [ "$CI" != "true" ]; then
47+
list_secrets
48+
select_secret
49+
get_secret "$SECRET_NAME"
50+
fi

ci/scripts/vault_config.sh

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ DD_ANDROID_SECRET__BENCHMARK_API_KEY="benchmark_api_key"
3838
DD_ANDROID_SECRET__BENCHMARK_APP_KEY="benchmark_app_key"
3939
DD_ANDROID_SECRET__BENCHMARK_MOBILE_APP_ID="benchmark_mobile_app_id"
4040

41+
if [ "$CI" != "true" ]; then
4142
idx=0
4243
declare -A DD_ANDROID_SECRETS
4344
DD_ANDROID_SECRETS[$((idx++))]="$DD_ANDROID_SECRET__TEST_SECRET | Test secret to verify functionality. Can be changed but not deleted."
@@ -68,3 +69,4 @@ DD_ANDROID_SECRETS[$((idx++))]="$DD_ANDROID_SECRET__BENCHMARK_CONFIG_JSON | conf
6869
DD_ANDROID_SECRETS[$((idx++))]="$DD_ANDROID_SECRET__BENCHMARK_API_KEY | API key for uploading a benchmark APK to the Mobile Integration org (529432, https://mobile-integration.datadoghq.com/)."
6970
DD_ANDROID_SECRETS[$((idx++))]="$DD_ANDROID_SECRET__BENCHMARK_APP_KEY | App key for uploading a benchmark APK to the Mobile Integration org (529432, https://mobile-integration.datadoghq.com/)."
7071
DD_ANDROID_SECRETS[$((idx++))]="$DD_ANDROID_SECRET__BENCHMARK_MOBILE_APP_ID | Application ID for uploading a benchmark APK to the Mobile Integration org (529432, https://mobile-integration.datadoghq.com/)."
72+
fi

0 commit comments

Comments
 (0)