From 4712f001968089e976192913034fadea2d7a1a88 Mon Sep 17 00:00:00 2001 From: hefanli <76611805+hefanli@users.noreply.github.com> Date: Fri, 12 Dec 2025 16:44:43 +0800 Subject: [PATCH] feature: add the pipeline for pushing images to Huawei Cloud (#167) --- .../docker-push-to-huaweicloud-reusable.yml | 47 ++++++++++++ .../workflows/docker-push-to-huaweicloud.yml | 73 +++++++++++++++++++ 2 files changed, 120 insertions(+) create mode 100644 .github/workflows/docker-push-to-huaweicloud-reusable.yml create mode 100644 .github/workflows/docker-push-to-huaweicloud.yml diff --git a/.github/workflows/docker-push-to-huaweicloud-reusable.yml b/.github/workflows/docker-push-to-huaweicloud-reusable.yml new file mode 100644 index 0000000..4a94853 --- /dev/null +++ b/.github/workflows/docker-push-to-huaweicloud-reusable.yml @@ -0,0 +1,47 @@ +name: docker-push-to-huaweicloud-reusable.yml +on: + workflow_call: + inputs: + version: + description: 'image version (e.g. latest or v0.0.1-beta)' + required: true + default: 'latest' + type: string + service_name: + description: 'image version (e.g. latest or v0.0.1-beta)' + required: true + default: 'latest' + type: string + secrets: + HUAWEI_CLOUD_SWR_LOGIN_PWD: + description: 'login pwd' + required: true + +jobs: + retag-and-push: + name: Retag and Push to Huawei Cloud SWR + runs-on: ubuntu-latest + steps: + - name: Pull source image and retag (amd) + shell: bash + run: | + SOURCE_IMAGE=ghcr.io/modelengine-group/${{ inputs.service_name}}:${{ inputs.version}} + TARGET_IMAGE=swr.cn-east-3.myhuaweicloud.com/data-mate/${{ inputs.service_name}}:${{ inputs.version}} + docker pull "${SOURCE_IMAGE}" + docker tag "${SOURCE_IMAGE}" "${TARGET_IMAGE}"-amd + - name: Pull source image and retag (arm) + shell: bash + run: | + SOURCE_IMAGE=ghcr.io/modelengine-group/${{ inputs.service_name}}:${{ inputs.version}} + TARGET_IMAGE=swr.cn-east-3.myhuaweicloud.com/data-mate/${{ inputs.service_name}}:${{ inputs.version}} + docker pull "${SOURCE_IMAGE}" --platform=linux/arm64 + docker tag "${SOURCE_IMAGE}" "${TARGET_IMAGE}"-arm + - name: Push image to Huawei SWR using + shell: bash + run: | + TARGET_IMAGE=swr.cn-east-3.myhuaweicloud.com/data-mate/${{ inputs.service_name}}:${{ inputs.version}} + echo "${{ secrets.HUAWEI_CLOUD_SWR_LOGIN_PWD}}" | docker login swr.cn-east-3.myhuaweicloud.com --username=cn-east-3@HPUA3ZGOTQFAFMM59DB9 --password-stdin + docker push "${TARGET_IMAGE}"-amd + docker push "${TARGET_IMAGE}"-arm + docker manifest create "${TARGET_IMAGE}" "${TARGET_IMAGE}"-amd "${TARGET_IMAGE}"-arm + docker manifest push "${TARGET_IMAGE}" diff --git a/.github/workflows/docker-push-to-huaweicloud.yml b/.github/workflows/docker-push-to-huaweicloud.yml new file mode 100644 index 0000000..e1c5657 --- /dev/null +++ b/.github/workflows/docker-push-to-huaweicloud.yml @@ -0,0 +1,73 @@ +name: docker-push-to-huaweicloud.yml +on: + workflow_dispatch: + inputs: + version: + description: 'image version (e.g. latest or v0.0.1-beta)' + required: true + default: 'latest' + type: string + +jobs: + frontend: + name: Push Frontend Image + uses: ./.github/workflows/docker-push-to-huaweicloud-reusable.yml + with: + service_name: datamate-frontend + version: ${{ inputs.version}} + secrets: + HUAWEI_CLOUD_SWR_LOGIN_PWD: ${{ secrets.HUAWEI_CLOUD_SWR_LOGIN_PWD}} + + backend: + name: Push Backend Image + uses: ./.github/workflows/docker-push-to-huaweicloud-reusable.yml + with: + service_name: datamate-backend + version: ${{ inputs.version}} + secrets: + HUAWEI_CLOUD_SWR_LOGIN_PWD: ${{ secrets.HUAWEI_CLOUD_SWR_LOGIN_PWD}} + + backend-python: + name: Push Backend-Python Image + uses: ./.github/workflows/docker-push-to-huaweicloud-reusable.yml + with: + service_name: datamate-backend-python + version: ${{ inputs.version}} + secrets: + HUAWEI_CLOUD_SWR_LOGIN_PWD: ${{ secrets.HUAWEI_CLOUD_SWR_LOGIN_PWD}} + + runtime: + name: Push Runtime Image + uses: ./.github/workflows/docker-push-to-huaweicloud-reusable.yml + with: + service_name: datamate-runtime + version: ${{ inputs.version}} + secrets: + HUAWEI_CLOUD_SWR_LOGIN_PWD: ${{ secrets.HUAWEI_CLOUD_SWR_LOGIN_PWD}} + + database: + name: Push Database Image + uses: ./.github/workflows/docker-push-to-huaweicloud-reusable.yml + with: + service_name: datamate-database + version: ${{ inputs.version}} + secrets: + HUAWEI_CLOUD_SWR_LOGIN_PWD: ${{ secrets.HUAWEI_CLOUD_SWR_LOGIN_PWD}} + + deer-flow-backend: + name: Push deer-flow-backend Image + uses: ./.github/workflows/docker-push-to-huaweicloud-reusable.yml + with: + service_name: deer-flow-backend + version: ${{ inputs.version}} + secrets: + HUAWEI_CLOUD_SWR_LOGIN_PWD: ${{ secrets.HUAWEI_CLOUD_SWR_LOGIN_PWD}} + + deer-flow-frontend: + name: Push deer-flow-frontend Image + uses: ./.github/workflows/docker-push-to-huaweicloud-reusable.yml + with: + service_name: deer-flow-frontend + version: ${{ inputs.version}} + secrets: + HUAWEI_CLOUD_SWR_LOGIN_PWD: ${{ secrets.HUAWEI_CLOUD_SWR_LOGIN_PWD}}