build_wheels_linux_arm.yml 4.1 KB
Newer Older
1 2 3 4 5 6
name: Build PYPI wheels for opencv-python on Linux ARM

on:
  pull_request:
    branches:
      - master
A
Andrey Senyaev 已提交
7 8 9 10
    paths-ignore:
      - '.github/workflows/build_wheels_linux.yml'
      - '.github/workflows/build_wheels_windows*'
      - '.github/workflows/build_wheels_macos*'
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
  release:
    types: [published, edited]


jobs:
  build_arm:
    runs-on: ${{ matrix.os }}
    defaults:
      run:
        shell: bash

    strategy:
      fail-fast: false
      matrix:
        os: [ARM64]
        python-version: [3.6, 3.7, 3.8, 3.9]
        platform: [x64]
        with_contrib: [0, 1]
        without_gui: [0, 1]
        build_sdist: [0]

    env:
      ACTIONS_ALLOW_UNSECURE_COMMANDS: true
      REPO_DIR: .
      BUILD_COMMIT: master
      PROJECT_SPEC: opencv-python
      MB_PYTHON_VERSION: ${{ matrix.python-version }}
      TRAVIS_PYTHON_VERSION: ${{ matrix.python-version }}
      PLAT: aarch64
      MB_ML_VER: 2014
41
      NP_TEST_DEP: numpy==1.19.4
42 43 44 45 46 47
      TRAVIS_BUILD_DIR: ${{ github.workspace }}
      CONFIG_PATH: travis_config.sh
      DOCKER_IMAGE: quay.io/skvark/manylinux2014_${PLAT}
      DOCKER_TEST_IMAGE: multibuild/xenial_arm64v8
      USE_CCACHE: 0
      UNICODE_WIDTH: 32
48
      SDIST: ${{ matrix.build_sdist || 0 }}
49 50 51 52 53 54 55 56 57 58 59
      ENABLE_HEADLESS: ${{ matrix.without_gui }}
      ENABLE_CONTRIB: ${{ matrix.with_contrib }}

    steps:
    - name: Cleanup
      if: always()
      uses: AutoModality/action-clean@v1

    - name: Checkout
      uses: actions/checkout@v2
      with:
60
        submodules: false
61 62 63 64 65 66 67 68
        fetch-depth: 0

    - name: Setup Environment variables
      run: |
        if [ "ARM64" == "${{ matrix.os }}" ]; then echo "PLAT=aarch64" >> $GITHUB_ENV; fi
        echo "BUILD_DEPENDS=$(echo $NP_BUILD_DEP)" >> $GITHUB_ENV;
        echo "TEST_DEPENDS=$(echo $NP_TEST_DEP)" >> $GITHUB_ENV;

69 70 71 72 73
    - name: build
      run: source scripts/build.sh

    - name: install and test
      run: source scripts/install.sh
74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132

    - name: saving artifacts
      uses: actions/upload-artifact@v2
      with:
        name: wheels
        path: wheelhouse/opencv*.whl

  test_release_opencv_python:
    if: github.event_name == 'release' && github.event.release.prerelease
    needs: [build_arm]
    runs-on: ubuntu-latest
    environment: test-opencv-python-release
    defaults:
      run:
        shell: bash
    steps:
      - uses: actions/download-artifact@v2
        with:
          name: wheels
          path: wheelhouse/

      - name: Upload all wheels
        run: |
          python -m pip install twine
          python -m twine upload --repository testpypi -u ${{ secrets.PYPI_USERNAME }} -p ${{ secrets.PYPI_PASSWORD }} --skip-existing wheelhouse/opencv_*

  release_opencv_python:
    if: github.event_name == 'release' && !github.event.release.prerelease
    needs: [build_arm]
    runs-on: ubuntu-latest
    environment: opencv-python-release
    defaults:
      run:
        shell: bash
    steps:
      - uses: actions/download-artifact@v2
        with:
          name: wheels
          path: wheelhouse/

      - name: Upload wheels for opencv_python
        run: |
          python -m pip install twine
          python -m twine upload -u ${{ secrets.OPENCV_PYTHON_USERNAME }} -p ${{ secrets.OPENCV_PYTHON_PASSWORD }} --skip-existing wheelhouse/opencv_python-*

      - name: Upload wheels for opencv_contrib_python
        run: |
          python -m pip install twine
          python -m twine upload -u ${{ secrets.OPENCV_CONTRIB_PYTHON_USERNAME }} -p ${{ secrets.OPENCV_CONTRIB_PYTHON_PASSWORD }} --skip-existing wheelhouse/opencv_contrib_python-*

      - name: Upload wheels for opencv_python_headless
        run: |
          python -m pip install twine
          python -m twine upload -u ${{ secrets.OPENCV_PYTHON_HEADLESS_USERNAME }} -p ${{ secrets.OPENCV_PYTHON_HEADLESS_PASSWORD }} --skip-existing wheelhouse/opencv_python_headless-*

      - name: Upload wheels for opencv_contrib_python_headless
        run: |
          python -m pip install twine
          python -m twine upload -u ${{ secrets.OPENCV_CONTRIB_PYTHON_HEADLESS_USERNAME }} -p ${{ secrets.OPENCV_CONTRIB_PYTHON_HEADLESS_PASSWORD }} --skip-existing wheelhouse/opencv_contrib_python_headless-*