name: .NET on: push: paths: - "**.cs" - "**.csproj" - "**.sln" - ".github/workflows/dotnet.yml" pull_request: paths: - "**.cs" - "**.csproj" - "**.sln" - ".github/workflows/dotnet.yml" jobs: build-and-test: name: Build and Test runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: [ubuntu-latest, macos-latest, windows-latest] steps: - name: Checkout uses: actions/checkout@v4 - name: Setup .NET uses: actions/setup-dotnet@v4 - name: Install dependencies run: dotnet restore - name: Test run: dotnet test --no-restore publish-preview: name: Publish Preview NuGet to GitHub Packages needs: build-and-test if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }} runs-on: ubuntu-latest permissions: packages: write contents: read steps: - name: Checkout uses: actions/checkout@v4 with: fetch-depth: 0 - name: Setup .NET uses: actions/setup-dotnet@v4 with: source-url: https://nuget.pkg.github.com/locusts-r-us/index.json env: NUGET_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Install dependencies run: dotnet restore - name: Build the package run: dotnet build --configuration Release --no-restore -p:SymbolPackageFormat=symbols.nupkg # GitHub Packages does not support snupkg - name: Publish the package run: dotnet nuget push src/bin/Release/*.symbols.nupkg publish-release: name: Publish Release NuGet to NuGet.org needs: build-and-test # Only run on this on proper semver (vX.Y.Z) tags if: ${{ github.ref_type == 'tag' && startsWith(github.ref_name, 'v') }} runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 with: fetch-depth: 0 - name: Setup .NET uses: actions/setup-dotnet@v4 env: NUGET_AUTH_TOKEN: ${{ secrets.NUGET_TOKEN }} - name: Install dependencies run: dotnet restore - name: Build the package run: dotnet build --configuration Release --no-restore -p:SymbolPackageFormat=snupkg - name: Publish the package run: | dotnet nuget push src/bin/Release/*.nupkg -s https://api.nuget.org/v3/index.json -k ${{ secrets.NUGET_TOKEN }}