From f7dc7d9b86ad58c99ec8c24921c283ac7052fa07 Mon Sep 17 00:00:00 2001 From: wangxiyuan Date: Sun, 1 Feb 2026 20:06:22 +0800 Subject: [PATCH] [CI] support build wheel and docker image by workflow (#6453) Make image and wheel build CI job work with workflow_dispatch way - vLLM version: v0.14.1 - vLLM main: https://github.com/vllm-project/vllm/commit/dc917cceb877dfd13f98c538c4c96158047d98bd Signed-off-by: wangxiyuan --- .github/workflows/_schedule_image_build.yaml | 9 + .../schedule_image_build_and_push.yaml | 7 +- .../schedule_release_code_and_wheel.yml | 165 ++++++++++-------- 3 files changed, 111 insertions(+), 70 deletions(-) diff --git a/.github/workflows/_schedule_image_build.yaml b/.github/workflows/_schedule_image_build.yaml index 3f7207b4..cfa6517a 100644 --- a/.github/workflows/_schedule_image_build.yaml +++ b/.github/workflows/_schedule_image_build.yaml @@ -43,10 +43,18 @@ jobs: tag: arm64 steps: - uses: actions/checkout@v6 + if: ${{ github.event_name != 'workflow_dispatch' }} with: fetch-depth: 0 persist-credentials: false + - uses: actions/checkout@v6 + if: ${{ github.event_name == 'workflow_dispatch' }} + with: + fetch-depth: 0 + persist-credentials: false + ref: ${{ inputs.workflow_dispatch_tag }} + - name: Free up disk space uses: jlumbroso/free-disk-space@54081f138730dfa15788a46383842cd2f914a1be # v1.3.1 with: @@ -148,6 +156,7 @@ jobs: tags: | type=pep440,pattern={{raw}},suffix=${{ env.SUFFIX }} type=schedule,pattern=main,suffix=${{ env.SUFFIX }} + type=raw,value=${{ inputs.workflow_dispatch_tag }},enable=${{ github.event_name == 'workflow_dispatch' }},suffix=${{ env.SUFFIX }} flavor: latest=false diff --git a/.github/workflows/schedule_image_build_and_push.yaml b/.github/workflows/schedule_image_build_and_push.yaml index a085b790..3e0198db 100644 --- a/.github/workflows/schedule_image_build_and_push.yaml +++ b/.github/workflows/schedule_image_build_and_push.yaml @@ -21,9 +21,14 @@ on: inputs: tag: description: 'Docker tag for build results' - type: string default: main required: true + type: choice + options: + - main + - v0.15.0rc1 + - v0.14.0rc1 + - v0.13.0rc2 jobs: image_build: diff --git a/.github/workflows/schedule_release_code_and_wheel.yml b/.github/workflows/schedule_release_code_and_wheel.yml index 2ad3c851..6eeb2932 100644 --- a/.github/workflows/schedule_release_code_and_wheel.yml +++ b/.github/workflows/schedule_release_code_and_wheel.yml @@ -25,6 +25,17 @@ on: tags: - 'v*' workflow_dispatch: + inputs: + tag: + description: 'Docker tag for build results' + default: main + required: true + type: choice + options: + - main + - v0.15.0rc1 + - v0.14.0rc1 + - v0.13.0rc2 jobs: build_and_release_code: @@ -34,12 +45,20 @@ jobs: matrix: python-version: ["3.11"] steps: - - uses: actions/checkout@0c366fd6a839edf440554fa01a7085ccba70ac98 # v4.2.2 + - name: checkout vllm-ascend + if: ${{ github.event_name != 'workflow_dispatch' }} + uses: actions/checkout@v6 + + - name: checkout vllm-ascend ${{ inputs.tag }} + if: ${{ github.event_name == 'workflow_dispatch' }} + uses: actions/checkout@v6 + with: + ref: ${{ inputs.tag }} - name: Print run: | lscpu - + - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 with: @@ -76,78 +95,86 @@ jobs: runs-on: ${{ matrix.os }} steps: - - uses: actions/checkout@0c366fd6a839edf440554fa01a7085ccba70ac98 # v4.2.2 + - name: checkout vllm-ascend + if: ${{ github.event_name != 'workflow_dispatch' }} + uses: actions/checkout@v6 - - name: Free up disk space - uses: jlumbroso/free-disk-space@54081f138730dfa15788a46383842cd2f914a1be # v1.3.1 - with: - tool-cache: true - docker-images: false + - name: checkout vllm-ascend ${{ inputs.tag }} + if: ${{ github.event_name == 'workflow_dispatch' }} + uses: actions/checkout@v6 + with: + ref: ${{ inputs.tag }} - - name: Build wheel - run: | - ls - docker build -f ./.github/Dockerfile.buildwheel \ - --build-arg PY_VERSION=${{ matrix.python-version }} \ - -t wheel:v1 . - docker run --rm \ - -u $(id -u):$(id -g) \ - -v $(pwd):/outpwd \ - wheel:v1 \ - bash -c "cp -r /workspace/vllm-ascend/dist /outpwd" - ls dist + - name: Free up disk space + uses: jlumbroso/free-disk-space@54081f138730dfa15788a46383842cd2f914a1be # v1.3.1 + with: + tool-cache: true + docker-images: false - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 - with: - python-version: ${{ matrix.python-version }} + - name: Build wheel + run: | + ls + docker build -f ./.github/Dockerfile.buildwheel \ + --build-arg PY_VERSION=${{ matrix.python-version }} \ + -t wheel:v1 . + docker run --rm \ + -u "$(id -u):$(id -g)" \ + -v "$(pwd):/outpwd" \ + wheel:v1 \ + bash -c "cp -r /workspace/vllm-ascend/dist /outpwd" + ls dist - - name: Repair wheels with auditwheel - run: | - python3 -m pip install auditwheel - python3 -m pip install patchelf - mkdir -p dist/repaired - for whl in dist/*.whl; do - auditwheel repair "$whl" -w dist/repaired/ \ - --exclude libplatform.so \ - --exclude libregister.so \ - --exclude libge_common_base.so \ - --exclude libc10.so \ - --exclude libc_sec.so \ - --exclude libnnopbase.so \ - --exclude libprofapi.so \ - --exclude libgraph_base.so \ - --exclude libgraph.so \ - --exclude libexe_graph.so \ - --exclude "libascend*.so" \ - --exclude "libtorch*.so" \ - --exclude "libopapi.so" \ - --exclude "liberror_manager.so" \ - --exclude "libruntime.so" \ - --exclude "libmmpa.so" + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 + with: + python-version: ${{ matrix.python-version }} - done - rm -f dist/*.whl - mv dist/repaired/*.whl dist/ - rmdir dist/repaired - ls dist + - name: Repair wheels with auditwheel + run: | + python3 -m pip install auditwheel + python3 -m pip install patchelf + mkdir -p dist/repaired + for whl in dist/*.whl; do + auditwheel repair "$whl" -w dist/repaired/ \ + --exclude libplatform.so \ + --exclude libregister.so \ + --exclude libge_common_base.so \ + --exclude libc10.so \ + --exclude libc_sec.so \ + --exclude libnnopbase.so \ + --exclude libprofapi.so \ + --exclude libgraph_base.so \ + --exclude libgraph.so \ + --exclude libexe_graph.so \ + --exclude "libascend*.so" \ + --exclude "libtorch*.so" \ + --exclude "libopapi.so" \ + --exclude "liberror_manager.so" \ + --exclude "libruntime.so" \ + --exclude "libmmpa.so" - - name: Verify automatic platform tags - run: | - cd dist - for wheel in *.whl; do - echo "verification file: $wheel" - auditwheel show "$wheel" - done + done + rm -f dist/*.whl + mv dist/repaired/*.whl dist/ + rmdir dist/repaired + ls dist - - name: Archive wheel - uses: actions/upload-artifact@v6 - with: - name: vllm-ascend-${{ matrix.os }}-py${{ matrix.python-version }}-wheel - path: dist/* + - name: Verify automatic platform tags + run: | + cd dist + for wheel in *.whl; do + echo "verification file: $wheel" + auditwheel show "$wheel" + done - - name: Release - if: ${{ github.event_name == 'push' }} - run: | - python3 -m pip install twine - python3 -m twine upload --verbose dist/* -u __token__ -p ${{ secrets.PYPI_TOKEN }} + - name: Archive wheel + uses: actions/upload-artifact@v6 + with: + name: vllm-ascend-${{ matrix.os }}-py${{ matrix.python-version }}-wheel + path: dist/* + + - name: Release + if: ${{ github.event_name == 'push' || github.event_name == 'workflow_dispatch' }} + run: | + python3 -m pip install twine + python3 -m twine upload --verbose dist/* -u __token__ -p ${{ secrets.PYPI_TOKEN }}