Skip to content

Commit 2900182

Browse files
donoghucmergify[bot]
authored andcommitted
Remove redundant testing and circular dependency from docker acceptance testing (#18181)
* Use locally build artifact to build container from public dockerfile Previously we would build an image (which would not actually be used), build dockerfiles, modify dockerfiles to curl from `https://snapshots.elastic.co/downloads/logstash'` then build the image used for testing based on the modified dockerfile. This resulted in testing the last published image to `snapshots`. This presents two problems 1. The test is running against the last published image (not the tip of the branch being tested) 2. this carries a dependency on both a DRA and unified stack release having been run. Therefor acceptance tests will fail in between the time we bump logstash version and a successful run of unified release. This commit modifies the dockerfile to use the artifact prepared in the first step instead of curling the last published one. This solves both issues as the tests run against the code from the tip fo the branch being tested and there is no dependency on an artifact existing as a result of a unified release pipeline. * Remove redundant docker steps from workflows Previously for docker acceptance tests three steps were performed: 1. Build container images (based on local artifacts) 2. Build "public" dockerfiles 3. Build container based on (a modified) file from step 2. The ONLY difference between the dockerfile that ultimately is used to define an image between 1 and 2 is WHERE the logstash source is downloaded from. In acceptance testing we WANT to use the source at the current checkout of logstash (not a remote). Using remote causes a dependency issue when changes are not published. Publishing is tied to unified release and gated on tests so naturally this is a bad fit for that dependency. This commit removes the redundancy by ONLY generating images for testing (step 1 from above). This also firms up our use of LOCAL_ARTIFACTS. Namely, the ONLY time we want that set to `false` is when we build a "public" dockerfile. We explicitly set that in the corresponding DRA script now. Similarly we explicitly set it to `true` when testing. * Remove unused function and argument This commit removes the unused function for building from dockerfiles. It also removes an unused argument for the make task for build_docker. (cherry picked from commit a994c7c) # Conflicts: # docker/Makefile # rakelib/artifacts.rake
1 parent 8994afd commit 2900182

File tree

4 files changed

+42
-48
lines changed

4 files changed

+42
-48
lines changed

.buildkite/scripts/dra/build_docker.sh

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@ esac
2424
rake artifact:docker || error "artifact:docker build failed."
2525
rake artifact:docker_oss || error "artifact:docker_oss build failed."
2626
rake artifact:docker_wolfi || error "artifact:docker_wolfi build failed."
27+
28+
# Generating public dockerfiles is the primary use case for NOT using local artifacts
29+
export LOCAL_ARTIFACTS=false
2730
rake artifact:dockerfiles || error "artifact:dockerfiles build failed."
2831

2932
STACK_VERSION="$(./$(dirname "$0")/../common/qualified-version.sh)"

ci/docker_acceptance_tests.sh

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@ set -x
88
export JRUBY_OPTS="-J-Xmx1g"
99
export GRADLE_OPTS="-Xmx4g -Dorg.gradle.console=plain -Dorg.gradle.daemon=false -Dorg.gradle.logging.level=info -Dfile.encoding=UTF-8"
1010

11+
# Use local artifacts for acceptance test Docker builds
12+
export LOCAL_ARTIFACTS=true
13+
1114
if [ -n "$BUILD_JAVA_HOME" ]; then
1215
GRADLE_OPTS="$GRADLE_OPTS -Dorg.gradle.java.home=$BUILD_JAVA_HOME"
1316
fi
@@ -48,7 +51,7 @@ if [[ $SELECTED_TEST_SUITE == "oss" ]]; then
4851
elif [[ $SELECTED_TEST_SUITE == "full" ]]; then
4952
echo "--- Building $SELECTED_TEST_SUITE docker images"
5053
cd $LS_HOME
51-
rake artifact:build_docker_full
54+
rake artifact:docker
5255
echo "--- Acceptance: Installing dependencies"
5356
cd $QA_DIR
5457
bundle install

docker/Makefile

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -123,19 +123,12 @@ public-dockerfiles_full: templates/Dockerfile.erb docker_paths $(COPY_FILES)
123123
version_tag="${VERSION_TAG}" \
124124
release="${RELEASE}" \
125125
image_flavor="full" \
126-
local_artifacts="false" \
126+
local_artifacts="$(or $(LOCAL_ARTIFACTS),false)" \
127127
templates/Dockerfile.erb > "${ARTIFACTS_DIR}/Dockerfile-full" && \
128128
cd $(ARTIFACTS_DIR)/docker && \
129129
cp $(ARTIFACTS_DIR)/Dockerfile-full Dockerfile && \
130130
tar -zcf ../logstash-$(VERSION_TAG)-docker-build-context.tar.gz Dockerfile bin config env2yaml pipeline
131131

132-
build-from-dockerfiles_full: public-dockerfiles_full
133-
cd $(ARTIFACTS_DIR)/docker && \
134-
mkdir -p dockerfile_build_full && cd dockerfile_build_full && \
135-
tar -zxf ../../logstash-$(VERSION_TAG)-docker-build-context.tar.gz && \
136-
sed 's/artifacts/snapshots/g' Dockerfile > Dockerfile.tmp && mv Dockerfile.tmp Dockerfile && \
137-
docker build --progress=plain --network=host -t $(IMAGE_TAG)-dockerfile-full:$(VERSION_TAG) .
138-
139132
public-dockerfiles_oss: templates/Dockerfile.erb docker_paths $(COPY_FILES)
140133
../vendor/jruby/bin/jruby -S erb -T "-"\
141134
created_date="${BUILD_DATE}" \
@@ -144,19 +137,12 @@ public-dockerfiles_oss: templates/Dockerfile.erb docker_paths $(COPY_FILES)
144137
version_tag="${VERSION_TAG}" \
145138
release="${RELEASE}" \
146139
image_flavor="oss" \
147-
local_artifacts="false" \
140+
local_artifacts="$(or $(LOCAL_ARTIFACTS),false)" \
148141
templates/Dockerfile.erb > "${ARTIFACTS_DIR}/Dockerfile-oss" && \
149142
cd $(ARTIFACTS_DIR)/docker && \
150143
cp $(ARTIFACTS_DIR)/Dockerfile-oss Dockerfile && \
151144
tar -zcf ../logstash-oss-$(VERSION_TAG)-docker-build-context.tar.gz Dockerfile bin config env2yaml pipeline
152145

153-
build-from-dockerfiles_oss: public-dockerfiles_oss
154-
cd $(ARTIFACTS_DIR)/docker && \
155-
mkdir -p dockerfile_build_oss && cd dockerfile_build_oss && \
156-
tar -zxf ../../logstash-$(VERSION_TAG)-docker-build-context.tar.gz && \
157-
sed 's/artifacts/snapshots/g' Dockerfile > Dockerfile.tmp && mv Dockerfile.tmp Dockerfile && \
158-
docker build --progress=plain --network=host -t $(IMAGE_TAG)-dockerfile-oss:$(VERSION_TAG) .
159-
160146
public-dockerfiles_wolfi: templates/Dockerfile.erb docker_paths $(COPY_FILES)
161147
../vendor/jruby/bin/jruby -S erb -T "-"\
162148
created_date="${BUILD_DATE}" \
@@ -165,18 +151,34 @@ public-dockerfiles_wolfi: templates/Dockerfile.erb docker_paths $(COPY_FILES)
165151
version_tag="${VERSION_TAG}" \
166152
release="${RELEASE}" \
167153
image_flavor="wolfi" \
168-
local_artifacts="false" \
154+
local_artifacts="$(or $(LOCAL_ARTIFACTS),false)" \
169155
templates/Dockerfile.erb > "${ARTIFACTS_DIR}/Dockerfile-wolfi" && \
170156
cd $(ARTIFACTS_DIR)/docker && \
171157
cp $(ARTIFACTS_DIR)/Dockerfile-wolfi Dockerfile && \
172158
tar -zcf ../logstash-wolfi-$(VERSION_TAG)-docker-build-context.tar.gz Dockerfile bin config env2yaml pipeline
173159

160+
<<<<<<< HEAD
174161
build-from-dockerfiles_wolfi: public-dockerfiles_wolfi
175162
cd $(ARTIFACTS_DIR)/docker && \
176163
mkdir -p dockerfile_build_wolfi && cd dockerfile_build_wolfi && \
177164
tar -zxf ../../logstash-$(VERSION_TAG)-docker-build-context.tar.gz && \
178165
sed 's/artifacts/snapshots/g' Dockerfile > Dockerfile.tmp && mv Dockerfile.tmp Dockerfile && \
179166
docker build --progress=plain --network=host -t $(IMAGE_TAG)-dockerfile-wolfi:$(VERSION_TAG) .
167+
=======
168+
public-dockerfiles_observability-sre: templates/Dockerfile.erb docker_paths $(COPY_FILES)
169+
../vendor/jruby/bin/jruby -S erb -T "-"\
170+
created_date="${BUILD_DATE}" \
171+
elastic_version="${ELASTIC_VERSION}" \
172+
arch="${ARCHITECTURE}" \
173+
version_tag="${VERSION_TAG}" \
174+
release="${RELEASE}" \
175+
image_flavor="observability-sre" \
176+
local_artifacts="$(or $(LOCAL_ARTIFACTS),false)" \
177+
templates/Dockerfile.erb > "${ARTIFACTS_DIR}/Dockerfile-observability-sre" && \
178+
cd $(ARTIFACTS_DIR)/docker && \
179+
cp $(ARTIFACTS_DIR)/Dockerfile-observability-sre Dockerfile && \
180+
tar -zcf ../logstash-observability-sre-$(VERSION_TAG)-docker-build-context.tar.gz Dockerfile bin config env2yaml pipeline
181+
>>>>>>> a994c7cb (Remove redundant testing and circular dependency from docker acceptance testing (#18181))
180182

181183
public-dockerfiles_ironbank: templates/hardening_manifest.yaml.erb templates/IronbankDockerfile.erb ironbank_docker_paths $(COPY_IRONBANK_FILES)
182184
../vendor/jruby/bin/jruby -S erb -T "-"\
@@ -189,7 +191,7 @@ public-dockerfiles_ironbank: templates/hardening_manifest.yaml.erb templates/Iro
189191
version_tag="${VERSION_TAG}" \
190192
release="${RELEASE}" \
191193
image_flavor="ironbank" \
192-
local_artifacts="false" \
194+
local_artifacts="$(or $(LOCAL_ARTIFACTS),false)" \
193195
templates/IronbankDockerfile.erb > "${ARTIFACTS_DIR}/Dockerfile-ironbank" && \
194196
cd $(ARTIFACTS_DIR)/ironbank && \
195197
cp $(ARTIFACTS_DIR)/Dockerfile-ironbank Dockerfile && \

rakelib/artifacts.rake

Lines changed: 15 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,11 @@ namespace "artifact" do
169169

170170
desc "Generate rpm, deb, tar and zip artifacts"
171171
task "all" => ["prepare", "build"]
172+
<<<<<<< HEAD
172173
task "docker_only" => ["prepare", "build_docker_full", "build_docker_oss", "build_docker_wolfi"]
174+
=======
175+
task "docker_only" => ["prepare", "docker", "docker_oss", "docker_wolfi", "docker_observabilitySRE"]
176+
>>>>>>> a994c7cb (Remove redundant testing and circular dependency from docker acceptance testing (#18181))
173177

174178
desc "Build all (jdk bundled and not) tar.gz and zip of default logstash plugins with all dependencies"
175179
task "archives" => ["prepare", "generate_build_metadata"] do
@@ -371,11 +375,18 @@ namespace "artifact" do
371375
build_dockerfile('oss')
372376
end
373377

378+
<<<<<<< HEAD
374379
namespace "dockerfile_oss" do
375380
desc "Build Oss Docker image from Dockerfile context files"
376381
task "docker" => ["archives_docker", "dockerfile_oss"] do
377382
build_docker_from_dockerfiles('oss')
378383
end
384+
=======
385+
desc "Generate Dockerfile for observability-sre images"
386+
task "dockerfile_observabilitySRE" => ["prepare-observabilitySRE", "generate_build_metadata"] do
387+
puts("[dockerfiles] Building observability-sre Dockerfile")
388+
build_dockerfile('observability-sre')
389+
>>>>>>> a994c7cb (Remove redundant testing and circular dependency from docker acceptance testing (#18181))
379390
end
380391

381392
desc "Generate Dockerfile for full images"
@@ -384,26 +395,12 @@ namespace "artifact" do
384395
build_dockerfile('full')
385396
end
386397

387-
namespace "dockerfile_full" do
388-
desc "Build Full Docker image from Dockerfile context files"
389-
task "docker" => ["archives_docker", "dockerfile_full"] do
390-
build_docker_from_dockerfiles('full')
391-
end
392-
end
393-
394398
desc "Generate Dockerfile for wolfi images"
395399
task "dockerfile_wolfi" => ["prepare", "generate_build_metadata"] do
396400
puts("[dockerfiles] Building wolfi Dockerfiles")
397401
build_dockerfile('wolfi')
398402
end
399403

400-
namespace "dockerfile_wolfi" do
401-
desc "Build Wolfi Docker image from Dockerfile context files"
402-
task "docker" => ["archives_docker", "dockerfile_wolfi"] do
403-
build_docker_from_dockerfiles('wolfi')
404-
end
405-
end
406-
407404
desc "Generate build context for ironbank"
408405
task "dockerfile_ironbank" => ["prepare", "generate_build_metadata"] do
409406
puts("[dockerfiles] Building ironbank Dockerfiles")
@@ -429,6 +426,7 @@ namespace "artifact" do
429426
Rake::Task["artifact:archives_oss"].invoke
430427
end
431428

429+
<<<<<<< HEAD
432430
task "build_docker_full" => [:generate_build_metadata] do
433431
Rake::Task["artifact:docker"].invoke
434432
Rake::Task["artifact:dockerfile_full"].invoke
@@ -447,6 +445,8 @@ namespace "artifact" do
447445
Rake::Task["artifact:dockerfile_wolfi:docker"].invoke
448446
end
449447

448+
=======
449+
>>>>>>> a994c7cb (Remove redundant testing and circular dependency from docker acceptance testing (#18181))
450450
task "generate_build_metadata" do
451451
require 'time'
452452
require 'tempfile'
@@ -826,27 +826,13 @@ namespace "artifact" do
826826
"ARTIFACTS_DIR" => ::File.join(Dir.pwd, "build"),
827827
"RELEASE" => ENV["RELEASE"],
828828
"VERSION_QUALIFIER" => VERSION_QUALIFIER,
829-
"BUILD_DATE" => BUILD_DATE,
830-
"LOCAL_ARTIFACTS" => LOCAL_ARTIFACTS
829+
"BUILD_DATE" => BUILD_DATE
831830
}
832831
Dir.chdir("docker") do |dir|
833832
safe_system(env, "make build-from-local-#{flavor}-artifacts")
834833
end
835834
end
836835

837-
def build_docker_from_dockerfiles(flavor)
838-
env = {
839-
"ARTIFACTS_DIR" => ::File.join(Dir.pwd, "build"),
840-
"RELEASE" => ENV["RELEASE"],
841-
"VERSION_QUALIFIER" => VERSION_QUALIFIER,
842-
"BUILD_DATE" => BUILD_DATE,
843-
"LOCAL_ARTIFACTS" => LOCAL_ARTIFACTS
844-
}
845-
Dir.chdir("docker") do |dir|
846-
safe_system(env, "make build-from-dockerfiles_#{flavor}")
847-
end
848-
end
849-
850836
def build_dockerfile(flavor)
851837
env = {
852838
"ARTIFACTS_DIR" => ::File.join(Dir.pwd, "build"),

0 commit comments

Comments
 (0)