This is an automated email from the ASF dual-hosted git repository. pcongiusti pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/camel-k.git
commit 47fa320e29f70c745b9176b32ee7cc9a5defa488 Author: Pasquale Congiusti <[email protected]> AuthorDate: Tue Jun 6 09:38:46 2023 +0200 chore(ci): define IMAGE_ARCH parameter --- .github/actions/release-nightly/action.yml | 42 ++++++++++++++++------------ script/Makefile | 44 ++++++++++++------------------ script/cross_compile.sh | 1 + 3 files changed, 42 insertions(+), 45 deletions(-) diff --git a/.github/actions/release-nightly/action.yml b/.github/actions/release-nightly/action.yml index 0ad193cba..71390e5de 100644 --- a/.github/actions/release-nightly/action.yml +++ b/.github/actions/release-nightly/action.yml @@ -79,22 +79,22 @@ runs: MAVEN_REPOSITORY=$(make get-staging-repo) echo "Using MAVEN_REPOSITORY=$MAVEN_REPOSITORY" echo "MAVEN_REPOSITORY=$MAVEN_REPOSITORY" >> $GITHUB_ENV - - name: Install newer docker CLI supporting multi platform build - shell: bash - run: | - sudo apt-get update - sudo apt-get install ca-certificates curl gnupg - sudo install -m 0755 -d /etc/apt/keyrings - curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg - sudo chmod a+r /etc/apt/keyrings/docker.gpg - echo \ - "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ - "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \ - sudo tee /etc/apt/sources.list.d/docker.list > /dev/null - sudo apt-get update - sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin + # - name: Install newer docker CLI supporting multi platform build + # shell: bash + # run: | + # sudo apt-get update + # sudo apt-get install ca-certificates curl gnupg + # sudo install -m 0755 -d /etc/apt/keyrings + # curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg + # sudo chmod a+r /etc/apt/keyrings/docker.gpg + # echo \ + # "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ + # "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \ + # sudo tee /etc/apt/sources.list.d/docker.list > /dev/null + # sudo apt-get update + # sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin - name: Set up QEMU (required by multi platform build) - uses: docker/setup-qemu-action@v2 + uses: docker/setup-qemu-action@v2 - name: Login to Container Registry uses: docker/login-action@v1 with: @@ -103,7 +103,8 @@ runs: - name: Build and release containers shell: bash run: | - make VERSION=${{ env.VERSION }} IMAGE_NAME=${{ env.IMAGE_NAME }} codegen set-version build-resources release-nightly + make VERSION=${{ env.VERSION }} IMAGE_NAME=${{ env.IMAGE_NAME }} release-nightly + make IMAGE_ARCH=arm64 VERSION=${{ env.VERSION }} IMAGE_NAME=${{ env.IMAGE_NAME }} release-nightly - name: Create Release id: create_release uses: ncipollo/release-action@58ae73b360456532aafd58ee170c045abbeaee37 @@ -111,14 +112,19 @@ runs: artifacts: "./camel-k-client*.tar.gz" body: | Apache Camel K ${{ env.VERSION }} build for testing (unstable). This nightly release is using - an **unsupported** operator image published as `${{ env.IMAGE_NAME }}:${{ env.VERSION }}` + an **unsupported** operator image published as `${{ env.IMAGE_NAME }}:${{ env.VERSION }}` (default `amd64` architecture, + `-arm64` suffix for ARM64 architectures) To test it, download the client for your OS and run: - ``` kamel install --olm=false --maven-repository=${{ env.MAVEN_REPOSITORY }} ``` + To test ARM64 architecture, download the client for your OS and run: + ``` + kamel install --olm=false --operator-image=${{ env.IMAGE_NAME }}:${{ env.VERSION }}-arm64 --maven-repository=${{ env.MAVEN_REPOSITORY }} + ``` + NOTE: last updated on ${{ env.UPD_DATE }} token: ${{ inputs.secretGithubToken }} draft: false diff --git a/script/Makefile b/script/Makefile index 83e747163..f500f26a8 100644 --- a/script/Makefile +++ b/script/Makefile @@ -35,7 +35,8 @@ BASE_IMAGE := docker.io/eclipse-temurin:11 DEFAULT_PVC := camel-k-pvc LOCAL_REPOSITORY := /etc/maven/m2 IMAGE_NAME ?= docker.io/apache/camel-k - +# Default value, change to your architecture accordingly +IMAGE_ARCH ?= amd64 # # Situations when user wants to override # the image name and version @@ -341,14 +342,10 @@ test-quarkus-native-high-memory: do-build go test -timeout 180m -v ./e2e/native -tags=integration,high_memory $(TEST_QUARKUS_RUN) $(GOTESTFMT) build-kamel: - @echo "####### Building kamel CLI..." - @# Ensure the binary is statically linked when building on Linux due to ABI changes in newer glibc 2.32, otherwise - @# it would not run on older versions. See https://github.com/apache/camel-k/pull/2141#issuecomment-800990117 -ifeq ($(shell uname -s 2>/dev/null || echo Unknown),Linux) - CGO_ENABLED=0 go build $(GOFLAGS) -o kamel ./cmd/kamel/*.go -else - go build $(GOFLAGS) -o kamel ./cmd/kamel/*.go -endif + @echo "####### Building kamel CLI for $(IMAGE_ARCH) architecture..." + GOOS=linux GOARCH=$(IMAGE_ARCH) go build $(GOFLAGS) -o build/_output/bin/kamel-$(IMAGE_ARCH) ./cmd/kamel/*.go + # Symbolic link to a local CLI + ln -sf build/_output/bin/kamel-$(IMAGE_ARCH) ./kamel build-resources: ./script/get_catalog.sh $(RUNTIME_VERSION) $(STAGING_RUNTIME_REPO) @@ -418,9 +415,6 @@ dir-licenses: check-licenses: ./script/check_licenses.sh -check-platform: - ./script/check_platform.sh - # The below are dependencies needed for maven structured logs. We must bundle into the final container image. maven-overlay: @echo "####### Preparing maven dependencies bundle..." @@ -428,24 +422,20 @@ maven-overlay: ./script/maven_overlay.sh -s "$(STAGING_RUNTIME_REPO)" -d "$(CAMEL_K_RUNTIME_DIR)" $(RUNTIME_VERSION) build/_maven_overlay kamel-overlay: - @echo "####### Copying kamel CLI to output build directory..." - mkdir -p build/_output/bin -ifeq ($(shell uname -s 2>/dev/null || echo Unknown),Linux) - cp kamel build/_output/bin -else ifeq ($(shell uname -m), arm64) - GOOS=linux GOARCH=arm64 go build $(GOFLAGS) -o build/_output/bin/kamel ./cmd/kamel/*.go -else - GOOS=linux go build $(GOFLAGS) -o build/_output/bin/kamel ./cmd/kamel/*.go -endif + @echo "####### Copy arch $(IMAGE_ARCH) CLI into output build directory..." + cp build/_output/bin/kamel-$(IMAGE_ARCH) build/_output/bin/kamel images: build kamel-overlay maven-overlay bundle-kamelets ifneq (,$(findstring SNAPSHOT,$(RUNTIME_VERSION))) ./script/package_maven_artifacts.sh -s "$(STAGING_RUNTIME_REPO)" -d "$(CAMEL_K_RUNTIME_DIR)" $(RUNTIME_VERSION) endif - @echo "####### Building Camel K operator container image..." + @echo "####### Building Camel K operator arch $(IMAGE_ARCH) container image..." mkdir -p build/_maven_output - docker build --platform=linux/amd64 -t $(CUSTOM_IMAGE):$(CUSTOM_VERSION) -f build/Dockerfile . - docker build --platform=linux/arm64 -t $(CUSTOM_IMAGE):$(CUSTOM_VERSION)-arm64 -f build/Dockerfile . +ifeq ($(IMAGE_ARCH), amd64) + docker build --platform=linux/$(IMAGE_ARCH) -t $(CUSTOM_IMAGE):$(CUSTOM_VERSION) -f build/Dockerfile . +else + docker build --platform=linux/$(IMAGE_ARCH) -t $(CUSTOM_IMAGE):$(CUSTOM_VERSION)-$(IMAGE_ARCH) -f build/Dockerfile . +endif images-push: docker push $(CUSTOM_IMAGE):$(CUSTOM_VERSION) @@ -497,11 +487,11 @@ cross-compile: # be processed as a single argument by the cross compile script ./script/cross_compile.sh $(CUSTOM_VERSION) $(subst ","\",$(GOFLAGS)) -release: clean codegen set-module-version set-version build-resources check-licenses build images images-push cross-compile git-tag +release: clean codegen set-module-version set-version build-resources check-licenses images images-push cross-compile git-tag -release-staging: clean codegen set-module-version set-version build-resources check-licenses build images images-push-staging cross-compile fabric8-crds git-tag +release-staging: clean codegen set-module-version set-version build-resources check-licenses images images-push-staging cross-compile fabric8-crds git-tag -release-nightly: clean codegen set-module-version set-version build-resources build images images-push cross-compile +release-nightly: clean codegen set-module-version set-version build-resources images images-push cross-compile release-helm: ./script/release_helm.sh diff --git a/script/cross_compile.sh b/script/cross_compile.sh index 034647fb1..816be9178 100755 --- a/script/cross_compile.sh +++ b/script/cross_compile.sh @@ -58,6 +58,7 @@ cross_compile () { } cross_compile ${basename}-${version}-linux-64bit linux amd64 +cross_compile ${basename}-${version}-linux-64bit linux arm64 cross_compile ${basename}-${version}-mac-64bit darwin amd64 cross_compile ${basename}-${version}-mac-arm64bit darwin arm64 cross_compile ${basename}-${version}-windows-64bit windows amd64
