diff --git a/.github/workflows/android-native-build.yaml b/.github/workflows/android-native-build.yaml index 28e98056..46b1e4ea 100644 --- a/.github/workflows/android-native-build.yaml +++ b/.github/workflows/android-native-build.yaml @@ -3,14 +3,13 @@ name: Android Native build on: workflow_dispatch: + workflow_call: jobs: build: runs-on: ubuntu-20.04 - permissions: - contents: write steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/cpu-build-and-test.yml b/.github/workflows/cpu-build-and-test.yml new file mode 100644 index 00000000..f303185f --- /dev/null +++ b/.github/workflows/cpu-build-and-test.yml @@ -0,0 +1,36 @@ +# This workflow will build a .NET project +# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-net + +name: CI (Native + dotnet) + +on: + push: + branches: [ "main" ] + pull_request: + branches: [ "main" ] + +jobs: + android: + uses: ./android-native-build.yml + + macos: + uses: ./macos-native-build.yml + + windows: + uses: ./windows-native-build.yml + + wasm: + uses: ./wasm-native-build.yml + + linux: + uses: ./linux-native-build.yml + + dotnet-build: + needs: + - android + - macos + - windows + - wasm + - linux + uses: ./dotnet.yml + diff --git a/.github/workflows/dotnet.yml b/.github/workflows/dotnet.yml index c0e9dae0..2b2f0ed9 100755 --- a/.github/workflows/dotnet.yml +++ b/.github/workflows/dotnet.yml @@ -4,21 +4,16 @@ name: CI on: - push: - branches: [ "main" ] - pull_request: - branches: [ "main" ] + workflow_call: jobs: - build: + dotnet-windows: - runs-on: ${{ matrix.os }} - strategy: - matrix: - os: [ubuntu-latest, windows-latest] + runs-on: windows-latest steps: - uses: actions/checkout@v3 + - name: Setup .NET uses: actions/setup-dotnet@v3 with: @@ -28,17 +23,15 @@ jobs: id: download-artifact uses: actions/download-artifact@v4 with: - name: wasm-build + merge-multiple: true - name: Install Java - if: runner.os == 'Windows' uses: actions/setup-java@v2 with: distribution: 'microsoft' java-version: '11' - name: Install .NET Workloads - if: runner.os == 'Windows' run: | dotnet workload install android --ignore-failed-sources dotnet workload install ios --ignore-failed-sources @@ -47,8 +40,36 @@ jobs: - name: Restore dependencies run: dotnet restore ./Whisper.net.sln + - name: Build - run: dotnet build ./Whisper.net.sln --no-restore -warnaserror + run: dotnet build ./Whisper.net.sln --no-restore -warnaserror + - name: Test run: | dotnet test ./Whisper.net.sln --no-build + + dotnet-linux: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + + - name: Setup .NET + uses: actions/setup-dotnet@v3 + with: + dotnet-version: 8.0.x + + - name: Download Artifacts + id: download-artifact + uses: actions/download-artifact@v4 + with: + merge-multiple: true + - name: Restore dependencies + run: dotnet restore ./Whisper.net.sln + + - name: Build + run: dotnet build ./Whisper.net.sln --no-restore -warnaserror + + - name: Test + run: | + dotnet test ./Whisper.net.sln --no-build diff --git a/.github/workflows/linux-cuda-native-build.yml b/.github/workflows/linux-cuda-native-build.yml index 16170c36..8e18e17a 100644 --- a/.github/workflows/linux-cuda-native-build.yml +++ b/.github/workflows/linux-cuda-native-build.yml @@ -8,8 +8,6 @@ jobs: build: runs-on: ubuntu-20.04 - permissions: - contents: write steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/linux-native-build.yml b/.github/workflows/linux-native-build.yml index a9f0736b..c155fcab 100644 --- a/.github/workflows/linux-native-build.yml +++ b/.github/workflows/linux-native-build.yml @@ -2,14 +2,13 @@ name: Linux Native build on: workflow_dispatch: + workflow_call: jobs: build: runs-on: ubuntu-20.04 - permissions: - contents: write steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/linux-openvino-build.yml b/.github/workflows/linux-openvino-build.yml index 2afdd71f..9d18960d 100644 --- a/.github/workflows/linux-openvino-build.yml +++ b/.github/workflows/linux-openvino-build.yml @@ -7,8 +7,6 @@ jobs: build: runs-on: ubuntu-20.04 - permissions: - contents: write steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/macos-native-build.yaml b/.github/workflows/macos-native-build.yaml index c5a46cfc..206cb8d0 100644 --- a/.github/workflows/macos-native-build.yaml +++ b/.github/workflows/macos-native-build.yaml @@ -3,13 +3,12 @@ name: MacOs Native build on: workflow_dispatch: + workflow_call: jobs: intel-build: runs-on: macos-13 - permissions: - contents: write steps: - uses: actions/checkout@v4 @@ -32,7 +31,6 @@ jobs: Whisper.net.Run*/*.metal arm-build: - needs: intel-build runs-on: macos-14 permissions: contents: write diff --git a/.github/workflows/wasm-native-build.yaml b/.github/workflows/wasm-native-build.yaml index d3ebd595..522c781a 100644 --- a/.github/workflows/wasm-native-build.yaml +++ b/.github/workflows/wasm-native-build.yaml @@ -3,13 +3,12 @@ name: Wasm Native build on: workflow_dispatch: + workflow_call: jobs: build: runs-on: ubuntu-20.04 - permissions: - contents: write steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/windows-arm-native-build.yml b/.github/workflows/windows-arm-native-build.yml index dabcb0f9..91a1ea18 100644 --- a/.github/workflows/windows-arm-native-build.yml +++ b/.github/workflows/windows-arm-native-build.yml @@ -8,8 +8,6 @@ jobs: build: runs-on: windows-latest - permissions: - contents: write steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/windows-cuda-native-build.yml b/.github/workflows/windows-cuda-native-build.yml index 91df4657..d6c064bf 100644 --- a/.github/workflows/windows-cuda-native-build.yml +++ b/.github/workflows/windows-cuda-native-build.yml @@ -8,8 +8,6 @@ jobs: build: runs-on: windows-2019 - permissions: - contents: write steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/windows-native-build.yml b/.github/workflows/windows-native-build.yml index 47cf6de6..6e134177 100644 --- a/.github/workflows/windows-native-build.yml +++ b/.github/workflows/windows-native-build.yml @@ -2,14 +2,13 @@ name: Windows native build on: workflow_dispatch: + workflow_call: jobs: - build: + intel-build: runs-on: windows-2019 - permissions: - contents: write steps: - uses: actions/checkout@v4 @@ -32,3 +31,30 @@ jobs: with: name: windows-build path: 'Whisper.net.Run*/win-*/*' + + arm-build: + + runs-on: windows-latest + permissions: + contents: write + + steps: + - uses: actions/checkout@v4 + with: + submodules: true + ref: ${{ github.head_ref }} + + - name: Add msbuild to PATH + uses: microsoft/setup-msbuild@v1 + + - name: Run Build + run: | + Import-Module ./windows-scripts.ps1 + BuildWindowsArm + shell: pwsh + + - name: Upload Windows Build Artifacts + uses: actions/upload-artifact@v3 + with: + name: windows-arm-build + path: 'Whisper.net.Run*/win-*/*' diff --git a/.github/workflows/windows-openvino-build.yml b/.github/workflows/windows-openvino-build.yml index e33d0385..0ec58309 100644 --- a/.github/workflows/windows-openvino-build.yml +++ b/.github/workflows/windows-openvino-build.yml @@ -7,8 +7,6 @@ jobs: build: runs-on: windows-2022 - permissions: - contents: write steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/windows-vulkan-build.yml b/.github/workflows/windows-vulkan-build.yml index ef024b7a..9359d7ae 100644 --- a/.github/workflows/windows-vulkan-build.yml +++ b/.github/workflows/windows-vulkan-build.yml @@ -7,8 +7,6 @@ jobs: build: runs-on: windows-2022 - permissions: - contents: write steps: - uses: actions/checkout@v4 diff --git a/Whisper.net.sln b/Whisper.net.sln index 19faef10..f100c388 100644 --- a/Whisper.net.sln +++ b/Whisper.net.sln @@ -19,6 +19,7 @@ EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "github", "github", "{5C865649-4AED-4BBF-A7CA-BD68D21EF48F}" ProjectSection(SolutionItems) = preProject .github\workflows\android-native-build.yaml = .github\workflows\android-native-build.yaml + .github\workflows\cpu-build-and-test.yml = .github\workflows\cpu-build-and-test.yml .github\workflows\dotnet.yml = .github\workflows\dotnet.yml .github\workflows\linux-cuda-native-build.yml = .github\workflows\linux-cuda-native-build.yml .github\workflows\linux-native-build.yml = .github\workflows\linux-native-build.yml