Skip to content

Commit 2413c50

Browse files
Use dynamic child pipelines for CiVis test environment trigger (#9814)
1 parent a5cde1b commit 2413c50

File tree

4 files changed

+128
-140
lines changed

4 files changed

+128
-140
lines changed

.gitlab-ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ include:
33
- local: ".gitlab/benchmarks.yml"
44
- local: ".gitlab/macrobenchmarks.yml"
55
- local: ".gitlab/exploration-tests.yml"
6-
# - local: ".gitlab/ci-visibility-tests.yml"
6+
- local: ".gitlab/ci-visibility-tests.yml"
77

88
stages:
99
- build

.gitlab/ci-visibility-tests.yml

Lines changed: 44 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -1,77 +1,44 @@
1-
#check-ci-visibility-label:
2-
# stage: publish
3-
# image: registry.ddbuild.io/images/dd-octo-sts-ci-base:2025.06-1
4-
# tags: [ "arch:amd64" ]
5-
# needs: [ publish-artifacts-to-s3 ]
6-
# id_tokens:
7-
# DDOCTOSTS_ID_TOKEN:
8-
# aud: dd-octo-sts
9-
# rules:
10-
# # - if: '$POPULATE_CACHE'
11-
# # when: never
12-
# # - if: '$CI_COMMIT_BRANCH && $CI_COMMIT_BRANCH !~ /^(master|release\/)/'
13-
# # when: on_success
14-
# - when: never
15-
# before_script:
16-
# - dd-octo-sts version
17-
# - dd-octo-sts debug --scope DataDog/dd-trace-java --policy self.gitlab.github-access.read
18-
# - dd-octo-sts token --scope DataDog/dd-trace-java --policy self.gitlab.github-access.read > github-token.txt
19-
# - gh auth login --with-token < github-token.txt
20-
# script:
21-
# - |
22-
# # Source utility functions
23-
# source .gitlab/ci_visibility_utils.sh
24-
#
25-
# # Get PR number
26-
# if ! PR_NUMBER=$(get_pr_number "${CI_COMMIT_BRANCH}"); then
27-
# echo "No open PR found for branch ${CI_COMMIT_BRANCH}"
28-
# exit 1
29-
# fi
30-
#
31-
# echo "Found PR #${PR_NUMBER}"
32-
#
33-
# # Check if PR has the CI visibility label
34-
# if pr_has_label "$PR_NUMBER" "comp: ci visibility"; then
35-
# echo "PR_NUMBER=${PR_NUMBER}" > pr.env
36-
# echo "PR #${PR_NUMBER} detected as CI Visibility PR"
37-
# exit 0
38-
# else
39-
# echo "PR #${PR_NUMBER} not a CI Visibility PR, ignoring trigger"
40-
# exit 1
41-
# fi
42-
# after_script:
43-
# - dd-octo-sts revoke -t $(cat github-token.txt) || true
44-
# artifacts:
45-
# reports:
46-
# dotenv: pr.env
47-
# allow_failure: true
48-
# retry:
49-
# max: 2
50-
# when: always
51-
#
52-
#run-ci-visibility-test-environment:
53-
# stage: ci-visibility-tests
54-
# needs:
55-
# - job: check-ci-visibility-label
56-
# artifacts: true
57-
# rules:
58-
# - if: '$POPULATE_CACHE'
59-
# when: never
60-
# - if: '$CI_COMMIT_BRANCH && $CI_COMMIT_BRANCH !~ /^(master|release\/)/'
61-
# when: on_success
62-
# trigger:
63-
# project: DataDog/apm-reliability/test-environment
64-
# branch: main
65-
# strategy: depend
66-
# variables:
67-
# UPSTREAM_PACKAGE_JOB: build
68-
# UPSTREAM_PROJECT_ID: $CI_PROJECT_ID
69-
# UPSTREAM_PROJECT_NAME: $CI_PROJECT_NAME
70-
# UPSTREAM_PIPELINE_ID: $CI_PIPELINE_ID
71-
# UPSTREAM_BRANCH: $CI_COMMIT_BRANCH
72-
# UPSTREAM_TAG: $CI_COMMIT_TAG
73-
# UPSTREAM_COMMIT_AUTHOR: $CI_COMMIT_AUTHOR
74-
# UPSTREAM_COMMIT_SHORT_SHA: $CI_COMMIT_SHORT_SHA
75-
# TRACER_LANG: java
76-
# JAVA_TRACER_REF_TO_TEST: $CI_COMMIT_BRANCH
77-
# JAVA_TRACER_PR_TO_TEST: $PR_NUMBER
1+
ci-visibility-tests-check:
2+
stage: ci-visibility-tests
3+
image: registry.ddbuild.io/images/dd-octo-sts-ci-base:2025.06-1
4+
tags: [ "arch:amd64" ]
5+
needs: [ publish-artifacts-to-s3 ]
6+
id_tokens:
7+
DDOCTOSTS_ID_TOKEN:
8+
aud: dd-octo-sts
9+
rules:
10+
- if: '$POPULATE_CACHE'
11+
when: never
12+
- if: '$CI_COMMIT_BRANCH && $CI_COMMIT_BRANCH !~ /^(master|release\/)/'
13+
when: on_success
14+
- when: never
15+
before_script:
16+
- dd-octo-sts version
17+
- dd-octo-sts debug --scope DataDog/dd-trace-java --policy self.gitlab.github-access.read
18+
- dd-octo-sts token --scope DataDog/dd-trace-java --policy self.gitlab.github-access.read > github-token.txt
19+
- gh auth login --with-token < github-token.txt
20+
script:
21+
- .gitlab/ci_visibility_generate_job.sh
22+
after_script:
23+
- dd-octo-sts revoke -t $(cat github-token.txt) || true
24+
artifacts:
25+
paths:
26+
- ci-visibility-test-environment.yml
27+
retry:
28+
max: 2
29+
when: always
30+
31+
ci-visibility-tests-trigger:
32+
stage: ci-visibility-tests
33+
needs: [ci-visibility-tests-check]
34+
rules:
35+
- if: '$POPULATE_CACHE'
36+
when: never
37+
- if: '$CI_COMMIT_BRANCH && $CI_COMMIT_BRANCH !~ /^(master|release\/)/'
38+
when: on_success
39+
- when: never
40+
trigger:
41+
include:
42+
- artifact: ci-visibility-test-environment.yml
43+
job: ci-visibility-tests-check
44+
strategy: depend
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
#!/usr/bin/env bash
2+
3+
set -e
4+
5+
add_dummy_job() {
6+
cat <<EOF >>ci-visibility-test-environment.yml
7+
skip-ci-visibility-tests:
8+
stage: ci-visibility-tests
9+
tags: [ "arch:amd64" ]
10+
script:
11+
- echo "PR does not have required label - CI Visibility test environment not triggered"
12+
EOF
13+
}
14+
15+
# Generate yml
16+
cat <<EOF >ci-visibility-test-environment.yml
17+
stages:
18+
- ci-visibility-tests
19+
20+
EOF
21+
22+
if [ -z "$CI_COMMIT_BRANCH" ]; then
23+
echo "No branch detected - skipping trigger"
24+
add_dummy_job
25+
exit 0
26+
fi
27+
28+
echo "Performing trigger checks for ci-visibility test-environment..."
29+
set +e
30+
pr_number=$(gh pr list --repo DataDog/dd-trace-java --head "$CI_COMMIT_BRANCH" --state open --json number --jq '.[0].number' 2>&1)
31+
pr_number_status=$?
32+
set -e
33+
34+
if [ $pr_number_status -ne 0 ]; then
35+
echo "Failed to query PR (gh command failed with status $pr_number_status ) - skipping trigger"
36+
add_dummy_job
37+
exit 0
38+
fi
39+
if [ -z "$pr_number" ]; then
40+
echo "No open PR found for branch $CI_COMMIT_BRANCH - skipping trigger"
41+
add_dummy_job
42+
exit 0
43+
fi
44+
45+
echo "PR #${pr_number} found, checking labels..."
46+
set +e
47+
labels=$(gh pr view "$pr_number" --repo DataDog/dd-trace-java --json labels --jq '.labels[].name' 2>&1)
48+
labels_status=$?
49+
set -e
50+
51+
if [ $labels_status -ne 0 ]; then
52+
echo "Failed to query PR labels (gh command failed with status $labels_status) - skipping trigger"
53+
add_dummy_job
54+
exit 0
55+
fi
56+
if [ -z "$labels" ] || ! echo "$labels" | grep -q "comp: ci visibility"; then
57+
echo "PR #$pr_number is not a CI Visibility PR - skipping trigger"
58+
add_dummy_job
59+
exit 0
60+
fi
61+
62+
echo "PR #$pr_number is a CI Visibility PR - triggering test environment"
63+
64+
cat <<EOF >>ci-visibility-test-environment.yml
65+
ci-visibility-test-environment:
66+
stage: ci-visibility-tests
67+
trigger:
68+
project: DataDog/apm-reliability/test-environment
69+
branch: main
70+
strategy: depend
71+
variables:
72+
UPSTREAM_PACKAGE_JOB: build
73+
UPSTREAM_PROJECT_ID: "$CI_PROJECT_ID"
74+
UPSTREAM_PROJECT_NAME: "$CI_PROJECT_NAME"
75+
UPSTREAM_PIPELINE_ID: "$CI_PIPELINE_ID"
76+
UPSTREAM_BRANCH: "$CI_COMMIT_BRANCH"
77+
UPSTREAM_TAG: "$CI_COMMIT_TAG"
78+
UPSTREAM_COMMIT_AUTHOR: "$CI_COMMIT_AUTHOR"
79+
UPSTREAM_COMMIT_SHORT_SHA: "$CI_COMMIT_SHORT_SHA"
80+
TRACER_LANG: java
81+
JAVA_TRACER_REF_TO_TEST: "$CI_COMMIT_BRANCH"
82+
JAVA_TRACER_PR_TO_TEST: "$pr_number"
83+
EOF

.gitlab/ci_visibility_utils.sh

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

0 commit comments

Comments
 (0)