name: CI on: push: branches: [master, try-import] pull_request: jobs: check-commit: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2.3.1 with: fetch-depth: 0 - uses: actions/setup-node@v2.1.0 - name: Check commit if: ${{ github.event.pull_request }} run: | yarn add @commitlint/config-conventional @commitlint/cli yarn commitlint --from ${{ github.event.pull_request.base.sha }} --to HEAD check-format: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2.3.1 with: fetch-depth: 0 - name: Set up Python if: ${{ github.event.pull_request }} uses: actions/setup-python@v2 with: python-version: 3.6 - name: Cache pip if: ${{ github.event.pull_request }} uses: actions/cache@v2 with: # This path is specific to Ubuntu path: ~/.cache/pip # Look to see if there is a cache hit for the corresponding requirements file key: ${{ runner.os }}-pip-${{ hashFiles('requires.txt') }} restore-keys: | ${{ runner.os }}-pip- ${{ runner.os }}- - name: Install dependencies if: ${{ github.event.pull_request }} run: | python -m pip install --upgrade pip - name: Check format if: ${{ github.event.pull_request }} run: | ./ci/run_format_check.sh cpu-test: runs-on: self-hosted needs: [check-commit, check-format] container: image: localhost:5000/megengine-ci:latest steps: - name: Checkout MegEngine uses: actions/checkout@v2 - name: Checkout submodules run: | ./third_party/prepare.sh ./third_party/install-mkl.sh - name: Build MegEngine run: ./ci/cmake.sh cpu - name: Python test run: | rm -rf imperative/python/megenginelite/ cp -rf lite/pylite/megenginelite/ imperative/python/ mkdir -p imperative/python/megenginelite/libs cp /tmp/build/cpu/lite/liblite_shared_whl.so imperative/python/megenginelite/libs/liblite_shared_whl.so ./ci/run_python_test.sh cpu - name: C++ test run: ./ci/run_cpp_test.sh cpu gpu-test: runs-on: self-hosted needs: [check-commit, check-format] container: image: localhost:5000/megengine-ci:latest volumes: - /usr/local/cuda-10.1-libs:/usr/local/cuda-10.1-libs options: --gpus all --shm-size 1g env: NCCL_LAUNCH_MODE: PARALLEL steps: - name: Checkout MegEngine uses: actions/checkout@v2 - name: Checkout submodules run: | ./third_party/prepare.sh ./third_party/install-mkl.sh - name: Build MegEngine run: ./ci/cmake.sh cuda - name: Python test run: | rm -rf imperative/python/megenginelite/ cp -rf lite/pylite/megenginelite/ imperative/python/ mkdir -p imperative/python/megenginelite/libs cp /tmp/build/cuda/lite/liblite_shared_whl.so imperative/python/megenginelite/libs/liblite_shared_whl.so ./ci/run_python_test.sh cuda - name: C++ test run: ./ci/run_cpp_test.sh cuda auto-merge: if: ${{ github.ref == 'refs/heads/try-import' }} runs-on: ubuntu-latest needs: [cpu-test, gpu-test] steps: - name: Checkout MegEngine uses: actions/checkout@v2 with: fetch-depth: '0' - name: Merge with master run: | git config user.name "megvii-mge" git config user.email "megengine@megvii.com" git fetch origin master git checkout -b master origin/master git rebase try-import git push send-dingding: runs-on: ubuntu-latest needs: [cpu-test, gpu-test] if: ${{ always() && github.ref == 'refs/heads/try-import' && (needs.cpu-test.result == 'failure' || needs.gpu-test.result == 'failure' ) }} steps: - name: run uses: zcong1993/actions-ding@master with: dingToken: ${{ secrets.DINGDING_TOKEN }} body: | { "msgtype": "link", "link": { "text": "Workflow ${{ github.run_id }} Failed", "title": "Action Alert", "picUrl": "", "messageUrl": "https://github.com/MegEngine/MegEngine/actions/runs/${{ github.run_id }}" } }