Skip to content

Commit fe862d5

Browse files
committed
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.
1 parent 0cb8a07 commit fe862d5

File tree

4 files changed

+13
-92
lines changed

4 files changed

+13
-92
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: 5 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -132,24 +132,12 @@ public-dockerfiles_full: templates/Dockerfile.erb docker_paths $(COPY_FILES)
132132
version_tag="${VERSION_TAG}" \
133133
release="${RELEASE}" \
134134
image_flavor="full" \
135-
local_artifacts="false" \
135+
local_artifacts="$(or $(LOCAL_ARTIFACTS),false)" \
136136
templates/Dockerfile.erb > "${ARTIFACTS_DIR}/Dockerfile-full" && \
137137
cd $(ARTIFACTS_DIR)/docker && \
138138
cp $(ARTIFACTS_DIR)/Dockerfile-full Dockerfile && \
139139
tar -zcf ../logstash-$(VERSION_TAG)-docker-build-context.tar.gz Dockerfile bin config env2yaml pipeline
140140

141-
build-from-dockerfiles_full: public-dockerfiles_full
142-
cd $(ARTIFACTS_DIR)/docker && \
143-
mkdir -p dockerfile_build_full && cd dockerfile_build_full && \
144-
tar -zxf ../../logstash-$(VERSION_TAG)-docker-build-context.tar.gz && \
145-
cp ../../logstash-$(VERSION_TAG)-linux-$(ARCHITECTURE).tar.gz . && \
146-
awk '/# Add Logstash itself and set permissions/{print; print "COPY logstash-$(VERSION_TAG)-linux-$(ARCHITECTURE).tar.gz /tmp/logstash.tar.gz"; next}1' Dockerfile > Dockerfile.tmp && \
147-
sed '/curl --fail --location --output logstash.tar.gz.*tar.gz &&/d' Dockerfile.tmp > Dockerfile.tmp2 && \
148-
sed 's|tar -zxf logstash.tar.gz|tar -zxf /tmp/logstash.tar.gz|' Dockerfile.tmp2 > Dockerfile.tmp3 && \
149-
sed 's|rm logstash.tar.gz|rm /tmp/logstash.tar.gz|' Dockerfile.tmp3 > Dockerfile && \
150-
rm -f Dockerfile.tmp* && \
151-
docker build --progress=plain --network=host -t $(IMAGE_TAG)-dockerfile-full:$(VERSION_TAG) .
152-
153141
public-dockerfiles_oss: templates/Dockerfile.erb docker_paths $(COPY_FILES)
154142
../vendor/jruby/bin/jruby -S erb -T "-"\
155143
created_date="${BUILD_DATE}" \
@@ -158,19 +146,12 @@ public-dockerfiles_oss: templates/Dockerfile.erb docker_paths $(COPY_FILES)
158146
version_tag="${VERSION_TAG}" \
159147
release="${RELEASE}" \
160148
image_flavor="oss" \
161-
local_artifacts="false" \
149+
local_artifacts="$(or $(LOCAL_ARTIFACTS),false)" \
162150
templates/Dockerfile.erb > "${ARTIFACTS_DIR}/Dockerfile-oss" && \
163151
cd $(ARTIFACTS_DIR)/docker && \
164152
cp $(ARTIFACTS_DIR)/Dockerfile-oss Dockerfile && \
165153
tar -zcf ../logstash-oss-$(VERSION_TAG)-docker-build-context.tar.gz Dockerfile bin config env2yaml pipeline
166154

167-
build-from-dockerfiles_oss: public-dockerfiles_oss
168-
cd $(ARTIFACTS_DIR)/docker && \
169-
mkdir -p dockerfile_build_oss && cd dockerfile_build_oss && \
170-
tar -zxf ../../logstash-$(VERSION_TAG)-docker-build-context.tar.gz && \
171-
sed 's/artifacts/snapshots/g' Dockerfile > Dockerfile.tmp && mv Dockerfile.tmp Dockerfile && \
172-
docker build --progress=plain --network=host -t $(IMAGE_TAG)-dockerfile-oss:$(VERSION_TAG) .
173-
174155
public-dockerfiles_wolfi: templates/Dockerfile.erb docker_paths $(COPY_FILES)
175156
../vendor/jruby/bin/jruby -S erb -T "-"\
176157
created_date="${BUILD_DATE}" \
@@ -179,19 +160,12 @@ public-dockerfiles_wolfi: templates/Dockerfile.erb docker_paths $(COPY_FILES)
179160
version_tag="${VERSION_TAG}" \
180161
release="${RELEASE}" \
181162
image_flavor="wolfi" \
182-
local_artifacts="false" \
163+
local_artifacts="$(or $(LOCAL_ARTIFACTS),false)" \
183164
templates/Dockerfile.erb > "${ARTIFACTS_DIR}/Dockerfile-wolfi" && \
184165
cd $(ARTIFACTS_DIR)/docker && \
185166
cp $(ARTIFACTS_DIR)/Dockerfile-wolfi Dockerfile && \
186167
tar -zcf ../logstash-wolfi-$(VERSION_TAG)-docker-build-context.tar.gz Dockerfile bin config env2yaml pipeline
187168

188-
build-from-dockerfiles_wolfi: public-dockerfiles_wolfi
189-
cd $(ARTIFACTS_DIR)/docker && \
190-
mkdir -p dockerfile_build_wolfi && cd dockerfile_build_wolfi && \
191-
tar -zxf ../../logstash-$(VERSION_TAG)-docker-build-context.tar.gz && \
192-
sed 's/artifacts/snapshots/g' Dockerfile > Dockerfile.tmp && mv Dockerfile.tmp Dockerfile && \
193-
docker build --progress=plain --network=host -t $(IMAGE_TAG)-dockerfile-wolfi:$(VERSION_TAG) .
194-
195169
public-dockerfiles_observability-sre: templates/Dockerfile.erb docker_paths $(COPY_FILES)
196170
../vendor/jruby/bin/jruby -S erb -T "-"\
197171
created_date="${BUILD_DATE}" \
@@ -200,19 +174,12 @@ public-dockerfiles_observability-sre: templates/Dockerfile.erb docker_paths $(CO
200174
version_tag="${VERSION_TAG}" \
201175
release="${RELEASE}" \
202176
image_flavor="observability-sre" \
203-
local_artifacts="false" \
177+
local_artifacts="$(or $(LOCAL_ARTIFACTS),false)" \
204178
templates/Dockerfile.erb > "${ARTIFACTS_DIR}/Dockerfile-observability-sre" && \
205179
cd $(ARTIFACTS_DIR)/docker && \
206180
cp $(ARTIFACTS_DIR)/Dockerfile-observability-sre Dockerfile && \
207181
tar -zcf ../logstash-observability-sre-$(VERSION_TAG)-docker-build-context.tar.gz Dockerfile bin config env2yaml pipeline
208182

209-
build-from-dockerfiles_observability-sre: public-dockerfiles_observability-sre
210-
cd $(ARTIFACTS_DIR)/docker && \
211-
mkdir -p dockerfile_build_observability-sre && cd dockerfile_build_observability-sre && \
212-
tar -zxf ../../logstash-observability-sre-$(VERSION_TAG)-docker-build-context.tar.gz && \
213-
sed 's/artifacts/snapshots/g' Dockerfile > Dockerfile.tmp && mv Dockerfile.tmp Dockerfile && \
214-
docker build --progress=plain --network=host -t $(IMAGE_TAG)-dockerfile-observability-sre:$(VERSION_TAG) .
215-
216183
public-dockerfiles_ironbank: templates/hardening_manifest.yaml.erb templates/IronbankDockerfile.erb ironbank_docker_paths $(COPY_IRONBANK_FILES)
217184
../vendor/jruby/bin/jruby -S erb -T "-"\
218185
elastic_version="${ELASTIC_VERSION}" \
@@ -224,7 +191,7 @@ public-dockerfiles_ironbank: templates/hardening_manifest.yaml.erb templates/Iro
224191
version_tag="${VERSION_TAG}" \
225192
release="${RELEASE}" \
226193
image_flavor="ironbank" \
227-
local_artifacts="false" \
194+
local_artifacts="$(or $(LOCAL_ARTIFACTS),false)" \
228195
templates/IronbankDockerfile.erb > "${ARTIFACTS_DIR}/Dockerfile-ironbank" && \
229196
cd $(ARTIFACTS_DIR)/ironbank && \
230197
cp $(ARTIFACTS_DIR)/Dockerfile-ironbank Dockerfile && \

rakelib/artifacts.rake

Lines changed: 1 addition & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,7 @@ namespace "artifact" do
169169

170170
desc "Generate rpm, deb, tar and zip artifacts"
171171
task "all" => ["prepare", "build"]
172-
task "docker_only" => ["prepare", "build_docker_full", "build_docker_oss", "build_docker_wolfi", "build_docker_observabilitySRE"]
172+
task "docker_only" => ["prepare", "docker", "docker_oss", "docker_wolfi", "docker_observabilitySRE"]
173173

174174
desc "Build all (jdk bundled and not) tar.gz and zip of default logstash plugins with all dependencies"
175175
task "archives" => ["prepare", "generate_build_metadata"] do
@@ -397,52 +397,24 @@ namespace "artifact" do
397397
build_dockerfile('oss')
398398
end
399399

400-
namespace "dockerfile_oss" do
401-
desc "Build Oss Docker image from Dockerfile context files"
402-
task "docker" => ["archives_docker", "dockerfile_oss"] do
403-
build_docker_from_dockerfiles('oss')
404-
end
405-
end
406-
407400
desc "Generate Dockerfile for observability-sre images"
408401
task "dockerfile_observabilitySRE" => ["prepare-observabilitySRE", "generate_build_metadata"] do
409402
puts("[dockerfiles] Building observability-sre Dockerfile")
410403
build_dockerfile('observability-sre')
411404
end
412405

413-
namespace "dockerfile_observabilitySRE" do
414-
desc "Build ObservabilitySrE Docker image from Dockerfile context files"
415-
task "docker" => ["archives_docker_observabilitySRE", "dockerfile_observabilitySRE"] do
416-
build_docker_from_dockerfiles('observability-sre')
417-
end
418-
end
419-
420406
desc "Generate Dockerfile for full images"
421407
task "dockerfile_full" => ["prepare", "generate_build_metadata"] do
422408
puts("[dockerfiles] Building full Dockerfiles")
423409
build_dockerfile('full')
424410
end
425411

426-
namespace "dockerfile_full" do
427-
desc "Build Full Docker image from Dockerfile context files"
428-
task "docker" => ["archives_docker", "dockerfile_full"] do
429-
build_docker_from_dockerfiles('full')
430-
end
431-
end
432-
433412
desc "Generate Dockerfile for wolfi images"
434413
task "dockerfile_wolfi" => ["prepare", "generate_build_metadata"] do
435414
puts("[dockerfiles] Building wolfi Dockerfiles")
436415
build_dockerfile('wolfi')
437416
end
438417

439-
namespace "dockerfile_wolfi" do
440-
desc "Build Wolfi Docker image from Dockerfile context files"
441-
task "docker" => ["archives_docker", "dockerfile_wolfi"] do
442-
build_docker_from_dockerfiles('wolfi')
443-
end
444-
end
445-
446418
desc "Generate build context for ironbank"
447419
task "dockerfile_ironbank" => ["prepare", "generate_build_metadata"] do
448420
puts("[dockerfiles] Building ironbank Dockerfiles")
@@ -469,30 +441,6 @@ namespace "artifact" do
469441
Rake::Task["artifact:archives_oss"].invoke
470442
end
471443

472-
task "build_docker_full" => [:generate_build_metadata] do
473-
Rake::Task["artifact:docker"].invoke
474-
Rake::Task["artifact:dockerfile_full"].invoke
475-
Rake::Task["artifact:dockerfile_full:docker"].invoke
476-
end
477-
478-
task "build_docker_oss" => [:generate_build_metadata] do
479-
Rake::Task["artifact:docker_oss"].invoke
480-
Rake::Task["artifact:dockerfile_oss"].invoke
481-
Rake::Task["artifact:dockerfile_oss:docker"].invoke
482-
end
483-
484-
task "build_docker_observabilitySRE" => [:generate_build_metadata] do
485-
Rake::Task["artifact:docker_observabilitySRE"].invoke
486-
Rake::Task["artifact:dockerfile_observabilitySRE"].invoke
487-
Rake::Task["artifact:dockerfile_observabilitySRE:docker"].invoke
488-
end
489-
490-
task "build_docker_wolfi" => [:generate_build_metadata] do
491-
Rake::Task["artifact:docker_wolfi"].invoke
492-
Rake::Task["artifact:dockerfile_wolfi"].invoke
493-
Rake::Task["artifact:dockerfile_wolfi:docker"].invoke
494-
end
495-
496444
task "generate_build_metadata" do
497445
require 'time'
498446
require 'tempfile'

0 commit comments

Comments
 (0)