Upgrade conan2 (#1242) #9260
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: compiler-build | |
on: [push, pull_request] | |
concurrency: | |
group: compiler-build-${{ github.ref }} | |
cancel-in-progress: ${{ github.ref != 'refs/heads/master' && !startsWith(github.ref, 'refs/heads/release/') }} | |
env: | |
NUGET_CERT_REVOCATION_MODE: offline | |
NUGET_PACKAGES: ${{ github.workspace }}/.nuget/packages | |
jobs: | |
build-native: | |
name: build-native-${{matrix.config.name}} | |
runs-on: ${{matrix.config.os}} | |
strategy: | |
matrix: | |
config: | |
- {name: aarch64-macos, os: macos-14, buildType: Release} | |
- {name: x86_64-linux, os: ubuntu-22.04, buildType: Release} | |
# - {name: x86_64-windows, os: windows-2019, arch: x64, buildType: Release} | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: seanmiddleditch/gha-setup-ninja@master | |
- name: Set up build environment (Windows, Visual Studio) | |
uses: ilammy/msvc-dev-cmd@v1 | |
with: | |
arch: ${{matrix.config.arch}} | |
if: runner.os == 'Windows' | |
- name: Set up build environment (Macos) | |
run: | | |
brew install sunnycase/core/[email protected] | |
if: runner.os == 'Macos' | |
- name: Setup Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: '3.10' | |
- name: Configure Conan (Linux) | |
run: | | |
echo "CC=gcc-10" >> $GITHUB_ENV | |
echo "CXX=g++-10" >> $GITHUB_ENV | |
if: runner.os == 'Linux' | |
- name: Install Conan | |
shell: bash | |
run: | | |
pip install conan==2.6.0 | |
conan remote add sunnycase https://conan.sunnycase.moe --index 0 | |
- name: Configure | |
shell: bash | |
run: | | |
conan install . --build=missing -s build_type=${{matrix.config.buildType}} -pr:a=toolchains/${{matrix.config.name}}.profile.jinja -o "&:runtime=False" -o "&:python=True" -o "&:tests=False" | |
cmake --preset conan-release | |
- name: Build & Install | |
run: | | |
cmake --build build/${{matrix.config.buildType}} --config ${{matrix.config.buildType}} | |
cmake --install build/${{matrix.config.buildType}} --prefix install | |
- name: Upload nncase Native Build Artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: nncase-native-${{matrix.config.name}} | |
path: ${{github.workspace}}/install | |
if-no-files-found: error | |
build-compiler: | |
needs: [build-native] | |
name: build-${{matrix.config.name}} | |
runs-on: ${{matrix.config.os}} | |
strategy: | |
matrix: | |
dotnet-version: ['7.0'] | |
config: | |
- {name: aarch64-macos, os: macos-14, shell: bash, rid: osx-x64, buildType: Release} | |
- {name: x86_64-linux, os: ubuntu-22.04, shell: bash, rid: linux-x64, buildType: Release} | |
# - {name: x86_64-windows, os: windows-2019, shell: bash, rid: win-x64, buildType: Release} | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Setup .NET | |
uses: actions/setup-dotnet@v3 | |
with: | |
dotnet-version: '7.0.x' | |
- name: Set dotnet version | |
run: | | |
cd ${{github.workspace}} | |
sh set_dotnet_version.sh 7 | |
- name: Cache NuGet packages | |
uses: actions/cache@v3 | |
with: | |
path: ${{ github.workspace }}/.nuget/packages | |
key: ${{ runner.os }}-nuget-${{ hashFiles('**/packages.lock.json') }} | |
restore-keys: | | |
${{ runner.os }}-nuget- | |
- name: Install nncase native Artifact | |
uses: actions/download-artifact@v3 | |
with: | |
name: nncase-native-${{matrix.config.name}} | |
path: ${{github.workspace}}/install | |
- name: Set up build environment (Macos) | |
run: | | |
brew install sunnycase/core/[email protected] | |
if: runner.os == 'Macos' | |
- name: Build | |
run: | | |
dotnet restore -r ${{matrix.config.rid}} | |
dotnet build -c ${{matrix.config.buildType}} --no-restore | |
dotnet publish src/Nncase.Compiler -c ${{matrix.config.buildType}} --no-restore --sc false -r ${{matrix.config.rid}} | |
dotnet publish src/Nncase.Studio -c ${{matrix.config.buildType}} --no-restore --sc false -r ${{matrix.config.rid}} | |
- name: Set up Dotnet Test settings | |
uses: 1arp/[email protected] | |
with: | |
file: 'test.runsettings' | |
content: | | |
<?xml version="1.0" encoding="utf-8"?> | |
<!-- File name extension must be .runsettings --> | |
<RunSettings> | |
<RunConfiguration> | |
<EnvironmentVariables> | |
<LD_LIBRARY_PATH>${{github.workspace}}/install/lib</LD_LIBRARY_PATH> | |
<DYLD_LIBRARY_PATH>${{github.workspace}}/install/lib</DYLD_LIBRARY_PATH> | |
</EnvironmentVariables> | |
</RunConfiguration> | |
</RunSettings> | |
- name: Set up test environment (Windows) | |
shell: pwsh | |
run: | | |
echo "PATH=${env:PATH};${env:GITHUB_WORKSPACE}/install/bin" >> $env:GITHUB_ENV | |
if: runner.os == 'Windows' | |
- name: Dotnet Test | |
working-directory: ${{github.workspace}} | |
run: | | |
dotnet tool install --global dotnet-coverage | |
dotnet-coverage collect -s tools/dotnet_coverage.settings.xml -f cobertura -o coverage/unit.xml "dotnet test -c ${{matrix.config.buildType}} -s test.runsettings --no-build --verbosity normal" | |
dotnet-coverage merge -o coverage.unit.xml -f cobertura -r coverage/*.xml | |
- name: Upload Coverage | |
uses: actions/upload-artifact@v3 | |
if: matrix.config.name == 'x86_64-linux' | |
with: | |
name: nncase-coverage-unit | |
path: coverage.unit.xml | |
if-no-files-found: error | |
- name: Upload nncase Build Artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: nncase-${{matrix.config.name}} | |
path: ${{github.workspace}}/src/Nncase.Compiler/bin/${{matrix.config.buildType}}/net${{matrix.dotnet-version}}/${{matrix.config.rid}}/publish | |
if-no-files-found: error | |
test-compiler: | |
needs: [build-compiler] | |
name: test-${{matrix.config.name}} | |
runs-on: ${{matrix.config.os}} | |
strategy: | |
matrix: | |
dotnet-version: ['7.0'] | |
config: | |
# - {name: aarch64-macos, os: macos-14, shell: bash} | |
- {name: x86_64-linux, os: ubuntu-22.04, shell: bash} | |
# - {name: x86_64-windows, os: windows-2019, shell: bash} | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Setup .NET | |
uses: actions/setup-dotnet@v1 | |
with: | |
dotnet-version: '7.0.x' | |
- name: Install nncase native Artifact | |
uses: actions/download-artifact@v3 | |
with: | |
name: nncase-native-${{matrix.config.name}} | |
path: ${{github.workspace}}/install | |
- name: Install nncase | |
uses: actions/download-artifact@v3 | |
with: | |
name: nncase-${{matrix.config.name}} | |
path: ${{github.workspace}}/install | |
- name: Set up test environment (macOS) | |
run: | | |
brew install sunnycase/core/[email protected] | |
cp install/lib/*.dylib install/ | |
echo "PYTHONPATH=$GITHUB_WORKSPACE/install/lib:$GITHUB_WORKSPACE/install/python:$GITHUB_WORKSPACE/tests" >> $GITHUB_ENV | |
if: runner.os == 'macOS' | |
- name: Set up test environment (Linux) | |
run: | | |
cp install/lib/*.so install/ | |
echo "PYTHONPATH=$GITHUB_WORKSPACE/install/lib:$GITHUB_WORKSPACE/install/python:$GITHUB_WORKSPACE/tests" >> $GITHUB_ENV | |
if: runner.os == 'Linux' | |
- name: Set up test environment (Windows) | |
shell: pwsh | |
run: | | |
Copy-Item install/bin/*.dll install/ | |
echo "PYTHONPATH=${env:GITHUB_WORKSPACE}/install/lib;${env:GITHUB_WORKSPACE}/install/python;${env:GITHUB_WORKSPACE}/tests" >> $env:GITHUB_ENV | |
echo "PATH=${env:PATH};${env:GITHUB_WORKSPACE}/install/bin" >> $env:GITHUB_ENV | |
if: runner.os == 'Windows' | |
- name: Setup Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: '3.10' | |
cache: 'pip' | |
cache-dependency-path: '**/requirements.test.txt' | |
- name: Install Python Packages | |
run: | |
# python -m pip install --upgrade "pip<24.0" #pip24 not available on 3.8 | |
pip install -r requirements.test.txt | |
- name: Create Test Environment | |
run: mkdir test_results | |
- name: Start tmate session for debugging | |
uses: mxschmitt/action-tmate@v3 | |
continue-on-error: true | |
# 例如,如果编译失败,可以通过SSH进行调试 | |
- run: echo "Run after tmate session" | |
- name: Test | |
working-directory: ${{github.workspace}} | |
shell: bash | |
env: | |
NNCASE_COMPILER: ${{github.workspace}}/install/Nncase.Compiler.dll | |
run: | | |
dotnet tool install --global dotnet-coverage | |
dotnet-coverage collect -s tools/dotnet_coverage.settings.xml -f cobertura -o coverage/onnx_basic.xml pytest tests/importer/onnx_/basic/ --doctest-modules --junitxml=test_results/onnx_basic.xml | |
dotnet-coverage collect -s tools/dotnet_coverage.settings.xml -f cobertura -o coverage/onnx_combine.xml pytest tests/importer/onnx_/combine/ --doctest-modules --junitxml=test_results/onnx_combine.xml | |
dotnet-coverage collect -s tools/dotnet_coverage.settings.xml -f cobertura -o coverage/tflite_basic.xml pytest tests/importer/tflite_/basic/ --doctest-modules --junitxml=test_results/tflite_basic.xml | |
dotnet-coverage collect -s tools/dotnet_coverage.settings.xml -f cobertura -o coverage/tflite_combine.xml pytest tests/importer/tflite_/combine/ --doctest-modules --junitxml=test_results/tflite_combine.xml | |
dotnet-coverage collect -s tools/dotnet_coverage.settings.xml -f cobertura -o coverage/tflite_model.xml pytest tests/importer/tflite_/model/ --doctest-modules --junitxml=test_results/tflite_model.xml | |
dotnet-coverage collect -s tools/dotnet_coverage.settings.xml -f cobertura -o coverage/ncnn_basic.xml pytest tests/importer/ncnn_/basic/ --doctest-modules --junitxml=test_results/ncnn_basic.xml | |
dotnet-coverage merge -o coverage.integration.xml -f cobertura -r coverage/*.xml | |
- name: Upload Coverage | |
uses: actions/upload-artifact@v3 | |
if: matrix.config.name == 'x86_64-linux' | |
with: | |
name: nncase-coverage-integration | |
path: coverage.integration.xml | |
if-no-files-found: error | |
- name: Publish Test Results | |
uses: EnricoMi/publish-unit-test-result-action@v2 | |
if: always() && matrix.config.name == 'x86_64-linux' | |
with: | |
files: test_results/*.xml | |
upload-coverage: | |
needs: [test-compiler] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Setup .NET | |
uses: actions/setup-dotnet@v3 | |
with: | |
dotnet-version: '7.0.x' | |
- name: Set dotnet version | |
run: | | |
cd ${{github.workspace}} | |
sh set_dotnet_version.sh 7 | |
- name: Download Unit Test Coverage | |
uses: actions/download-artifact@v3 | |
with: | |
name: nncase-coverage-unit | |
path: ${{github.workspace}}/coverage | |
- name: Download Integration Test Coverage | |
uses: actions/download-artifact@v3 | |
with: | |
name: nncase-coverage-integration | |
path: ${{github.workspace}}/coverage | |
- name: Upload Codecov (Unit) | |
uses: codecov/codecov-action@v3 | |
with: | |
files: coverage/coverage.unit.xml | |
flags: unit | |
- name: Upload Codecov (Integration) | |
uses: codecov/codecov-action@v3 | |
with: | |
files: coverage/coverage.integration.xml | |
flags: integration | |
- name: Generate Coverage Report | |
run: | | |
dotnet tool install --global dotnet-coverage | |
dotnet tool install -g dotnet-reportgenerator-globaltool | |
dotnet-coverage merge -o coverage.xml -f cobertura -r coverage/*.xml | |
reportgenerator -reports:coverage.xml -targetdir:"coveragereport" -reporttypes:Html | |
- name: Upload Coverage Report | |
uses: actions/upload-artifact@v3 | |
with: | |
name: nncase-coverage-report | |
path: coveragereport | |
if-no-files-found: error |