Skip to content

Commit 3f5e87c

Browse files
authored
Normalize build-binaries targets (jaegertracing#5924)
## Which problem is this PR solving? - Part of jaegertracing#5889 - `build-binaries-***` Makefile targets sometimes include os-arch, sometimes just os, sometimes just arch - it's a mess ## Description of the changes - normalize all targets to be `build-binaries-$os-$arch` - change `ci-build-binaries.yml` workflow to use `make echo-platforms` for the jobs matrix ## How was this change tested? - ci --------- Signed-off-by: Yuri Shkuro <[email protected]>
1 parent 58f2508 commit 3f5e87c

10 files changed

+68
-62
lines changed

.github/workflows/ci-build-binaries.yml

+17-24
Original file line numberDiff line numberDiff line change
@@ -16,29 +16,25 @@ permissions:
1616
contents: read
1717

1818
jobs:
19+
generate-matrix:
20+
runs-on: ubuntu-latest
21+
outputs:
22+
matrix: ${{ steps.set-matrix.outputs.matrix }}
23+
steps:
24+
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
25+
- name: define matrix
26+
id: set-matrix
27+
run: |
28+
echo "matrix=$(bash scripts/platforms-to-gh-matrix.sh)" >> $GITHUB_OUTPUT
29+
1930
build-binaries:
31+
needs: generate-matrix
2032
runs-on: ubuntu-latest
2133
strategy:
22-
matrix:
23-
platform:
24-
- name: linux
25-
task: build-binaries-linux
26-
- name: windows
27-
task: build-binaries-windows
28-
- name: osx
29-
task: build-binaries-darwin
30-
- name: osx-m1
31-
task: build-binaries-darwin-arm64
32-
- name: system/390
33-
task: build-binaries-s390x
34-
- name: arm
35-
task: build-binaries-arm64
36-
- name: powerpc
37-
task: build-binaries-ppc64le
38-
name: build binaries for ${{ matrix.platform.name }}
34+
matrix: ${{fromJson(needs.generate-matrix.outputs.matrix)}}
35+
name: build-binaries-${{ matrix.os }}-${{ matrix.arch }}
3936
steps:
40-
- name: Harden Runner
41-
uses: step-security/harden-runner@0d381219ddf674d61a7572ddd19d7941e271515c # v2.9.0
37+
- uses: step-security/harden-runner@0d381219ddf674d61a7572ddd19d7941e271515c # v2.9.0
4238
with:
4339
egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs
4440

@@ -57,11 +53,8 @@ jobs:
5753
- name: Setup Node.js version
5854
uses: ./.github/actions/setup-node.js
5955

60-
- name: Export BRANCH variable
61-
uses: ./.github/actions/setup-branch
62-
6356
- name: Install tools
6457
run: make install-ci
6558

66-
- name: Build binaries
67-
run: make ${{ matrix.platform.task }}
59+
- name: Build platform binaries
60+
run: make build-binaries-${{ matrix.os }}-${{ matrix.arch }}

Makefile.BuildBinaries.mk

+25-27
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
# Copyright (c) 2023 The Jaeger Authors.
22
# SPDX-License-Identifier: Apache-2.0
33

4-
GOBUILD=CGO_ENABLED=0 installsuffix=cgo $(GO) build -trimpath
4+
# This command expects $GOOS/$GOARCH env variables set to reflect the desired target platform.
5+
GOBUILD=echo "building for $$(go env GOOS)-$$(go env GOARCH)"; \
6+
CGO_ENABLED=0 installsuffix=cgo $(GO) build -trimpath
57

68
ifeq ($(DEBUG_BINARY),)
79
DISABLE_OPTIMIZATIONS =
@@ -29,13 +31,11 @@ jaeger-ui/packages/jaeger-ui/build/index.html:
2931

3032
.PHONY: rebuild-ui
3133
rebuild-ui:
34+
@echo "::group::rebuild-ui logs"
3235
bash ./scripts/rebuild-ui.sh
3336
@echo "NOTE: This target only rebuilds the UI assets inside jaeger-ui/packages/jaeger-ui/build/."
3437
@echo "NOTE: To make them usable from query-service run 'make build-ui'."
35-
36-
.PHONY: build-all-in-one-linux
37-
build-all-in-one-linux:
38-
GOOS=linux $(MAKE) build-all-in-one
38+
@echo "::endgroup::"
3939

4040
.PHONY: build-examples
4141
build-examples:
@@ -101,38 +101,35 @@ build-ingester: _build-a-binary-ingester$(SUFFIX)-$(GOOS)-$(GOARCH)
101101
build-remote-storage: BIN_NAME = remote-storage
102102
build-remote-storage: _build-a-binary-remote-storage$(SUFFIX)-$(GOOS)-$(GOARCH)
103103

104-
.PHONY: build-binaries-linux
105-
build-binaries-linux: build-binaries-amd64
106-
107-
.PHONY: build-binaries-amd64
108-
build-binaries-amd64:
104+
.PHONY: build-binaries-linux-amd64
105+
build-binaries-linux-amd64:
109106
GOOS=linux GOARCH=amd64 $(MAKE) _build-platform-binaries
110107

111-
# helper targets defined in Makefile.Windows.mk
112-
.PHONY: build-binaries-windows
113-
build-binaries-windows:
108+
# helper sysp targets are defined in Makefile.Windows.mk
109+
.PHONY: build-binaries-windows-amd64
110+
build-binaries-windows-amd64:
114111
$(MAKE) _build-syso
115112
GOOS=windows GOARCH=amd64 $(MAKE) _build-platform-binaries
116113
$(MAKE) _clean-syso
117114

118-
.PHONY: build-binaries-darwin
119-
build-binaries-darwin:
115+
.PHONY: build-binaries-darwin-amd64
116+
build-binaries-darwin-amd64:
120117
GOOS=darwin GOARCH=amd64 $(MAKE) _build-platform-binaries
121118

122119
.PHONY: build-binaries-darwin-arm64
123120
build-binaries-darwin-arm64:
124121
GOOS=darwin GOARCH=arm64 $(MAKE) _build-platform-binaries
125122

126-
.PHONY: build-binaries-s390x
127-
build-binaries-s390x:
123+
.PHONY: build-binaries-linux-s390x
124+
build-binaries-linux-s390x:
128125
GOOS=linux GOARCH=s390x $(MAKE) _build-platform-binaries
129126

130-
.PHONY: build-binaries-arm64
131-
build-binaries-arm64:
127+
.PHONY: build-binaries-linux-arm64
128+
build-binaries-linux-arm64:
132129
GOOS=linux GOARCH=arm64 $(MAKE) _build-platform-binaries
133130

134-
.PHONY: build-binaries-ppc64le
135-
build-binaries-ppc64le:
131+
.PHONY: build-binaries-linux-ppc64le
132+
build-binaries-linux-ppc64le:
136133
GOOS=linux GOARCH=ppc64le $(MAKE) _build-platform-binaries
137134

138135
# build all binaries for one specific platform GOOS/GOARCH
@@ -156,6 +153,7 @@ _build-platform-binaries: \
156153

157154
# build binaries that support DEBUG release, for one specific platform GOOS/GOARCH
158155
.PHONY: _build-platform-binaries-debug
156+
_build-platform-binaries-debug:
159157
_build-platform-binaries-debug: \
160158
build-agent \
161159
build-collector \
@@ -167,10 +165,10 @@ _build-platform-binaries-debug: \
167165

168166
.PHONY: build-all-platforms
169167
build-all-platforms: \
170-
build-binaries-linux \
171-
build-binaries-windows \
172-
build-binaries-darwin \
168+
build-binaries-linux-amd64 \
169+
build-binaries-windows-amd64 \
170+
build-binaries-darwin-amd64 \
173171
build-binaries-darwin-arm64 \
174-
build-binaries-s390x \
175-
build-binaries-arm64 \
176-
build-binaries-ppc64le
172+
build-binaries-linux-s390x \
173+
build-binaries-linux-arm64 \
174+
build-binaries-linux-ppc64le

Makefile.Crossdock.mk

+3-3
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ build-crossdock-ui-placeholder:
1919
$(MAKE) build-ui
2020

2121
.PHONY: build-crossdock
22-
build-crossdock: build-crossdock-ui-placeholder build-binaries-linux build-crossdock-linux docker-images-cassandra crossdock-docker-images-jaeger-backend
22+
build-crossdock: build-crossdock-ui-placeholder build-binaries-linux-$(GOARCH) build-crossdock-binary docker-images-cassandra crossdock-docker-images-jaeger-backend
2323
docker build -t $(DOCKER_NAMESPACE)/test-driver:${DOCKER_TAG} --build-arg TARGETARCH=$(GOARCH) crossdock/
2424
@echo "Finished building test-driver ==============" ; \
2525

@@ -28,11 +28,11 @@ build-and-run-crossdock: build-crossdock
2828
make crossdock
2929

3030
.PHONY: build-crossdock-fresh
31-
build-crossdock-fresh: build-crossdock-linux
31+
build-crossdock-fresh: build-crossdock-binary
3232
make crossdock-fresh
3333

3434
.PHONY: crossdock-docker-images-jaeger-backend
35-
crossdock-docker-images-jaeger-backend: PLATFORMS=linux/$(shell go env GOARCH)
35+
crossdock-docker-images-jaeger-backend: PLATFORMS=linux/$(GOARCH)
3636
crossdock-docker-images-jaeger-backend: create-baseimg create-fake-debugimg
3737
for component in "jaeger-agent" "jaeger-collector" "jaeger-query" "jaeger-ingester" "all-in-one" ; do \
3838
regex="jaeger-(.*)"; \

scripts/build-all-in-one-image.sh

-1
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,6 @@ run_integration_test() {
8181

8282
# Loop through each platform (separated by commas)
8383
for platform in $(echo "$platforms" | tr ',' ' '); do
84-
# Extract the architecture from the platform string
8584
arch=${platform##*/} # Remove everything before the last slash
8685
make "build-${BINARY}" GOOS=linux GOARCH="${arch}"
8786
done

scripts/build-upload-docker-images.sh

+1-2
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,8 @@ set -x
4040

4141
# Loop through each platform (separated by commas)
4242
for platform in $(echo "$platforms" | tr ',' ' '); do
43-
# Extract the architecture from the platform string
4443
arch=${platform##*/} # Remove everything before the last slash
45-
make "build-binaries-$arch"
44+
make "build-binaries-linux-${arch}"
4645
done
4746

4847
if [[ "${add_debugger}" == "N" ]]; then

scripts/cassandra-integration-test.sh

-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ check_arg() {
2424
setup_cassandra() {
2525
local compose_file=$1
2626
docker compose -f "$compose_file" up -d
27-
echo "docker_compose_file=${compose_file}" >> "${GITHUB_OUTPUT:-/dev/null}"
2827
}
2928

3029
dump_logs() {

scripts/es-integration-test.sh

-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ check_arg() {
2929
setup_db() {
3030
local compose_file=$1
3131
docker compose -f "${compose_file}" up -d
32-
echo "docker_compose_file=${compose_file}" >> "${GITHUB_OUTPUT:-/dev/null}"
3332
}
3433

3534
# check if the storage is up and running

scripts/kafka-integration-test.sh

-2
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@
66
set -euf -o pipefail
77

88
compose_file="docker-compose/kafka-integration-test/docker-compose.yml"
9-
echo "docker_compose_file=${compose_file}" >> "${GITHUB_OUTPUT:-/dev/null}"
10-
119
jaeger_version=""
1210
manage_kafka="true"
1311
success="false"

scripts/package-deploy.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ mkdir deploy
115115

116116
# Loop through each platform (separated by commas)
117117
for platform in $(echo "$platforms" | tr ',' ' '); do
118-
os="${platform%%/*}" # Remove everything after the slash
118+
os=${platform%%/*} # Remove everything after the slash
119119
arch=${platform##*/} # Remove everything before the last slash
120120
if [[ "$os" == "windows" ]]; then
121121
package tar "${os}-${arch}" .exe

scripts/platforms-to-gh-matrix.sh

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
#!/bin/bash
2+
#
3+
# Copyright (c) 2024 The Jaeger Authors.
4+
# SPDX-License-Identifier: Apache-2.0
5+
6+
set -euf -o pipefail
7+
8+
echo -n '{ "include": [ '
9+
first="true"
10+
for pair in $(make echo-platforms | tr ',' ' '); do
11+
os=$(echo "$pair" | cut -d '/' -f 1)
12+
arch=$(echo "$pair" | cut -d '/' -f 2)
13+
if [[ "$first" == "true" ]]; then
14+
first="false"
15+
else
16+
echo -n ' ,'
17+
fi
18+
echo -n "{ \"os\": \"$os\", \"arch\": \"$arch\" }"
19+
done
20+
21+
echo "]}"

0 commit comments

Comments
 (0)