v0.2.1 #13
Workflow file for this run
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
| # yaml-language-server: $schema=https://json.schemastore.org/github-workflow.json | |
| name: publish | |
| on: | |
| workflow_dispatch: # Allow running the workflow manually from the GitHub UI | |
| push: | |
| branches: | |
| - "master" # Run the workflow when pushing to the main branch | |
| pull_request: | |
| branches: | |
| - "*" # Run the workflow for all pull requests | |
| release: | |
| types: | |
| - published # Run the workflow when a new GitHub release is published | |
| env: | |
| DOTNET_SKIP_FIRST_TIME_EXPERIENCE: 1 | |
| DOTNET_NOLOGO: true | |
| NuGetDirectory: ${{ github.workspace}}/nuget | |
| defaults: | |
| run: | |
| shell: pwsh | |
| jobs: | |
| build_and_pack: | |
| name: Build & Test & Pack | |
| runs-on: ubuntu-latest # Use Linux runner | |
| permissions: | |
| contents: write # Needed for gh release create step to upload assets | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 # Get all history to allow automatic versioning using MinVer | |
| - name: Setup .NET 9 SDK | |
| uses: actions/setup-dotnet@v4 | |
| with: | |
| dotnet-version: '9.x' # Use the .NET 9 SDK | |
| - name: Restore dependencies | |
| run: dotnet restore TTSTextNormalization.sln # Restore for the whole solution | |
| - name: Build Library | |
| # Build the specific library project in Release config | |
| run: dotnet build TTSTextNormalization/TTSTextNormalization.csproj --configuration Release --no-restore | |
| # --- New Test Step --- | |
| - name: Run Unit Tests | |
| # Run tests for the entire solution in Release config | |
| # --no-build assumes the previous build step was successful | |
| run: dotnet test TTSTextNormalization.sln --configuration Release --verbosity normal | |
| - name: Pack Library | |
| # Pack the specific library project | |
| # Use Release config | |
| # Output packages to an 'artifacts' directory | |
| run: dotnet pack TTSTextNormalization/TTSTextNormalization.csproj --configuration Release --no-build --output ${{ env.NuGetDirectory }} | |
| - uses: actions/upload-artifact@v4 | |
| with: | |
| name: nuget | |
| if-no-files-found: error | |
| retention-days: 7 | |
| path: ${{ env.NuGetDirectory }}/*.nupkg | |
| deploy: | |
| # Publish only when creating a GitHub Release | |
| # https://docs.github.com/en/repositories/releasing-projects-on-github/managing-releases-in-a-repository | |
| # You can update this logic if you want to manage releases differently | |
| if: github.event_name == 'release' | |
| runs-on: ubuntu-latest | |
| needs: [build_and_pack] # Depends on the job that now includes testing | |
| steps: | |
| # Download the NuGet package created in the previous job | |
| - uses: actions/download-artifact@v4 | |
| with: | |
| name: nuget | |
| path: ${{ env.NuGetDirectory }} | |
| # Install the .NET SDK indicated in the global.json file | |
| - name: Setup .NET Core | |
| uses: actions/setup-dotnet@v4 | |
| # Publish all NuGet packages to NuGet.org | |
| # Use --skip-duplicate to prevent errors if a package with the same version already exists. | |
| # If you retry a failed workflow, already published packages will be skipped without error. | |
| - name: Publish NuGet package | |
| run: | | |
| foreach($file in (Get-ChildItem "${{ env.NuGetDirectory }}" -Recurse -Include *.nupkg)) { | |
| dotnet nuget push $file --api-key "${{ secrets.NUGET_APIKEY }}" --source https://api.nuget.org/v3/index.json --skip-duplicate | |
| } |