Publish OAuth2 Package #1
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: Publish OAuth2 Package | |
| on: | |
| workflow_dispatch: | |
| inputs: | |
| cab_id: | |
| description: "CAB id for the change/release" | |
| required: true | |
| type: string | |
| jobs: | |
| build: | |
| runs-on: ubuntu-latest | |
| environment: prod | |
| outputs: | |
| release_number: ${{steps.get_latest_release_number.outputs.release_tag}} | |
| permissions: | |
| contents: write | |
| pull-requests: write | |
| steps: | |
| - name: checkout dotnet repo | |
| uses: actions/checkout@v4 | |
| with: | |
| repository: XeroAPI/Xero-NetStandard | |
| path: Xero-NetStandard | |
| - name: Setup .NET | |
| uses: actions/setup-dotnet@v4 | |
| with: | |
| dotnet-version: 8.0.x | |
| - name: Restore dependencies | |
| run: dotnet restore | |
| working-directory: Xero-NetStandard | |
| - name: Fetch Latest release number | |
| id: get_latest_release_number | |
| run: | | |
| latest_version=$(gh release view --json tagName --jq '.tagName') | |
| echo "Latest release version is - $latest_version" | |
| echo "::set-output name=release_tag::$latest_version" | |
| working-directory: Xero-NetStandard | |
| env: | |
| GH_TOKEN: ${{secrets.GITHUB_TOKEN}} | |
| - name: Build | |
| run: dotnet build --no-restore | |
| working-directory: Xero-NetStandard | |
| - name: Create OAuth2 Package for Nuget.org | |
| run: dotnet pack | |
| working-directory: Xero-NetStandard | |
| - name: Publish OAuth2 Package to Nuget.org | |
| run: dotnet nuget push ./Xero.NetStandard.OAuth2/bin/Release/Xero.NetStandard.OAuth2.${{steps.get_latest_release_number.outputs.release_tag}}.nupkg --api-key ${{ secrets.NUGET_APIKEY }} --source https://api.nuget.org/v3/index.json | |
| working-directory: Xero-NetStandard | |
| notify-codegen-repo: | |
| needs: build | |
| if: always() | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: write | |
| pull-requests: write | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| with: | |
| repository: XeroAPI/Xero-NetStandard | |
| path: Xero-NetStandard | |
| - name: Install octokit dependencies | |
| run: npm i | |
| working-directory: Xero-NetStandard/.github/octokit | |
| - name: Get github app access token | |
| id: get_access_token | |
| env: | |
| GITHUB_APP_ID: ${{ secrets.XERO_CODEGEN_BOT_APPLICATION_ID }} | |
| GITHUB_APP_PRIVATE_KEY: ${{ secrets.XERO_CODEGEN_BOT_APPLICATION_KEY }} | |
| uses: actions/github-script@v7 | |
| with: | |
| result-encoding: string | |
| script: | | |
| const { getAccessToken } = await import('${{ github.workspace }}/Xero-NetStandard/.github/octokit/index.js') | |
| const token = await getAccessToken() | |
| return token | |
| - name: Notify codegen repo | |
| run: | | |
| curl -X POST -H "Authorization: token ${{ steps.get_access_token.outputs.result }}" \ | |
| -H "Accept: application/vnd.github.v3+json" \ | |
| -H "Content-Type: application/json" \ | |
| https://api.github.com/repos/xero-internal/xeroapi-sdk-codegen/actions/workflows/notify-sdk-publish.yml/dispatches \ | |
| -d '{ | |
| "ref": "master", | |
| "inputs": { | |
| "commit": "${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }}", | |
| "status": "${{needs.build.result}}", | |
| "deployer": "xero-codegen-bot", | |
| "url": "${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}", | |
| "environment": "prod", | |
| "sdk_type": "dotnet", | |
| "cab_key": "${{ github.event.inputs.cab_id }}" | |
| } | |
| }' | |
| notify-slack-on-success: | |
| runs-on: ubuntu-latest | |
| needs: build | |
| if: success() | |
| permissions: | |
| contents: read | |
| steps: | |
| - name: Checkout Xero-NetStandard repo | |
| uses: actions/checkout@v4 | |
| with: | |
| repository: XeroAPI/Xero-NetStandard | |
| path: Xero-NetStandard | |
| - name: Send slack notification on success | |
| uses: ./Xero-NetStandard/.github/actions/notify-slack | |
| with: | |
| heading_text: "OAuth2 Package publish job has succeeded !" | |
| alert_type: "thumbsup" | |
| job_status: "Success" | |
| XERO_SLACK_WEBHOOK_URL: ${{secrets.XERO_SLACK_WEBHOOK_URL}} | |
| job_url: "https://github.com/${{github.repository}}/actions/runs/${{github.run_id}}" | |
| button_type: "primary" | |
| package_version: ${{needs.build.outputs.release_number}} | |
| repo_link: ${{github.server_url}}/${{github.repository}} | |
| notify-slack-on-failure: | |
| runs-on: ubuntu-latest | |
| needs: build | |
| if: failure() | |
| permissions: | |
| contents: read | |
| steps: | |
| - name: Checkout Xero-NetStandard repo | |
| uses: actions/checkout@v4 | |
| with: | |
| repository: XeroAPI/Xero-NetStandard | |
| path: Xero-NetStandard | |
| - name: Send slack notification on failure | |
| uses: ./Xero-NetStandard/.github/actions/notify-slack | |
| with: | |
| heading_text: "OAuth2 Package publish job has failed !" | |
| alert_type: "alert" | |
| job_status: "Failed" | |
| XERO_SLACK_WEBHOOK_URL: ${{secrets.XERO_SLACK_WEBHOOK_URL}} | |
| job_url: "https://github.com/${{github.repository}}/actions/runs/${{github.run_id}}" | |
| button_type: "danger" | |
| package_version: ${{needs.build.outputs.release_number}} | |
| repo_link: ${{github.server_url}}/${{github.repository}} |