Merge pull request #18 from Sendspin/task/fix-async-void #43
This file contains hidden or 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: Build | |
| on: | |
| push: | |
| branches: [main, dev] | |
| tags: ['v*.*.*'] | |
| pull_request: | |
| branches: [main, dev] | |
| jobs: | |
| build: | |
| runs-on: ubuntu-latest | |
| outputs: | |
| version: ${{ steps.version.outputs.VERSION }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Setup .NET | |
| uses: actions/setup-dotnet@v4 | |
| with: | |
| dotnet-version: | | |
| 8.0.x | |
| 10.0.x | |
| - name: Determine version | |
| id: version | |
| run: | | |
| if [[ "${{ github.ref }}" == refs/tags/v* ]]; then | |
| # Release: version from tag (v7.3.0 → 7.3.0) | |
| VERSION="${GITHUB_REF_NAME#v}" | |
| elif [ "${{ github.ref }}" == "refs/heads/dev" ]; then | |
| # Dev: pre-release suffix | |
| BASE_VERSION=$(grep -oP '<Version>\K[^<]+' src/Sendspin.SDK/Sendspin.SDK.csproj) | |
| SHORT_SHA=${GITHUB_SHA::7} | |
| VERSION="${BASE_VERSION}-dev.${SHORT_SHA}" | |
| else | |
| # Main branch push (no tag): use csproj version | |
| VERSION=$(grep -oP '<Version>\K[^<]+' src/Sendspin.SDK/Sendspin.SDK.csproj) | |
| fi | |
| echo "VERSION=$VERSION" >> $GITHUB_OUTPUT | |
| echo "📦 Version: $VERSION" | |
| - name: Restore | |
| run: dotnet restore | |
| - name: Build | |
| run: dotnet build -c Release --no-restore -p:Version=${{ steps.version.outputs.VERSION }} | |
| - name: Test | |
| run: dotnet test -c Release --no-build --verbosity normal | |
| - name: Pack | |
| if: github.event_name == 'push' | |
| run: dotnet pack src/Sendspin.SDK/Sendspin.SDK.csproj -c Release --no-build -o artifacts -p:Version=${{ steps.version.outputs.VERSION }} | |
| - name: Upload NuGet package | |
| if: github.event_name == 'push' | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: nuget-package | |
| path: | | |
| artifacts/*.nupkg | |
| artifacts/*.snupkg | |
| publish: | |
| needs: build | |
| if: startsWith(github.ref, 'refs/tags/v') | |
| runs-on: ubuntu-latest | |
| environment: production | |
| permissions: | |
| id-token: write | |
| packages: write | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-tags: true | |
| - name: Setup .NET | |
| uses: actions/setup-dotnet@v4 | |
| with: | |
| dotnet-version: 10.0.x | |
| - name: Download artifacts | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: nuget-package | |
| path: artifacts | |
| - name: NuGet login | |
| uses: NuGet/login@v1 | |
| id: login | |
| with: | |
| user: ${{ secrets.NUGET_USER }} | |
| - name: Push to NuGet | |
| run: dotnet nuget push "artifacts/*.nupkg" --api-key ${{ steps.login.outputs.NUGET_API_KEY }} --source https://api.nuget.org/v3/index.json --skip-duplicate | |
| - name: Push to GitHub Packages | |
| run: dotnet nuget push "artifacts/*.nupkg" --api-key ${{ secrets.GITHUB_TOKEN }} --source https://nuget.pkg.github.com/Sendspin/index.json --skip-duplicate | |
| - name: Extract tag message | |
| id: tag-message | |
| run: | | |
| # Get the annotated tag message (empty for lightweight tags) | |
| TAG_MSG=$(git tag -l --format='%(contents)' "${{ github.ref_name }}" 2>/dev/null || true) | |
| if [ -n "$TAG_MSG" ]; then | |
| # Write to file to preserve newlines | |
| echo "$TAG_MSG" > /tmp/release-notes.md | |
| echo "has_notes=true" >> $GITHUB_OUTPUT | |
| else | |
| echo "has_notes=false" >> $GITHUB_OUTPUT | |
| fi | |
| - name: Create GitHub Release (with notes) | |
| if: steps.tag-message.outputs.has_notes == 'true' | |
| uses: softprops/action-gh-release@v2 | |
| with: | |
| body_path: /tmp/release-notes.md | |
| files: | | |
| artifacts/*.nupkg | |
| artifacts/*.snupkg | |
| - name: Create GitHub Release (auto-generated) | |
| if: steps.tag-message.outputs.has_notes != 'true' | |
| uses: softprops/action-gh-release@v2 | |
| with: | |
| generate_release_notes: true | |
| files: | | |
| artifacts/*.nupkg | |
| artifacts/*.snupkg |