From 762d8dd90bfc73a0a6c434531b0d5dc0bc0f5a11 Mon Sep 17 00:00:00 2001
From: yanxing <zhaode.wzd@alibaba-inc.com>
Date: Thu, 9 Jan 2025 14:35:12 +0800
Subject: [PATCH] [CI:Feature] Add internal pymm release script.

---
 .github/workflows/internal_pymnn_release.yml | 108 +++++++++++++++++++
 1 file changed, 108 insertions(+)
 create mode 100644 .github/workflows/internal_pymnn_release.yml

diff --git a/.github/workflows/internal_pymnn_release.yml b/.github/workflows/internal_pymnn_release.yml
new file mode 100644
index 000000000..34e47dc59
--- /dev/null
+++ b/.github/workflows/internal_pymnn_release.yml
@@ -0,0 +1,108 @@
+name: internal_pymnn_release
+on:
+  push:
+    paths:
+      - '.github/workflows/internal_pymnn_release.yml'
+    tags:
+      - '*'
+  pull_request:
+    branches:
+      - 'master'
+  workflow_dispatch:
+
+jobs:
+  build_wheels:
+    name: ${{ matrix.arch }} ${{ matrix.build }} on ${{ matrix.os }}
+    runs-on: ${{ matrix.os }}
+    strategy:
+      fail-fast: false
+      matrix:
+        include:
+          - { os: ubuntu-latest,    arch: x86_64,     build: 'cp*-manylinux*' }
+          - { os: ubuntu-latest,    arch: aarch64,    build: 'cp*-manylinux*' }
+          - { os: windows-latest,   arch: AMD64,      build: 'cp*'          }
+          - { os: macos-13,         arch: x86_64,     build: 'cp*'          }
+          - { os: macos-14,         arch: arm64,      build: 'cp*'          }
+
+    steps:
+    - uses: actions/checkout@v3
+      with:
+        submodules: true
+
+    - name: using msvc
+      if: matrix.os == 'windows-latest'
+      uses: ilammy/msvc-dev-cmd@v1
+
+    - name: using private schema patch
+      if: matrix.os != 'windows-latest'
+      env:
+        PATCH_CONTENT: ${{ secrets.PRIVATE_SCHEMA_PATCH }}
+      run: |
+        patch_file=$(mktemp schema_patch.XXXXXX.diff)
+        echo "$PATCH_CONTENT" > $patch_file
+        git apply $patch_file
+        rm $patch_file
+        git status
+        cd schema
+        ls -lh
+        ./generate.sh
+        cd ..
+        git status
+
+    - name: using private schema patch
+      if: matrix.os == 'windows-latest'
+      env:
+        PATCH_CONTENT: ${{ secrets.PRIVATE_SCHEMA_PATCH }}
+      run: |
+        $patchFile = New-TemporaryFile
+        $PATCH_CONTENT | Out-File -FilePath $patchFile -Encoding UTF8
+        git apply $patchFile
+        Remove-Item $patchFile
+        git status
+        Push-Location schema
+        Get-ChildItem -Name
+        ./generate.ps1
+        Set-Location ..
+        git status
+
+    - uses: actions/setup-python@v4
+      with:
+        python-version: '3.12'
+
+    - name: set up qemu
+      if: matrix.os == 'ubuntu-latest' && matrix.arch == 'aarch64'
+      uses: docker/setup-qemu-action@v3
+      with:
+        platforms: all
+
+    - name: install pipx
+      if: matrix.os == 'macos-14'
+      run: python -m pip install pipx
+
+    - name: Build wheels
+      uses: pypa/cibuildwheel@v2.16.5
+      env:
+        CIBW_ARCHS_MACOS: ${{ matrix.arch }}
+        CIBW_ARCHS_LINUX: ${{ matrix.arch }}
+        CIBW_ARCHS_WINDOWS: ${{ matrix.arch }}
+        CIBW_BUILD: ${{ matrix.build }}
+        CIBW_BUILD_VERBOSITY: 1
+        CIBW_ENVIRONMENT: CMAKE_BUILD_PARALLEL_LEVEL=2
+      with:
+        package-dir: pymnn/pip_package
+        output-dir: wheelhouse
+        config-file: "{package}/pyproject.toml"
+
+    - name: Show files
+      run: ls -lh wheelhouse
+      shell: bash
+
+    - name: Verify clean directory
+      run: git diff --exit-code
+      shell: bash
+
+    - name: Upload wheels
+      uses: actions/upload-artifact@v4
+      with:
+        name: artifact-${{ matrix.os }}-${{ matrix.arch }}
+        path: wheelhouse/*.whl
\ No newline at end of file