Release package #512
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
| # This workflow is triggered by new releases and on a daily schedule. | |
| # It builds, unit tests, live tests and publishes the Open AI NuGet package. | |
| # For daily runs, the package is published to the GitHub package registry. | |
| # For releases, the package is published to the NuGet package registry. | |
| name: Release package | |
| on: | |
| release: | |
| types: [published] | |
| schedule: | |
| # run every day at 00:00 | |
| - cron: '0 0 * * *' | |
| permissions: | |
| contents: write | |
| packages: write | |
| jobs: | |
| build: | |
| name: Build | |
| runs-on: ubuntu-latest | |
| environment: Live Testing | |
| env: | |
| version_suffix_args: ${{ github.event_name == 'schedule' && format('/p:VersionSuffix="alpha.{0}"', github.run_number) || '' }} | |
| steps: | |
| - name: Setup .NET | |
| uses: actions/setup-dotnet@v3 | |
| with: | |
| dotnet-version: '9.x' | |
| - name: Setup .NET 8 | |
| uses: actions/setup-dotnet@v3 | |
| with: | |
| dotnet-version: '8.x' | |
| - name: Checkout code | |
| uses: actions/checkout@v2 | |
| - name: Restore tools | |
| run: dotnet tool restore --add-source https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-net/nuget/v3/index.json | |
| # Pack the client NuGet package and include URL back to the repository and release tag | |
| - name: Build and pack | |
| run: dotnet pack | |
| --configuration Release | |
| --output "${{ github.workspace }}/artifacts/packages" | |
| /p:PackageProjectUrl="${{ github.server_url }}/${{ github.repository }}/tree/${{ github.event.release.tag_name }}" | |
| /p:PackageReleaseNotes="${{ github.server_url }}/${{ github.repository }}/blob/${{ github.event.release.tag_name }}/CHANGELOG.md" | |
| ${{ env.version_suffix_args }} | |
| - name: Run unit tests | |
| run: dotnet test | |
| --configuration Release | |
| --filter="TestCategory=Smoke&TestCategory!=Manual" | |
| --logger "trx;LogFileName=${{ github.workspace }}/artifacts/test-results/smoke.trx" | |
| ${{ env.version_suffix_args }} | |
| - name: Run recorded tests | |
| run: dotnet test ./tests/OpenAI.Tests.csproj | |
| --configuration Release | |
| --filter="(TestCategory=Chat|TestCategory=Embeddings|TestCategory=Responses)&TestCategory!=MPFD" | |
| --logger "trx;LogFilePrefix=live" | |
| --results-directory ${{ github.workspace }}/artifacts/test-results | |
| ${{ env.version_suffix_args }} | |
| env: | |
| OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} | |
| - name: Upload artifact | |
| uses: actions/upload-artifact@v4 | |
| if: ${{ !cancelled() }} | |
| with: | |
| name: build-artifacts | |
| path: ${{ github.workspace }}/artifacts | |
| sign: | |
| needs: build | |
| runs-on: windows-latest # Code signing must run on a Windows agent for Authenticode signing (dll/exe) | |
| environment: release # Needed for OIDC subject for releases triggered on release being created. | |
| permissions: | |
| id-token: write # Required for requesting the JWT | |
| steps: | |
| - name: Download build artifacts | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: build-artifacts | |
| path: ${{ github.workspace }}/build-artifacts | |
| - name: Setup .NET | |
| uses: actions/setup-dotnet@v3 | |
| with: | |
| dotnet-version: '9.x' | |
| - name: Install Sign CLI tool | |
| run: dotnet tool install --tool-path . --prerelease sign | |
| - name: 'Az CLI login' | |
| uses: azure/login@v2 | |
| with: | |
| client-id: 80125de0-6f58-4f16-bd05-b2fa621d36a5 | |
| tenant-id: 16076fdc-fcc1-4a15-b1ca-32c9a255900e | |
| allow-no-subscriptions: true | |
| - name: Sign artifacts | |
| shell: pwsh | |
| run: > | |
| ./sign code azure-key-vault | |
| **/*.nupkg | |
| --base-directory "${{ github.workspace }}/build-artifacts/packages" | |
| --publisher-name "OpenAI" | |
| --description "OpenAI library for .NET" | |
| --description-url "https://github.com/openai/openai-dotnet" | |
| --azure-credential-type "azure-cli" | |
| --azure-key-vault-url "https://sc-openaisdk.vault.azure.net/" | |
| --azure-key-vault-certificate "OpenAISDKSCCert" | |
| - name: Upload signed artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: build-artifacts-signed | |
| path: ${{ github.workspace }}/build-artifacts | |
| deploy: | |
| name: Publish package | |
| needs: sign | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v2 | |
| - name: Download build artifacts | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: build-artifacts-signed | |
| path: ${{ github.workspace }}/build-artifacts | |
| - name: Upload release asset | |
| if: github.event_name == 'release' | |
| run: gh release upload ${{ github.event.release.tag_name }} | |
| ${{ github.workspace }}/build-artifacts/packages/*.*nupkg | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Update GitHub release notes to point to the changelog | |
| if: github.event_name == 'release' | |
| run: | | |
| gh release edit "${{ github.event.release.tag_name }}" \ | |
| --notes "See full changelog: ${{ github.server_url }}/${{ github.repository }}/blob/${{ github.event.release.tag_name }}/CHANGELOG.md" | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Setup .NET | |
| uses: actions/setup-dotnet@v3 | |
| with: | |
| dotnet-version: '9.x' | |
| - name: NuGet authenticate | |
| run: dotnet nuget add source | |
| "https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json" | |
| --name "github" | |
| --username ${{ github.actor }} | |
| --password ${{ secrets.GITHUB_TOKEN }} | |
| --store-password-in-clear-text | |
| - name: Publish package to local feed | |
| run: dotnet nuget push | |
| ${{ github.workspace }}/build-artifacts/packages/*.nupkg | |
| --source "github" | |
| --api-key ${{ secrets.GITHUB_TOKEN }} | |
| --skip-duplicate | |
| - name: Publish package to nuget.org | |
| if: github.event_name == 'release' | |
| run: dotnet nuget push | |
| ${{ github.workspace }}/build-artifacts/packages/*.nupkg | |
| --source https://api.nuget.org/v3/index.json | |
| --api-key ${{ secrets.NUGET_API_KEY }} | |
| --skip-duplicate |