Skip to content

Commit 207a697

Browse files
yaauiedonoghuc
andauthored
Forwardport observability-sre internal distro support from 8.19 to main (#17785)
* forward-port observabilitySRE image creation into `main` This is the CLEAN subset of a cherry-pick of the merge-commit from the observabilitySRE feature branch into 8.x in PR #17541 (0b1d299), OMITTING changes to `docker/*` and `rakelib/artifacts.rake` that would conflict due to substantial refactorings on `main`. * forward-port observabilitySRE image creation into `main` (re-implament) This is a forward-port of _functionality_ from the observabilitySRE feature branch into 8.x in PR #17541 (0b1d299), wholly re-implementing the changes in `docker/*` and `rakelib/artifacts.rake` from the 8.x-style docker structure to the refactored structure present on `main`. * Fix pull request pipeline definition for buildkite (#17552) When the fedramp high feature branch was merged into 8.x the PR pipeline accidentally duplicated the top level `steps` key. This was a mistake and is causing issues generating exhaustive test pipeline definition. This commit fixes the bug by ensuring there is a single `steps` key that defines all the steps in the pipeline. * Ensure observabilitySRE image is pushed on DRA staging (#17569) The `artifactDockerObservabilitySRE` gradle task *always* produces a tag with a `SNAPSHOT` postfix. In the staging pipeline we use the shared `qualified-version` script for determining the LS version. That script correctly handles conditionally adding a `SNAPSHOT` postfix which is important for the tagging scheme for pushing to our container registry. Given the intermediate tag produced by the gradle task is never pushed anywhere we can update the build script to ensure the "local" artifact is always referenced with the `SNAPSHOT` postfix. * Use dedicated elasticsearch image for observabilitySRE smoke testing (#17627) * Use dedicated elasticsearch image for observabilitySRE smoke testing The ES team has started publishing a purpose built image for the fedramp high project. Update our smoke test stack to use this container. * Override default entrypoint into elasticsearch container The new image does not provide the stub `/app/elasticsearch.sh` file https://github.com/elastic/elasticsearch/blob/1a1763c591c4c32bf66f0df3bce2040e8f19a1a2/distribution/docker/README.md?plain=1#L16-L19 previously available. This commit overrides the entrypoint to avoid needing that file. See: https://github.com/elastic/elasticsearch/blob/1a1763c591c4c32bf66f0df3bce2040e8f19a1a2/distribution/docker/src/docker/Dockerfile.ess#L38C5-L40C37 * Remove entrypoint workaround due to fix landing upstream * Restore code review changes (#17539) * Comment to clarify why FIPS flag is not needed for smoke tests * Use full versions of docker commands for readability * Simplify grock pattern match The grok pattern is unanchored-by-default, we don't need the leading and trailing wildcards. * Add a step to exhaustive tests for observabilitySRE accetpance testing (#17623) * Add a step to exhaustive tests for observabilitySRE accetpance testing This commit shows the proposed pattern for adding acceptance testing for the observability SRE image. This will run when exhaustive tests run. A new gradle task will hook in to rspec similar to how it is done for the smoke tests. The main difference is that instead of building a container, the latest is pulled from the container registry and run on a fips configured host VM. * WIP: Idea for how to handle multipe container configs for acceptance tests This commit shows the rough structure for how I am planning on handling docker compose networks for acceptance tests. The main idea is to use interpolation in the docker compose file to point to different configuration files for filebeat/logstash/elasticsearch. This is mainly due to the nature of these tests showing behavior when the system is and is not configured properly for FIPS. The breakdown in responsibility is: 1. Gradle handles cert generation (similar to smoke test, this avoids checking in PKI) 2. Rspec handles stopping/starting docker compose and managing environment vars for intperolation in docker compose manifests (different from smoke tests where a single static docker compose is started in gradle) 3. Rspec handles deciding when containers are ready and querying state about data flowing through the system 4. Gradle cleans up certs THis is just a rough sketch, there are still bugs to be worked out but before i get too far in to it I want to get the idea out there. * Add tests describing behavior of LS -> ES with non-fips config This commit adds a test to show that data will not flow from LS to ES when weak non fips config is used. * Use latest ES image This will be handled separately in a separate PR, but taking this commit for now on this branch. * Remove custom entrypoint from new container The latest ES images do not require this workaround. * Take up code review suggestions 1. Remove rogue character from test file causing interpreter failure 2. Split out helpers for docker compose orchestration 3. Only send a single message instead of infinite through to ES * Add full prefix name for new image * Test filebeat -> LS -> ES using fips config As described in elastic/ingest-dev#5471 this commit adds a test for filebeat sending data through logstash to elasticsearch using fips config. * Test LS wont accept input from non fips configured filebeat This test ensures logstash will not accept data from filebeat when using weak tls configuration. See elastic/ingest-dev#5472 * Fix a funny typo. Crytpo is actually kind of a funny. * Ensure we are using the purpose build ES image in testing Similar to #17627 * Ensure JAVA_HOME is set etc Use the same buildkite agent script for setting up a vm based runner as other pipes --------- Co-authored-by: Cas Donoghue <[email protected]>
1 parent 521af3b commit 207a697

File tree

68 files changed

+2226
-58
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

68 files changed

+2226
-58
lines changed

.buildkite/pull_request_pipeline.yml

Lines changed: 174 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,26 @@ steps:
1919
export GRADLE_OPTS="-Xmx2g -Dorg.gradle.daemon=false -Dorg.gradle.logging.level=info"
2020
ci/license_check.sh -m 4G
2121
22+
- label: ":passport_control: License check - Fedramp High Mode"
23+
key: "license-check-fedramp-high"
24+
agents:
25+
provider: gcp
26+
imageProject: elastic-images-prod
27+
image: family/platform-ingest-logstash-ubuntu-2204
28+
machineType: "n2-standard-4"
29+
diskSizeGb: 64
30+
retry:
31+
automatic:
32+
- limit: 3
33+
command: |
34+
set -euo pipefail
35+
36+
source .buildkite/scripts/common/container-agent.sh
37+
export JRUBY_OPTS="-J-Xmx1g"
38+
export GRADLE_OPTS="-Xmx2g -Dorg.gradle.daemon=false -Dorg.gradle.logging.level=info"
39+
docker build -t test-runner-image -f x-pack/distributions/internal/observabilitySRE/docker/Dockerfile .
40+
docker run -e ORG_GRADLE_PROJECT_fedrampHighMode=true test-runner-image ci/license_check.sh -m 4G
41+
2242
- label: ":rspec: Ruby unit tests"
2343
key: "ruby-unit-tests"
2444
agents:
@@ -39,6 +59,25 @@ steps:
3959
artifact_paths:
4060
- "coverage/coverage.json"
4161

62+
- label: ":rspec: Ruby unit tests - FIPS mode"
63+
key: "ruby-unit-tests-fips"
64+
agents:
65+
provider: gcp
66+
imageProject: elastic-images-prod
67+
image: family/platform-ingest-logstash-ubuntu-2204
68+
machineType: "n2-standard-4"
69+
diskSizeGb: 64
70+
retry:
71+
automatic:
72+
- limit: 3
73+
command: |
74+
set -euo pipefail
75+
76+
docker build -t test-runner-image -f x-pack/distributions/internal/observabilitySRE/docker/Dockerfile .
77+
docker run test-runner-image ./gradlew --info --stacktrace -PfedrampHighMode=true rubyTests
78+
artifact_paths:
79+
- "coverage/coverage.json"
80+
4281
- label: ":java: Java unit tests"
4382
key: "java-unit-tests"
4483
agents:
@@ -60,6 +99,29 @@ steps:
6099
- "**/jacocoTestReport.xml"
61100
- "**/build/classes/**/*.*"
62101

102+
- label: ":java: Java unit tests - FIPS mode"
103+
key: "java-unit-tests-fips"
104+
agents:
105+
provider: gcp
106+
imageProject: elastic-images-prod
107+
image: family/platform-ingest-logstash-ubuntu-2204
108+
machineType: "n2-standard-4"
109+
diskSizeGb: 64
110+
retry:
111+
automatic:
112+
- limit: 3
113+
env:
114+
ENABLE_SONARQUBE: true
115+
command: |
116+
set -euo pipefail
117+
118+
docker build -t test-runner-image -f x-pack/distributions/internal/observabilitySRE/docker/Dockerfile .
119+
docker run test-runner-image ./gradlew --info --stacktrace -PfedrampHighMode=true javaTests
120+
artifact_paths:
121+
- "**/build/test-results/javaTests/TEST-*.xml"
122+
- "**/jacocoTestReport.xml"
123+
- "**/build/classes/**/*.*"
124+
63125
- label: ":sonarqube: Continuous Code Inspection"
64126
if: |
65127
build.pull_request.id != null ||
@@ -81,6 +143,84 @@ steps:
81143
manual:
82144
allowed: true
83145

146+
- label: "Observability SRE container smoke test"
147+
key: "observability-sre-container-smoke-test"
148+
agents:
149+
provider: gcp
150+
imageProject: elastic-images-prod
151+
image: family/platform-ingest-logstash-ubuntu-2204
152+
machineType: "n2-standard-4"
153+
diskSizeGb: 64
154+
retry:
155+
automatic:
156+
- limit: 3
157+
command: |
158+
set -euo pipefail
159+
source .buildkite/scripts/common/vm-agent.sh
160+
QUALIFIED_VERSION="$(.buildkite/scripts/common/qualified-version.sh)"
161+
# Build the image locally with the gradle task
162+
./gradlew --stacktrace artifactDockerObservabilitySRE -PfedrampHighMode=true
163+
# Ensure it can at least start logstash
164+
docker run docker.elastic.co/logstash/logstash-observability-sre:$${QUALIFIED_VERSION} \
165+
logstash -e 'input { generator { count => 3 } } output { stdout { codec => rubydebug } }'
166+
# Run the smoke tests on the PR code
167+
docker tag docker.elastic.co/logstash/logstash-observability-sre:$${QUALIFIED_VERSION} \
168+
pr-built-observability-sre-image
169+
# observabilitySREsmokeTests orchestrates FIPS-mode docker images
170+
# and validates assertions separately, so it does not need FIPS flag.
171+
./gradlew observabilitySREsmokeTests --stacktrace
172+
173+
- label: ":lab_coat: Integration Tests - FIPS mode / part 1-of-3"
174+
key: "integration-tests-fips-part-1-of-3"
175+
agents:
176+
provider: gcp
177+
imageProject: elastic-images-prod
178+
image: family/platform-ingest-logstash-ubuntu-2204
179+
machineType: "n2-standard-4"
180+
diskSizeGb: 64
181+
retry:
182+
automatic:
183+
- limit: 3
184+
command: |
185+
set -euo pipefail
186+
187+
docker build -t test-runner-image -f x-pack/distributions/internal/observabilitySRE/docker/Dockerfile .
188+
docker run -e FEDRAMP_HIGH_MODE=true test-runner-image ci/integration_tests.sh split 0 3
189+
190+
- label: ":lab_coat: Integration Tests - FIPS mode / part 2-of-3"
191+
key: "integration-tests-fips-part-2-of-3"
192+
agents:
193+
provider: gcp
194+
imageProject: elastic-images-prod
195+
image: family/platform-ingest-logstash-ubuntu-2204
196+
machineType: "n2-standard-4"
197+
diskSizeGb: 64
198+
retry:
199+
automatic:
200+
- limit: 3
201+
command: |
202+
set -euo pipefail
203+
204+
docker build -t test-runner-image -f x-pack/distributions/internal/observabilitySRE/docker/Dockerfile .
205+
docker run -e FEDRAMP_HIGH_MODE=true test-runner-image ci/integration_tests.sh split 1 3
206+
207+
- label: ":lab_coat: Integration Tests - FIPS mode / part 3-of-3"
208+
key: "integration-tests-fips-part-3-of-3"
209+
agents:
210+
provider: gcp
211+
imageProject: elastic-images-prod
212+
image: family/platform-ingest-logstash-ubuntu-2204
213+
machineType: "n2-standard-4"
214+
diskSizeGb: 64
215+
retry:
216+
automatic:
217+
- limit: 3
218+
command: |
219+
set -euo pipefail
220+
221+
docker build -t test-runner-image -f x-pack/distributions/internal/observabilitySRE/docker/Dockerfile .
222+
docker run -e FEDRAMP_HIGH_MODE=true test-runner-image ci/integration_tests.sh split 2 3
223+
84224
- label: ":lab_coat: Integration Tests / part 1-of-3"
85225
key: "integration-tests-part-1-of-3"
86226
agents:
@@ -228,6 +368,40 @@ steps:
228368
source .buildkite/scripts/common/container-agent.sh
229369
x-pack/ci/integration_tests.sh
230370
371+
- label: ":lab_coat: x-pack unit tests - FIPS mode"
372+
key: "x-pack-unit-tests-fips"
373+
agents:
374+
provider: gcp
375+
imageProject: elastic-images-prod
376+
image: family/platform-ingest-logstash-ubuntu-2204
377+
machineType: "n2-standard-4"
378+
diskSizeGb: 64
379+
retry:
380+
automatic:
381+
- limit: 3
382+
command: |
383+
set -euo pipefail
384+
385+
docker build -t test-runner-image -f x-pack/distributions/internal/observabilitySRE/docker/Dockerfile .
386+
docker run -e FEDRAMP_HIGH_MODE=true test-runner-image x-pack/ci/unit_tests.sh
387+
388+
- label: ":lab_coat: x-pack integration - FIPS mode"
389+
key: "integration-tests-x-pack-fips"
390+
agents:
391+
provider: gcp
392+
imageProject: elastic-images-prod
393+
image: family/platform-ingest-logstash-ubuntu-2204
394+
machineType: "n2-standard-4"
395+
diskSizeGb: 64
396+
retry:
397+
automatic:
398+
- limit: 3
399+
command: |
400+
set -euo pipefail
401+
402+
docker build -t test-runner-image -f x-pack/distributions/internal/observabilitySRE/docker/Dockerfile .
403+
docker run -e FEDRAMP_HIGH_MODE=true test-runner-image x-pack/ci/integration_tests.sh
404+
231405
- wait: ~
232406
continue_on_failure: true
233407

.buildkite/scripts/common/qualified-version.sh

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,11 @@ export QUALIFIED_VERSION="$(
1717
# e.g: 8.0.0-alpha1
1818
printf '%s' "${VERSION_QUALIFIER:+-${VERSION_QUALIFIER}}"
1919
20+
# Include git SHA if requested
21+
if [[ -n "${INCLUDE_COMMIT_ID:+x}" ]]; then
22+
printf '%s' "-$(git rev-parse --short HEAD)"
23+
fi
24+
2025
# add the SNAPSHOT tag unless WORKFLOW_TYPE=="staging" or RELEASE=="1"
2126
if [[ ! ( "${WORKFLOW_TYPE:-}" == "staging" || "${RELEASE:+$RELEASE}" == "1" ) ]]; then
2227
printf '%s' "-SNAPSHOT"
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
#!/bin/bash
2+
# Script to build and publish ObservabilitySRE container
3+
# Currently this is built on a host with the target architecture.
4+
# This allows us to utilize the make file for building the container and
5+
# to ensure the best compatability with the host architecture.
6+
# A later step in CI will take care of pushing a tag that references the right
7+
# image using `docker manifest` commands.
8+
9+
echo "Setting up environment"
10+
source .buildkite/scripts/common/vm-agent.sh
11+
source .buildkite/scripts/dra/docker-env-setup.sh
12+
13+
echo "Building ObservabilitySRE container"
14+
./gradlew --stacktrace artifactDockerObservabilitySRE -PfedrampHighMode=true
15+
16+
echo "Pushing ObservabilitySRE container to Docker repository"
17+
docker_login
18+
19+
# Get qualified version without SHA (this is what the gradle task will produce)
20+
# Note that the gradle task always produces a version with -SNAPSHOT so if the
21+
# workflow type is staging we need to append -SNAPSHOT to the version.
22+
QUALIFIED_VERSION="$(.buildkite/scripts/common/qualified-version.sh)"
23+
if [[ "${WORKFLOW_TYPE:-}" == "staging" && "${QUALIFIED_VERSION}" != *-SNAPSHOT ]]; then
24+
QUALIFIED_VERSION="${QUALIFIED_VERSION}-SNAPSHOT"
25+
fi
26+
27+
# Set environment variable to include SHA and get version with SHA
28+
QUALIFIED_VERSION_WITH_SHA="$(INCLUDE_COMMIT_ID=1 .buildkite/scripts/common/qualified-version.sh)"
29+
30+
REGISTRY_PATH=docker.elastic.co/logstash/logstash-observability-sre
31+
32+
# Current architecture
33+
ARCH="${ARCH:-x86_64}" # Default to x86_64 if ARCH is not set
34+
echo "Architecture: ${ARCH}"
35+
36+
# Create the full tag with SHA and architecture
37+
FULL_TAG="${QUALIFIED_VERSION_WITH_SHA}-${ARCH}"
38+
echo "Tagging and pushing: ${REGISTRY_PATH}:${QUALIFIED_VERSION} as ${REGISTRY_PATH}:${FULL_TAG}"
39+
docker tag ${REGISTRY_PATH}:${QUALIFIED_VERSION} ${REGISTRY_PATH}:${FULL_TAG}
40+
docker push ${REGISTRY_PATH}:${FULL_TAG}
41+
42+
# Teardown Docker environment
43+
source .buildkite/scripts/dra/docker-env-teardown.sh

.buildkite/scripts/dra/generatesteps.py

Lines changed: 61 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,61 @@ def package_aarch64_docker_step(branch, workflow_type):
7979

8080
return step
8181

82+
def ship_observability_sre_image_steps(branch, workflow_type):
83+
step = f'''
84+
- label: ":package: Build & Ship aarch64 ObservabilitySRE container / {branch}-{workflow_type.upper()}"
85+
key: "logstash_build_and_ship_observability_sre_aarch64"
86+
soft_fail: true
87+
depends_on: logstash_publish_dra
88+
agents:
89+
provider: aws
90+
imagePrefix: platform-ingest-logstash-ubuntu-2204-aarch64
91+
instanceType: "m6g.4xlarge"
92+
diskSizeGb: 200
93+
artifact_paths:
94+
- "**/*.hprof"
95+
command: |
96+
export WORKFLOW_TYPE="{workflow_type}"
97+
export PATH="/opt/buildkite-agent/.rbenv/bin:/opt/buildkite-agent/.pyenv/bin:$PATH"
98+
export ARCH="aarch64"
99+
eval "$(rbenv init -)"
100+
.buildkite/scripts/dra/build-and-push-observability-sre.sh
101+
- label: ":package: Build & Ship x86_64 ObservabilitySRE container / {branch}-{workflow_type.upper()}"
102+
key: "logstash_build_and_ship_observability_sre_x86_64"
103+
soft_fail: true
104+
depends_on: logstash_publish_dra
105+
agents:
106+
provider: gcp
107+
imageProject: elastic-images-prod
108+
image: family/platform-ingest-logstash-ubuntu-2204
109+
machineType: "n2-standard-16"
110+
diskSizeGb: 200
111+
artifact_paths:
112+
- "**/*.hprof"
113+
command: |
114+
export WORKFLOW_TYPE="{workflow_type}"
115+
export PATH="/opt/buildkite-agent/.rbenv/bin:/opt/buildkite-agent/.pyenv/bin:$PATH"
116+
export ARCH="x86_64"
117+
eval "$(rbenv init -)"
118+
.buildkite/scripts/dra/build-and-push-observability-sre.sh
119+
- label: ":docker: Create & Push ObservabilitySRE Multi-Arch Manifest / {branch}-{workflow_type.upper()}"
120+
key: "logstash_create_observability_sre_manifest"
121+
depends_on:
122+
- "logstash_build_and_ship_observability_sre_aarch64"
123+
- "logstash_build_and_ship_observability_sre_x86_64"
124+
agents:
125+
provider: gcp
126+
imageProject: elastic-images-prod
127+
image: family/platform-ingest-logstash-ubuntu-2204
128+
machineType: "n2-standard-8"
129+
command: |
130+
export WORKFLOW_TYPE="{workflow_type}"
131+
export PATH="/opt/buildkite-agent/.rbenv/bin:/opt/buildkite-agent/.pyenv/bin:$PATH"
132+
eval "$(rbenv init -)"
133+
.buildkite/scripts/dra/multi-architecture-observability-sre.sh
134+
'''
135+
return step
136+
82137
def publish_dra_step(branch, workflow_type, depends_on):
83138
step = f'''
84139
- label: ":elastic-stack: Publish / {branch}-{workflow_type.upper()} DRA artifacts"
@@ -139,9 +194,14 @@ def build_steps_to_yaml(branch, workflow_type):
139194
"steps": build_steps_to_yaml(branch, workflow_type),
140195
})
141196

142-
# Final step: pull artifacts built above and publish them via the release-manager
197+
# Pull artifacts built above and publish them via the release-manager
143198
structure["steps"].extend(
144199
yaml.safe_load(publish_dra_step(branch, workflow_type, depends_on=group_key)),
145200
)
146201

202+
# Once published, do the same for observabilitySRE image
203+
structure["steps"].extend(
204+
yaml.safe_load(ship_observability_sre_image_steps(branch, workflow_type)),
205+
)
206+
147207
print(YAML_HEADER + yaml.dump(structure, Dumper=yaml.Dumper, sort_keys=False))
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
#!/bin/bash
2+
# Script to create and push Docker manifest for multi-architecture support
3+
# This MUST be run after build-and-push-observabilty-sre.sh!
4+
5+
source .buildkite/scripts/common/vm-agent.sh
6+
source .buildkite/scripts/dra/docker-env-setup.sh
7+
8+
docker_login
9+
10+
# Set INCLUDE_COMMIT_ID to include git SHA in version
11+
QUALIFIED_VERSION="$(INCLUDE_COMMIT_ID=1 .buildkite/scripts/common/qualified-version.sh)"
12+
REGISTRY_PATH=docker.elastic.co/logstash/logstash-observability-sre
13+
14+
# Architecture-specific tags (created by the build steps)
15+
X86_64_TAG="${QUALIFIED_VERSION}-x86_64"
16+
AARCH64_TAG="${QUALIFIED_VERSION}-aarch64"
17+
18+
# Target manifest tags - already has SHA from QUALIFIED_VERSION
19+
VERSION_MANIFEST_TAG="${QUALIFIED_VERSION}"
20+
21+
# Create and push manifest with version (which already includes SHA)
22+
echo "Creating manifest list for: ${REGISTRY_PATH}:${VERSION_MANIFEST_TAG}"
23+
docker manifest create ${REGISTRY_PATH}:${VERSION_MANIFEST_TAG} \
24+
${REGISTRY_PATH}:${X86_64_TAG} \
25+
${REGISTRY_PATH}:${AARCH64_TAG}
26+
27+
docker manifest annotate ${REGISTRY_PATH}:${VERSION_MANIFEST_TAG} \
28+
${REGISTRY_PATH}:${X86_64_TAG} --os linux --arch amd64
29+
30+
docker manifest annotate ${REGISTRY_PATH}:${VERSION_MANIFEST_TAG} \
31+
${REGISTRY_PATH}:${AARCH64_TAG} --os linux --arch arm64
32+
33+
echo "Pushing manifest: ${REGISTRY_PATH}:${VERSION_MANIFEST_TAG}"
34+
docker manifest push ${REGISTRY_PATH}:${VERSION_MANIFEST_TAG}
35+
36+
# Also create version without SHA for effective "latest" tag
37+
BASE_VERSION="$(.buildkite/scripts/common/qualified-version.sh)"
38+
echo "Creating manifest list for: ${REGISTRY_PATH}:${BASE_VERSION}"
39+
docker manifest create ${REGISTRY_PATH}:${BASE_VERSION} \
40+
${REGISTRY_PATH}:${X86_64_TAG} \
41+
${REGISTRY_PATH}:${AARCH64_TAG}
42+
43+
docker manifest annotate ${REGISTRY_PATH}:${BASE_VERSION} \
44+
${REGISTRY_PATH}:${X86_64_TAG} --os linux --arch amd64
45+
46+
docker manifest annotate ${REGISTRY_PATH}:${BASE_VERSION} \
47+
${REGISTRY_PATH}:${AARCH64_TAG} --os linux --arch arm64
48+
49+
echo "Pushing manifest: ${REGISTRY_PATH}:${BASE_VERSION}"
50+
docker manifest push ${REGISTRY_PATH}:${BASE_VERSION}
51+
52+
# Teardown Docker environment
53+
source .buildkite/scripts/dra/docker-env-teardown.sh

0 commit comments

Comments
 (0)