# This workflow will install Python dependencies, run tests and lint with a variety of Python versions # For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions name: Nightly Release on: schedule: - cron: '0 5 * * *' workflow_dispatch: jobs: build: runs-on: a100 strategy: fail-fast: false matrix: python-version: ["3.10"] steps: - uses: actions/checkout@v3 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v3 with: python-version: ${{ matrix.python-version }} - name: Setup pip cache uses: actions/cache@v3 with: path: ~/.cache/pip key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }} restore-keys: | ${{ runner.os }}-pip- - name: Compute version run: | package_version="$(printf '%(%Y%m%d)T.${{ github.run_number }}')" tag_name="${package_version}" echo "package_version=${package_version}" >> $GITHUB_ENV echo "tag_name=${tag_name}" >> $GITHUB_ENV - name: Create Release id: create_release uses: actions/create-release@v1 env: GITHUB_TOKEN: ${{ secrets.NODAI_INVOCATION_TOKEN }} with: tag_name: ${{ env.tag_name }} release_name: nod.ai SHARK ${{ env.tag_name }} body: | Automatic snapshot release of nod.ai SHARK. draft: true prerelease: false - name: Install dependencies run: | python -m pip install --upgrade pip python -m pip install flake8 pytest toml if [ -f requirements.txt ]; then pip install -r requirements.txt --extra-index-url https://download.pytorch.org/whl/nightly/cpu -f https://github.com/llvm/torch-mlir/releases -f https://github.com/nod-ai/SHARK-Runtime/releases; fi - name: Lint with flake8 run: | # stop the build if there are Python syntax errors or undefined names flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics --exclude shark.venv,lit.cfg.py # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics --exclude shark.venv,lit.cfg.py - name: Build and validate the IREE package run: | cd $GITHUB_WORKSPACE USE_IREE=1 VENV_DIR=iree.venv ./setup_venv.sh source iree.venv/bin/activate package_version="$(printf '%(%Y%m%d)T.${{ github.run_number }}')" SHARK_PACKAGE_VERSION=${package_version} \ pip wheel -v -w wheelhouse . --pre -f https://download.pytorch.org/whl/nightly/torch -f https://github.com/llvm/torch-mlir/releases -f https://github.com/iree-org/iree/releases # Install the built wheel pip install ./wheelhouse/nodai* # Validate the Models /bin/bash "$GITHUB_WORKSPACE/build_tools/populate_sharktank_ci.sh" pytest -k 'cpu' --ignore=benchmarks/tests/test_hf_benchmark.py --ignore=benchmarks/tests/test_benchmark.py --ignore=shark/tests/test_shark_importer.py --ignore=tank/tf/ | tail -n 1 | tee -a pytest_results.txt pytest -k 'gpu' --ignore=benchmarks/tests/test_hf_benchmark.py --ignore=benchmarks/tests/test_benchmark.py --ignore=shark/tests/test_shark_importer.py --ignore=tank/tf/ | tail -n 1 | tee -a pytest_results.txt pytest -k 'vulkan' --ignore=benchmarks/tests/test_hf_benchmark.py --ignore=benchmarks/tests/test_benchmark.py --ignore=shark/tests/test_shark_importer.py --ignore=tank/tf/ | tail -n 1 | tee -a pytest_results.txt rm -rf ./wheelhouse/nodai* - name: Build and validate the SHARK Runtime package run: | cd $GITHUB_WORKSPACE ./setup_venv.sh source shark.venv/bin/activate package_version="$(printf '%(%Y%m%d)T.${{ github.run_number }}')" SHARK_PACKAGE_VERSION=${package_version} \ pip wheel -v -w wheelhouse . --pre -f https://download.pytorch.org/whl/nightly/torch -f https://github.com/llvm/torch-mlir/releases -f https://github.com/nod-ai/SHARK-Runtime/releases # Install the built wheel pip install ./wheelhouse/nodai* # Validate the Models pytest -k 'cpu' --ignore=benchmarks/tests/test_hf_benchmark.py --ignore=benchmarks/tests/test_benchmark.py --ignore=shark/tests/test_shark_importer.py --ignore=tank/tf/ | tail -n 1 | tee -a pytest_results.txt pytest -k 'gpu' --ignore=benchmarks/tests/test_hf_benchmark.py --ignore=benchmarks/tests/test_benchmark.py --ignore=shark/tests/test_shark_importer.py --ignore=tank/tf/ | tail -n 1 | tee -a pytest_results.txt pytest -k 'vulkan' --ignore=benchmarks/tests/test_hf_benchmark.py --ignore=benchmarks/tests/test_benchmark.py --ignore=shark/tests/test_shark_importer.py --ignore=tank/tf/ | tail -n 1 | tee -a pytest_results.txt if !(grep -Fxq " failed" pytest_results.txt) then export SHA=$(git log -1 --format='%h') gsutil -m cp -r $GITHUB_WORKSPACE/gen_shark_tank/* gs://shark_tank/$SHA gsutil -m cp -r gs://shark_tank/$SHA/* gs://shark_tank/latest/ fi rm pytest_results.txt rm -rf ./wheelhouse/nodai* - name: Upload Release Assets id: upload-release-assets uses: dwenegar/upload-release-assets@v1 env: GITHUB_TOKEN: ${{ secrets.NODAI_INVOCATION_TOKEN }} with: release_id: ${{ steps.create_release.outputs.id }} assets_path: ./wheelhouse/nodai_*.whl - name: Publish Release id: publish_release uses: eregon/publish-release@v1 env: GITHUB_TOKEN: ${{ secrets.NODAI_INVOCATION_TOKEN }} with: release_id: ${{ steps.create_release.outputs.id }}