diff --git a/.github/workflows/apisix_dev_push_docker_hub.yaml b/.github/workflows/apisix_dev_push_docker_hub.yaml index 49ea319a..f6d35b16 100644 --- a/.github/workflows/apisix_dev_push_docker_hub.yaml +++ b/.github/workflows/apisix_dev_push_docker_hub.yaml @@ -1,9 +1,7 @@ -name: Build and Push apisix-dev to Docker DockerHub - +name: Build and Push apisix-dev multi-arch to Docker Hub on: schedule: - # UTC 0:00 AM (See https://pubs.opengroup.org/onlinepubs/9699919799/utilities/crontab.html#tag_20_25_07) - cron: "0 1 * * *" push: branches: [master] @@ -12,44 +10,43 @@ on: - '**/*.md' jobs: - build: - runs-on: ubuntu-latest - + build-arm64: + runs-on: buildjet-4vcpu-ubuntu-2204-arm env: APISIX_VERSION: master APISIX_DOCKER_TAG: master-debian-dev - steps: - name: Check out the repo uses: actions/checkout@v2 - - name: Build and run - run: | - make build-on-debian-dev - docker compose -f ./compose/docker-compose-master.yaml up -d - sleep 30 - docker logs compose-apisix-1 + - name: Set up QEMU + uses: docker/setup-qemu-action@v1 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 - - name: Test APISIX + - name: Login to Docker Hub + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKERHUB_USER }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Build and push ARM64 image run: | + make push-multiarch-dev-on-debian PLATFORM=linux/arm64 + docker pull apache/apisix:dev-arm64 - curl http://127.0.0.1:9180/apisix/admin/routes/1 \ - -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d ' - { - "uri": "/get", - "upstream": { - "type": "roundrobin", - "nodes": { - "httpbin.org:80": 1 - } - } - }' + build-amd64: + runs-on: ubuntu-latest + env: + APISIX_VERSION: master + APISIX_DOCKER_TAG: master-debian-dev + steps: + - name: Check out the repo + uses: actions/checkout@v2 - result_code=`curl -I -m 10 -o /dev/null -s -w %{http_code} http://127.0.0.1:9080/get` - if [[ $result_code -ne 200 ]];then - printf "result_code: %s\n" "$result_code" - exit 125 - fi + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 - name: Login to Docker Hub uses: docker/login-action@v1 @@ -57,12 +54,26 @@ jobs: username: ${{ secrets.DOCKERHUB_USER }} password: ${{ secrets.DOCKERHUB_TOKEN }} - - name: Set up QEMU - uses: docker/setup-qemu-action@v1 + - name: Build and push AMD64 image + run: | + make push-multiarch-dev-on-debian PLATFORM=linux/amd64 + docker pull apache/apisix:dev-amd64 + create-manifest: + runs-on: ubuntu-latest + needs: [build-arm64, build-amd64] + steps: - name: Set up Docker Buildx uses: docker/setup-buildx-action@v1 - - name: Push apisix image to Docker Hub + - name: Login to Docker Hub + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKERHUB_USER }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Create multi-arch manifest run: | - make push-multiarch-dev-on-debian + docker buildx imagetools create --tag apache/apisix:dev \ + apache/apisix:dev-arm64 \ + apache/apisix:dev-amd64 diff --git a/Makefile b/Makefile index 805e2209..6e5cf630 100644 --- a/Makefile +++ b/Makefile @@ -112,15 +112,15 @@ build-on-debian: rm -f debian/check_standalone_config.sh @$(call func_echo_success_status, "$@ -> [ Done ]") - +PLATFORM ?= linux/amd64 ### push-on-alpine : Push apache/apisix:dev image .PHONY: push-multiarch-dev-on-debian push-multiarch-dev-on-debian: @$(call func_echo_status, "$@ -> [ Start ]") cp ./utils/check_standalone_config.sh debian-dev/check_standalone_config.sh $(ENV_DOCKER) buildx build --network=host --push \ - -t $(IMAGE_NAME):dev \ - --platform linux/amd64,linux/arm64 \ + -t $(IMAGE_NAME):dev-$(shell echo $(PLATFORM) | cut -d'/' -f2) \ + --platform $(PLATFORM) \ -f ./debian-dev/Dockerfile debian-dev rm -f debian-dev/check_standalone_config.sh @$(call func_echo_success_status, "$@ -> [ Done ]")