diff --git a/.github/actions/get-prerelease/action.yml b/.github/actions/get-prerelease/action.yml new file mode 100644 index 00000000..ce7acdc3 --- /dev/null +++ b/.github/actions/get-prerelease/action.yml @@ -0,0 +1,30 @@ +name: Return a boolean indicating if the version contains prerelease identifiers + +# +# Returns a simple true/false boolean indicating whether the version indicates it's a prerelease or not. +# +# TODO: Remove once the common repo is public. +# + +inputs: + version: + required: true + +outputs: + prerelease: + value: ${{ steps.get_prerelease.outputs.PRERELEASE }} + +runs: + using: composite + + steps: + - id: get_prerelease + shell: bash + run: | + if [[ "${VERSION}" == *"beta"* || "${VERSION}" == *"alpha"* ]]; then + echo "PRERELEASE=true" >> $GITHUB_OUTPUT + else + echo "PRERELEASE=false" >> $GITHUB_OUTPUT + fi + env: + VERSION: ${{ inputs.version }} diff --git a/.github/actions/get-release-notes/action.yml b/.github/actions/get-release-notes/action.yml new file mode 100644 index 00000000..45de354c --- /dev/null +++ b/.github/actions/get-release-notes/action.yml @@ -0,0 +1,42 @@ +name: Return the release notes extracted from the PR body + +# +# Returns the release notes from the content of a pull request linked to a release branch. It expects the branch name to be in the format release/vX.Y.Z, release/X.Y.Z, release/vX.Y.Z-beta.N. etc. +# +# TODO: Remove once the common repo is public. +# +inputs: + version: + required: true + repo_name: + required: false + repo_owner: + required: true + token: + required: true + +outputs: + release-notes: + value: ${{ steps.get_release_notes.outputs.RELEASE_NOTES }} + +runs: + using: composite + + steps: + - uses: actions/github-script@v7 + id: get_release_notes + with: + result-encoding: string + script: | + const { data: pulls } = await github.rest.pulls.list({ + owner: process.env.REPO_OWNER, + repo: process.env.REPO_NAME, + state: 'all', + head: `${process.env.REPO_OWNER}:release/${process.env.VERSION}`, + }); + core.setOutput('RELEASE_NOTES', pulls[0].body); + env: + GITHUB_TOKEN: ${{ inputs.token }} + REPO_OWNER: ${{ inputs.repo_owner }} + REPO_NAME: ${{ inputs.repo_name }} + VERSION: ${{ inputs.version }} diff --git a/.github/actions/get-version/action.yml b/.github/actions/get-version/action.yml new file mode 100644 index 00000000..e3a281d5 --- /dev/null +++ b/.github/actions/get-version/action.yml @@ -0,0 +1,26 @@ +name: Return the version extracted from the branch name + +# +# Returns the version from the .version file. +# +# TODO: Remove once the common repo is public. +# + +inputs: + working-directory: + default: './' + +outputs: + version: + value: ${{ steps.get_version.outputs.VERSION }} + +runs: + using: composite + + steps: + - id: get_version + shell: bash + working-directory: ${{ inputs.working-directory }} + run: | + VERSION=$(head -1 .version) + echo "VERSION=${VERSION}" >> $GITHUB_OUTPUT diff --git a/.github/actions/nuget-publish/action.yml b/.github/actions/nuget-publish/action.yml new file mode 100644 index 00000000..a1e4a8b5 --- /dev/null +++ b/.github/actions/nuget-publish/action.yml @@ -0,0 +1,36 @@ +name: Publish release to NuGet + +inputs: + dotnet-version: + required: true + nuget-token: + required: true + project-path: + required: true + nuget-directory: + required: true + nuspec-file: + required: true + +runs: + using: composite + steps: + - name: Setup .NET + uses: actions/setup-dotnet@v3 + with: + dotnet-version: ${{ inputs.dotnet-version }} + + - name: Setup NuGet + uses: nuget/setup-nuget@v1 + + - name: Create NuGet packages + shell: pwsh + run: nuget pack ${{ inputs.nuspec-file }} -OutputDirectory ${{ inputs.nuget-directory }} + + - name: Publish NuGet packages + shell: pwsh + run: | + foreach($file in (Get-ChildItem "${{ inputs.nuget-directory }}" -Recurse -Include *.nupkg)) { + nuget push $file -ApiKey "${{ inputs.nuget-token }}" -Source https://api.nuget.org/v3/index.json -SkipDuplicate -NonInteractive + } + \ No newline at end of file diff --git a/.github/actions/nuget-release/action.yml b/.github/actions/nuget-release/action.yml new file mode 100644 index 00000000..977ccca4 --- /dev/null +++ b/.github/actions/nuget-release/action.yml @@ -0,0 +1,73 @@ +name: Create NuGet and GitHub Release + + +### TODO: Replace instances of './.github/actions/' w/ `auth0/dx-sdk-actions` and append `@latest` after the common `dx-sdk-actions` repo is made public. +### DO NOT replace nuget-publish, but keep the local version as it is slightly different as opposed to the one in auth0/dx-sdk-actions to support the mono repository structure. + +inputs: + dotnet-version: + required: true + nuget-token: + required: true + github-token: + required: true + project-path: + required: true + nuget-directory: + required: true + nuspec-file: + required: true + tag-prefix: + default: '' + +runs: + using: composite + steps: + # Get the version from the branch name + - id: get_version + uses: ./.github/actions/get-version + with: + working-directory: ${{ inputs.project-path }} + + # Get the prerelease flag from the branch name + - id: get_prerelease + uses: ./.github/actions/get-prerelease + with: + version: ${{ steps.get_version.outputs.version }} + + # Get the release notes + - id: get_release_notes + uses: ./.github/actions/get-release-notes + with: + token: ${{ inputs.github-token }} + version: ${{ inputs.tag-prefix }}${{ steps.get_version.outputs.version }} + repo_owner: ${{ github.repository_owner }} + repo_name: ${{ github.event.repository.name }} + + # Check if the tag already exists + - id: tag_exists + uses: ./.github/actions/tag-exists + with: + tag: ${{ inputs.tag-prefix }}${{ steps.get_version.outputs.version }} + token: ${{ inputs.github-token }} + + # Publish the release to our package manager + - uses: ./.github/actions/nuget-publish + if: steps.tag_exists.outputs.exists == 'false' + with: + dotnet-version: ${{ inputs.dotnet-version }} + project-path: ${{ inputs.project-path }} + nuget-token: ${{ inputs.nuget-token }} + nuget-directory: ${{ inputs.nuget-directory }} + nuspec-file: ${{ inputs.nuspec-file }} + + # Create a release for the tag + - uses: ./.github/actions/release-create + if: steps.tag_exists.outputs.exists == 'false' + with: + token: ${{ inputs.github-token }} + name: ${{ steps.get_version.outputs.version }} + body: ${{ steps.get_release_notes.outputs.release-notes }} + tag: ${{ inputs.tag-prefix }}${{ steps.get_version.outputs.version }} + commit: ${{ github.sha }} + prerelease: ${{ steps.get_prerelease.outputs.prerelease }} \ No newline at end of file diff --git a/.github/actions/release-create/action.yml b/.github/actions/release-create/action.yml new file mode 100644 index 00000000..6a2bf804 --- /dev/null +++ b/.github/actions/release-create/action.yml @@ -0,0 +1,47 @@ +name: Create a GitHub release + +# +# Creates a GitHub release with the given version. +# +# TODO: Remove once the common repo is public. +# + +inputs: + token: + required: true + files: + required: false + name: + required: true + body: + required: true + tag: + required: true + commit: + required: true + draft: + default: false + required: false + prerelease: + default: false + required: false + fail_on_unmatched_files: + default: true + required: false + +runs: + using: composite + + steps: + - uses: softprops/action-gh-release@de2c0eb89ae2a093876385947365aca7b0e5f844 + with: + body: ${{ inputs.body }} + name: ${{ inputs.name }} + tag_name: ${{ inputs.tag }} + target_commitish: ${{ inputs.commit }} + draft: ${{ inputs.draft }} + prerelease: ${{ inputs.prerelease }} + fail_on_unmatched_files: ${{ inputs.fail_on_unmatched_files }} + files: ${{ inputs.files }} + env: + GITHUB_TOKEN: ${{ inputs.token }} diff --git a/.github/actions/tag-exists/action.yml b/.github/actions/tag-exists/action.yml new file mode 100644 index 00000000..b5fbdb73 --- /dev/null +++ b/.github/actions/tag-exists/action.yml @@ -0,0 +1,36 @@ +name: Return a boolean indicating if a tag already exists for the repository + +# +# Returns a simple true/false boolean indicating whether the tag exists or not. +# +# TODO: Remove once the common repo is public. +# + +inputs: + token: + required: true + tag: + required: true + +outputs: + exists: + description: 'Whether the tag exists or not' + value: ${{ steps.tag-exists.outputs.EXISTS }} + +runs: + using: composite + + steps: + - id: tag-exists + shell: bash + run: | + GET_API_URL="https://api.github.com/repos/${GITHUB_REPOSITORY}/git/ref/tags/${TAG_NAME}" + http_status_code=$(curl -LI $GET_API_URL -o /dev/null -w '%{http_code}\n' -s -H "Authorization: token ${GITHUB_TOKEN}") + if [ "$http_status_code" -ne "404" ] ; then + echo "EXISTS=true" >> $GITHUB_OUTPUT + else + echo "EXISTS=false" >> $GITHUB_OUTPUT + fi + env: + TAG_NAME: ${{ inputs.tag }} + GITHUB_TOKEN: ${{ inputs.token }} diff --git a/.github/workflows/nuget-release.yml b/.github/workflows/nuget-release.yml new file mode 100644 index 00000000..6343a97d --- /dev/null +++ b/.github/workflows/nuget-release.yml @@ -0,0 +1,50 @@ +name: Create NuGet and GitHub Release + +on: + workflow_call: + inputs: + dotnet-version: + default: '6.0.x' + type: string + project-path: + required: true + type: string + tag-prefix: + default: '' + type: string + nuspec-file: + type: string + required: true + secrets: + github-token: + required: true + nuget-token: + required: true + +jobs: + release: + if: github.event_name == 'workflow_dispatch' || (github.event_name == 'pull_request' && github.event.pull_request.merged && startsWith(github.event.pull_request.head.ref, 'release/')) + runs-on: windows-latest + environment: release + + steps: + - name: Checkout code + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - uses: actions/download-artifact@v4 + with: + path: './src' + name: build + + - id: release + uses: ./.github/actions/nuget-release + with: + dotnet-version: ${{ inputs.dotnet-version }} + project-path: ${{ inputs.project-path }} + tag-prefix: ${{ inputs.tag-prefix }} + nuget-directory: ${{ inputs.project-path }}/nuget + nuget-token: ${{ secrets.nuget-token }} + github-token: ${{ secrets.github-token }} + nuspec-file: ${{ inputs.nuspec-file }} \ No newline at end of file diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml deleted file mode 100644 index 73ef42df..00000000 --- a/.github/workflows/publish.yml +++ /dev/null @@ -1,105 +0,0 @@ -name: Publish Release - -on: - workflow_dispatch: - inputs: - branch: - description: The branch to release from - required: true - default: master - -permissions: - contents: read - -jobs: - publish-nuget: - name: Publish to NuGet - runs-on: windows-latest - environment: 'release' - - steps: - - name: Checkout code - uses: actions/checkout@v4 - with: - fetch-depth: 0 - ref: ${{ github.event.inputs.branch }} - - - name: Install Java - uses: actions/setup-java@v3 - with: - distribution: 'temurin' - java-version: '11' - - - name: Install .NET - uses: actions/setup-dotnet@v3 - - - name: Install .NET Android and iOS workload - run: dotnet workload install android ios - - - name: Setup NuGet - uses: nuget/setup-nuget@v1 - - - name: Restore NuGet - run: nuget restore Auth0.OidcClient.All.sln - - - name: Setup MSBuild - uses: microsoft/setup-msbuild@v1.1 - - - name: Build - run: msbuild Auth0.OidcClient.All.sln -t:rebuild -verbosity:diag -property:Configuration=Release - - - name: Install DocFX - run: dotnet tool install -g docfx - - - name: Build docs - run: ./tools/build-docs.sh - shell: bash - - - uses: actions/upload-pages-artifact@v2 - with: - path: docs - - - name: NuGet pack - run: | - nuget pack nuget/Auth0.OidcClient.Android.nuspec - nuget pack nuget/Auth0.OidcClient.AndroidX.nuspec - nuget pack nuget/Auth0.OidcClient.Core.nuspec - nuget pack nuget/Auth0.OidcClient.iOS.nuspec - nuget pack nuget/Auth0.OidcClient.MAUI.nuspec - nuget pack nuget/Auth0.OidcClient.UWP.nuspec - nuget pack nuget/Auth0.OidcClient.WinForms.nuspec - nuget pack nuget/Auth0.OidcClient.WPF.nuspec - - - uses: actions/upload-artifact@v3 - with: - name: drop - path: '**/*.nupkg' - - - name: Publish release to NuGet - run: nuget push **\*.nupkg -ApiKey ${{ env.NUGET_API_KEY }} -Source https://api.nuget.org/v3/index.json -SkipDuplicate -NonInteractive - env: - NUGET_API_KEY: ${{ secrets.NUGET_API_KEY }} - - # Deploy job - deploy-docs: - # Add a dependency to publish-nuget job - needs: publish-nuget - - # Grant GITHUB_TOKEN the permissions required to make a Pages deployment - permissions: - pages: write # to deploy to Pages - id-token: write # to verify the deployment originates from an appropriate source - - # Deploy to the github-pages environment - environment: - name: github-pages - url: ${{ steps.deployment.outputs.page_url }} - - # Specify runner + deployment step - runs-on: ubuntu-latest - steps: - - name: Deploy to GitHub Pages - id: deployment - uses: actions/deploy-pages@v3 # or specific "vX.X.X" version tag for this action - - diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 00000000..c1c97f21 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,202 @@ +name: Create NuGet and GitHub Release + +on: + pull_request: + types: + - closed + workflow_dispatch: + + +permissions: + contents: write + +### TODO: Replace instances of './.github/workflows/' w/ `auth0/dx-sdk-actions/workflows` and append `@latest` after the common `dx-sdk-actions` repo is made public. +### TODO: Also remove `get-prerelease`, `get-release-notes`, `get-version`, `release-create`, and `tag-exists` actions from this repo's .github/actions folder once the repo is public. + +jobs: + build: + name: Build + runs-on: windows-latest + environment: 'release' + if: github.event_name == 'workflow_dispatch' || (github.event_name == 'pull_request' && github.event.pull_request.merged && startsWith(github.event.pull_request.head.ref, 'release/')) + + steps: + - name: Checkout code + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Install Java + uses: actions/setup-java@v3 + with: + distribution: 'temurin' + java-version: '11' + + - name: Install .NET + uses: actions/setup-dotnet@v3 + + - name: Install .NET Android and iOS workload + run: dotnet workload install android ios maui + + - name: Setup NuGet + uses: nuget/setup-nuget@v1 + + - name: Restore NuGet + run: nuget restore Auth0.OidcClient.All.sln + + - name: Setup MSBuild + uses: microsoft/setup-msbuild@v1.1 + + - name: Build + run: msbuild Auth0.OidcClient.All.sln -t:rebuild -verbosity:diag -property:Configuration=Release + + - uses: actions/upload-artifact@v4 + with: + name: build + path: './src' + retention-days: 1 + compression-level: 9 + + android: + name: Android + uses: ./.github/workflows/nuget-release.yml + needs: build + with: + tag-prefix: 'android-' + project-path: "src/Auth0.OidcClient.Android" + nuspec-file: "nuget/Auth0.OidcClient.Android.nuspec" + secrets: + nuget-token: ${{ secrets.NUGET_APIKEY }} + github-token: ${{ secrets.GITHUB_TOKEN }} + + androidx: + name: AndroidX + uses: ./.github/workflows/nuget-release.yml + needs: build + with: + tag-prefix: 'androidx-' + project-path: "src/Auth0.OidcClient.AndroidX" + nuspec-file: "nuget/Auth0.OidcClient.AndroidX.nuspec" + secrets: + nuget-token: ${{ secrets.NUGET_APIKEY }} + github-token: ${{ secrets.GITHUB_TOKEN }} + + ios: + name: iOS + uses: ./.github/workflows/nuget-release.yml + needs: build + with: + tag-prefix: 'ios-' + project-path: "src/Auth0.OidcClient.iOS" + nuspec-file: "nuget/Auth0.OidcClient.iOS.nuspec" + secrets: + nuget-token: ${{ secrets.NUGET_APIKEY }} + github-token: ${{ secrets.GITHUB_TOKEN }} + + core: + name: Core + uses: ./.github/workflows/nuget-release.yml + needs: build + with: + tag-prefix: 'core-' + project-path: "src/Auth0.OidcClient.Core" + nuspec-file: "nuget/Auth0.OidcClient.Core.nuspec" + secrets: + nuget-token: ${{ secrets.NUGET_APIKEY }} + github-token: ${{ secrets.GITHUB_TOKEN }} + + wpf: + name: WPF + uses: ./.github/workflows/nuget-release.yml + needs: build + with: + tag-prefix: 'wpf-' + project-path: "src/Auth0.OidcClient.WPF" + nuspec-file: "nuget/Auth0.OidcClient.WPF.nuspec" + secrets: + nuget-token: ${{ secrets.NUGET_APIKEY }} + github-token: ${{ secrets.GITHUB_TOKEN }} + + winforms: + name: WinForms + uses: ./.github/workflows/nuget-release.yml + needs: build + with: + tag-prefix: 'winforms-' + project-path: "src/Auth0.OidcClient.WinForms" + nuspec-file: "nuget/Auth0.OidcClient.WinForms.nuspec" + secrets: + nuget-token: ${{ secrets.NUGET_APIKEY }} + github-token: ${{ secrets.GITHUB_TOKEN }} + + uwp: + name: UWP + uses: ./.github/workflows/nuget-release.yml + needs: build + with: + tag-prefix: 'uwp-' + project-path: "src/Auth0.OidcClient.UWP" + nuspec-file: "nuget/Auth0.OidcClient.UWP.nuspec" + secrets: + nuget-token: ${{ secrets.NUGET_APIKEY }} + github-token: ${{ secrets.GITHUB_TOKEN }} + + maui: + name: MAUI + uses: ./.github/workflows/nuget-release.yml + needs: build + with: + tag-prefix: 'maui-' + project-path: "src/Auth0.OidcClient.MAUI" + nuspec-file: "nuget/Auth0.OidcClient.MAUI.nuspec" + secrets: + nuget-token: ${{ secrets.NUGET_APIKEY }} + github-token: ${{ secrets.GITHUB_TOKEN }} + + generate-docs: + name: Generate API docs + if: github.event_name == 'workflow_dispatch' || (github.event_name == 'pull_request' && github.event.pull_request.merged && startsWith(github.event.pull_request.head.ref, 'release/')) + runs-on: windows-latest + environment: release + needs: build + + steps: + - name: Checkout code + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - uses: actions/download-artifact@v4 + with: + path: './src' + name: build + + - name: Install DocFX + run: dotnet tool install -g docfx + + - name: Build docs + run: ./tools/build-docs.sh + shell: bash + + - uses: actions/upload-pages-artifact@v2 + with: + path: docs + + deploy-docs: + needs: generate-docs + name: Deploy API docs + if: github.event_name == 'workflow_dispatch' || (github.event_name == 'pull_request' && github.event.pull_request.merged && startsWith(github.event.pull_request.head.ref, 'release/')) + + permissions: + pages: write # to deploy to Pages + id-token: write # to verify the deployment originates from an appropriate source + + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + + runs-on: ubuntu-latest + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v3 # or specific "vX.X.X" version tag for this action \ No newline at end of file diff --git a/src/Auth0.OidcClient.Android/.shiprc b/src/Auth0.OidcClient.Android/.shiprc new file mode 100644 index 00000000..3427dc80 --- /dev/null +++ b/src/Auth0.OidcClient.Android/.shiprc @@ -0,0 +1,15 @@ +{ + "packageLabel": "android", + "files": { + ".version": [] + }, + "prFilters": [ + { + "type": "title", + "args": [ + "^android:" + ], + "invert": true + } + ] +} \ No newline at end of file diff --git a/src/Auth0.OidcClient.Android/.version b/src/Auth0.OidcClient.Android/.version new file mode 100644 index 00000000..0c89fc92 --- /dev/null +++ b/src/Auth0.OidcClient.Android/.version @@ -0,0 +1 @@ +4.0.0 \ No newline at end of file diff --git a/src/Auth0.OidcClient.AndroidX/.shiprc b/src/Auth0.OidcClient.AndroidX/.shiprc new file mode 100644 index 00000000..a07ba0c2 --- /dev/null +++ b/src/Auth0.OidcClient.AndroidX/.shiprc @@ -0,0 +1,15 @@ +{ + "packageLabel": "androidx", + "files": { + ".version": [] + }, + "prFilters": [ + { + "type": "title", + "args": [ + "^androidx:" + ], + "invert": true + } + ] +} \ No newline at end of file diff --git a/src/Auth0.OidcClient.AndroidX/.version b/src/Auth0.OidcClient.AndroidX/.version new file mode 100644 index 00000000..0c89fc92 --- /dev/null +++ b/src/Auth0.OidcClient.AndroidX/.version @@ -0,0 +1 @@ +4.0.0 \ No newline at end of file diff --git a/src/Auth0.OidcClient.Core/.shiprc b/src/Auth0.OidcClient.Core/.shiprc new file mode 100644 index 00000000..cc85af92 --- /dev/null +++ b/src/Auth0.OidcClient.Core/.shiprc @@ -0,0 +1,15 @@ +{ + "packageLabel": "core", + "files": { + ".version": [] + }, + "prFilters": [ + { + "type": "title", + "args": [ + "^core:" + ], + "invert": true + } + ] +} \ No newline at end of file diff --git a/src/Auth0.OidcClient.Core/.version b/src/Auth0.OidcClient.Core/.version new file mode 100644 index 00000000..0c89fc92 --- /dev/null +++ b/src/Auth0.OidcClient.Core/.version @@ -0,0 +1 @@ +4.0.0 \ No newline at end of file diff --git a/src/Auth0.OidcClient.MAUI/.shiprc b/src/Auth0.OidcClient.MAUI/.shiprc new file mode 100644 index 00000000..929a18ae --- /dev/null +++ b/src/Auth0.OidcClient.MAUI/.shiprc @@ -0,0 +1,15 @@ +{ + "packageLabel": "maui", + "files": { + ".version": [] + }, + "prFilters": [ + { + "type": "title", + "args": [ + "^maui:" + ], + "invert": true + } + ] +} \ No newline at end of file diff --git a/src/Auth0.OidcClient.MAUI/.version b/src/Auth0.OidcClient.MAUI/.version new file mode 100644 index 00000000..ebb5fbf5 --- /dev/null +++ b/src/Auth0.OidcClient.MAUI/.version @@ -0,0 +1 @@ +1.0.0-beta.1 \ No newline at end of file diff --git a/src/Auth0.OidcClient.UWP/.shiprc b/src/Auth0.OidcClient.UWP/.shiprc new file mode 100644 index 00000000..6c2629b0 --- /dev/null +++ b/src/Auth0.OidcClient.UWP/.shiprc @@ -0,0 +1,15 @@ +{ + "packageLabel": "uwp", + "files": { + ".version": [] + }, + "prFilters": [ + { + "type": "title", + "args": [ + "^uwp:" + ], + "invert": true + } + ] +} \ No newline at end of file diff --git a/src/Auth0.OidcClient.UWP/.version b/src/Auth0.OidcClient.UWP/.version new file mode 100644 index 00000000..0c89fc92 --- /dev/null +++ b/src/Auth0.OidcClient.UWP/.version @@ -0,0 +1 @@ +4.0.0 \ No newline at end of file diff --git a/src/Auth0.OidcClient.WPF/.shiprc b/src/Auth0.OidcClient.WPF/.shiprc new file mode 100644 index 00000000..b0026ac3 --- /dev/null +++ b/src/Auth0.OidcClient.WPF/.shiprc @@ -0,0 +1,15 @@ +{ + "packageLabel": "wpf", + "files": { + ".version": [] + }, + "prFilters": [ + { + "type": "title", + "args": [ + "^wpf:" + ], + "invert": true + } + ] +} \ No newline at end of file diff --git a/src/Auth0.OidcClient.WPF/.version b/src/Auth0.OidcClient.WPF/.version new file mode 100644 index 00000000..0c89fc92 --- /dev/null +++ b/src/Auth0.OidcClient.WPF/.version @@ -0,0 +1 @@ +4.0.0 \ No newline at end of file diff --git a/src/Auth0.OidcClient.WinForms/.shiprc b/src/Auth0.OidcClient.WinForms/.shiprc new file mode 100644 index 00000000..05c20a53 --- /dev/null +++ b/src/Auth0.OidcClient.WinForms/.shiprc @@ -0,0 +1,15 @@ +{ + "packageLabel": "winforms", + "files": { + ".version": [] + }, + "prFilters": [ + { + "type": "title", + "args": [ + "^winforms:" + ], + "invert": true + } + ] +} \ No newline at end of file diff --git a/src/Auth0.OidcClient.WinForms/.version b/src/Auth0.OidcClient.WinForms/.version new file mode 100644 index 00000000..0c89fc92 --- /dev/null +++ b/src/Auth0.OidcClient.WinForms/.version @@ -0,0 +1 @@ +4.0.0 \ No newline at end of file diff --git a/src/Auth0.OidcClient.iOS/.shiprc b/src/Auth0.OidcClient.iOS/.shiprc new file mode 100644 index 00000000..0f97a46c --- /dev/null +++ b/src/Auth0.OidcClient.iOS/.shiprc @@ -0,0 +1,15 @@ +{ + "packageLabel": "ios", + "files": { + ".version": [] + }, + "prFilters": [ + { + "type": "title", + "args": [ + "^ios:" + ], + "invert": true + } + ] +} \ No newline at end of file diff --git a/src/Auth0.OidcClient.iOS/.version b/src/Auth0.OidcClient.iOS/.version new file mode 100644 index 00000000..0c89fc92 --- /dev/null +++ b/src/Auth0.OidcClient.iOS/.version @@ -0,0 +1 @@ +4.0.0 \ No newline at end of file