name: Main Pipeline on: push: branches: [ main ] pull_request: branches: [ main ] env: VERSION: 3.0.0.4 jobs: build: name: Test ${{ matrix.project }} (${{ matrix.os }}) runs-on: ${{ matrix.os }} env: NEXUS_API_KEY: ${{ secrets.NEXUS_API_KEY }} NEXUS_LOGIN: ${{ secrets.NEXUS_LOGIN }} VECTOR_PLEXUS: ${{ secrets.VECTOR_PLEXUS }} LOVERS_LAB: ${{ secrets.LOVERS_LAB }} strategy: matrix: os: [ubuntu-latest, windows-latest, macos-latest] steps: - uses: actions/checkout@v2 - name: Set Permissions if: runner.os != 'Windows' run: chmod -R +x Wabbajack.FileExtractor/Extractors - name: Setup .NET Core SDK 6.0.x uses: actions/setup-dotnet@v1 with: dotnet-version: '6.0.x' include-prerelease: true - name: Build if: runner.os != 'Windows' shell: bash run: find Wabbajack.* -maxdepth 0 -type d ! -name "Wabbajack.App.Wpf" -exec dotnet build --configuration Release {} \; - name: Build if: runner.os == 'Windows' shell: bash run: find Wabbajack.* -maxdepth 0 -type d -exec dotnet build --configuration Release {} \; - name: Test shell: bash run: find Wabbajack.*.Test -maxdepth 0 -type d ! -name "Wabbajack.App.Wpf" -exec dotnet test --filter "Category!=FlakeyNetwork" {} \; #- name: Upload Test Folder on Failure # if: ${{ failure() }} # uses: actions/upload-artifact@v2 # with: # name: Failed Files # path: ./ publish: name: Publish Projects runs-on: ubuntu-latest if: ${{ github.event_name == 'push' }} strategy: matrix: project: - Wabbajack.Common - Wabbajack.Compiler - Wabbajack.Compression.BSA - Wabbajack.Compression.Zip - Wabbajack.Downloaders.Bethesda - Wabbajack.Downloaders.Dispatcher - Wabbajack.Downloaders.GameFile - Wabbajack.Downloaders.GoogleDrive - Wabbajack.Downloaders.Http - Wabbajack.Downloaders.Interfaces - Wabbajack.Downloaders.IPS4OAuth2Downloader - Wabbajack.Downloaders.Manual - Wabbajack.Downloaders.MediaFire - Wabbajack.Downloaders.Mega - Wabbajack.Downloaders.ModDB - Wabbajack.Downloaders.Nexus - Wabbajack.Downloaders.WabbajackCDN - Wabbajack.DTOs - Wabbajack.FileExtractor - Wabbajack.Hashing.PHash - Wabbajack.Hashing.xxHash64 - Wabbajack.Installer - Wabbajack.IO.Async - Wabbajack.Networking.BethesdaNet - Wabbajack.Networking.Discord - Wabbajack.Networking.GitHub - Wabbajack.Networking.Http - Wabbajack.Networking.Http.Interfaces - Wabbajack.Networking.NexusApi - Wabbajack.Networking.Steam - Wabbajack.Networking.WabbajackClientApi - Wabbajack.Paths - Wabbajack.Paths.IO - Wabbajack.RateLimiter - Wabbajack.Services.OSIntegrated - Wabbajack.VFS needs: build steps: - uses: actions/checkout@v2 - name: Setup .NET Core SDK 6.0.x uses: actions/setup-dotnet@v1 with: dotnet-version: '6.0.x' include-prerelease: true - name: Restore run: dotnet restore ${{ matrix.project }}/${{ matrix.project }}.csproj - name: Build run: dotnet build ${{ matrix.project }}/${{ matrix.project }}.csproj --no-restore --configuration Release - name: Pack run: dotnet pack ${{ matrix.project }}/${{ matrix.project }}.csproj --no-build --configuration Release --include-symbols -p:SymbolPackageFormat=snupkg -o . - name: Publish run: dotnet nuget push *.nupkg --api-key ${{secrets.NUGET_KEY}} --source "https://api.nuget.org/v3/index.json" --skip-duplicate