Skip to content

Commit 4b6fe92

Browse files
authored
build multiarch images (#319)
* try buildx * try using the build-and-push action
1 parent a5000b7 commit 4b6fe92

File tree

2 files changed

+25
-41
lines changed

2 files changed

+25
-41
lines changed

.github/workflows/build-test-publish.yaml

+17-40
Original file line numberDiff line numberDiff line change
@@ -369,18 +369,6 @@ jobs:
369369
path: ./bin/*
370370

371371
publish-dev:
372-
strategy:
373-
matrix:
374-
os:
375-
#- darwin
376-
- linux
377-
#- windows
378-
arch:
379-
#- 386
380-
- amd64
381-
#- arm
382-
- arm64
383-
#- ppc64le
384372
permissions:
385373
contents: 'read'
386374
id-token: 'write'
@@ -394,6 +382,10 @@ jobs:
394382
uses: actions/setup-go@v3
395383
with:
396384
go-version: "1.20"
385+
- name: Set up QEMU
386+
uses: docker/setup-qemu-action@v3
387+
- name: Set up Docker Buildx
388+
uses: docker/setup-buildx-action@v3
397389
- name: Mkdir bin and dist
398390
run: |
399391
mkdir bin/ dist/
@@ -423,23 +415,14 @@ jobs:
423415
BRANCH: ${{github.ref_name}}
424416
RUN_NUMBER: ${{github.run_number}}
425417
BASE_VERSION: "0.0.0"
426-
GOARCH: ${{ matrix.arch }}
427-
GOOS: ${{ matrix.os }}
428418
run: |
429419
# let's simply use the k8s namespace rules (even stricter) and have the same version(-suffix) for everything
430420
# lowercase everything and replace all invalid characters with '-' and trim to 60 characters
431421
SANITIZED_BRANCH=$(echo -n "${BRANCH}" | tr '[:upper:]' '[:lower:]' | tr -C 'a-z0-9' '-')
432422
SANITIZED_BRANCH="${SANITIZED_BRANCH:0:60}"
433423
434-
BUILD_VERSION="${BASE_VERSION}-${SANITIZED_BRANCH}-${RUN_NUMBER}-${GOOS}-${GOARCH}"
424+
BUILD_VERSION="${BASE_VERSION}-${SANITIZED_BRANCH}-${RUN_NUMBER}"
435425
echo "BUILD_VERSION=${BUILD_VERSION}" | tee -a $GITHUB_ENV $GITHUB_OUTPUT
436-
- name: Build Docker Image
437-
env:
438-
GOARCH: ${{ matrix.arch }}
439-
GOOS: ${{ matrix.os }}
440-
run: |
441-
make docker-otelcontribcol
442-
docker tag otelcontribcol:latest 609927696493.dkr.ecr.us-west-2.amazonaws.com/opentelemetry-collector-contrib:${{ steps.create-version.outputs.BUILD_VERSION }}
443426
- id: login-gcp
444427
name: Authenticate with Google Cloud
445428
uses: google-github-actions/auth@v1
@@ -475,21 +458,15 @@ jobs:
475458
- name: Login to Amazon ECR
476459
id: login-ecr
477460
uses: aws-actions/amazon-ecr-login@v1
478-
- name: Push Docker Image
479-
run: |
480-
docker push 609927696493.dkr.ecr.us-west-2.amazonaws.com/opentelemetry-collector-contrib:${{ steps.create-version.outputs.BUILD_VERSION }}
481-
- name: Push image to GCP
482-
env:
483-
DOCKER_IMAGE: otelcontribcol
484-
BUILD_VERSION: ${{steps.create-version.outputs.BUILD_VERSION}}
485-
GCR_ASIA_IMAGE: ${{secrets.GCR_ASIA_IMAGE}}
486-
GCR_EUROPE_IMAGE: ${{secrets.GCR_EUROPE_IMAGE}}
487-
GCR_US_IMAGE: ${{secrets.GCR_US_IMAGE}}
488-
run: |
489-
docker tag $DOCKER_IMAGE:latest ${GCR_ASIA_IMAGE}:${BUILD_VERSION}
490-
docker tag $DOCKER_IMAGE:latest ${GCR_EUROPE_IMAGE}:${BUILD_VERSION}
491-
docker tag $DOCKER_IMAGE:latest ${GCR_US_IMAGE}:${BUILD_VERSION}
492-
docker push -a ${GCR_ASIA_IMAGE}
493-
docker push -a ${GCR_EUROPE_IMAGE}
494-
docker push -a ${GCR_US_IMAGE}
495-
461+
- name: build and push
462+
uses: docker/build-push-action@v5
463+
with:
464+
push: true
465+
context: .
466+
file: ./cmd/otelcontribcol/Dockerfile
467+
platforms: linux/amd64,linux/arm64
468+
tags: |
469+
609927696493.dkr.ecr.us-west-2.amazonaws.com/opentelemetry-collector-contrib:${{steps.create-version.outputs.BUILD_VERSION}}
470+
${{secrets.GCR_ASIA_IMAGE}}:${{steps.create-version.outputs.BUILD_VERSION}}
471+
${{secrets.GCR_EUROPE_IMAGE}}:${{steps.create-version.outputs.BUILD_VERSION}}
472+
${{secrets.GCR_US_IMAGE}}:${{steps.create-version.outputs.BUILD_VERSION}}

cmd/otelcontribcol/Dockerfile

+8-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
FROM golang:1.20 AS build
2+
3+
WORKDIR /src
4+
ADD . /src
5+
6+
RUN cd cmd/otelcontribcol && CGO_ENABLED=0 go build -o /otelcontribcol
7+
18
FROM alpine:latest as prep
29
RUN apk --update add ca-certificates
310

@@ -9,7 +16,7 @@ ARG USER_UID=10001
916
USER ${USER_UID}
1017

1118
COPY --from=prep /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt
12-
COPY otelcontribcol /
19+
COPY --from=build /otelcontribcol /otelcontribcol
1320
EXPOSE 4317 55680 55679
1421
ENTRYPOINT ["/otelcontribcol"]
1522
CMD ["--config", "/etc/otel/config.yaml"]

0 commit comments

Comments
 (0)