name: '๐Ÿ“ฆ Release' on: # Make a release whenever the developer wants. workflow_dispatch: inputs: bump: type: string description: "major, minor, or patch" required: true default: "patch" # Make a release whenever we're told to by another workflow. workflow_call: secrets: NUGET_API_KEY: description: "API key for Nuget" required: true GH_BASIC: description: "Personal access token (PAT) for GitHub" required: true # Input unifies with the workflow dispatch since it's identical. inputs: bump: type: string description: "major, minor, or patch" required: true default: "patch" jobs: release: name: '๐Ÿ“ฆ Release' runs-on: ubuntu-latest env: DOTNET_CLI_TELEMETRY_OPTOUT: true DOTNET_NOLOGO: true steps: - name: ๐Ÿงพ Checkout uses: actions/checkout@v6 with: token: ${{ secrets.GH_BASIC }} lfs: true submodules: 'recursive' fetch-depth: 0 # So we can get all tags. - name: ๐Ÿ”Ž Read Current Project Version id: current-version uses: WyriHaximus/github-action-get-previous-tag@v2 with: fallback: "0.0.0-devbuild" - name: ๐Ÿ–จ Print Current Version run: | echo "Current Version: ${{ steps.current-version.outputs.tag }}" - name: ๐Ÿงฎ Compute Next Version uses: chickensoft-games/next-godot-csproj-version@v1 id: next-version with: project-version: ${{ steps.current-version.outputs.tag }} godot-version: global.json bump: ${{ inputs.bump }} - uses: actions/setup-dotnet@v5 name: ๐Ÿ’ฝ Setup .NET SDK with: # Use the .NET SDK from global.json in the root of the repository. global-json-file: global.json # Write version to file so .NET will build correct version. - name: ๐Ÿ“ Write Version to File uses: jacobtomlinson/gha-find-replace@v3 with: find: "0.0.0-devbuild" replace: ${{ steps.next-version.outputs.version }} regex: false include: GodotHelper/GodotHelper.csproj - name: ๐Ÿ“ฆ Build working-directory: GodotHelper run: dotnet build -c Release - name: ๐Ÿ”Ž Get Package Path id: package-path run: | package=$(find ./GodotHelper/nupkg -name "*.nupkg") echo "package=$package" >> "$GITHUB_OUTPUT" echo "๐Ÿ“ฆ Found package: $package" - name: โœจ Create Release env: GITHUB_TOKEN: ${{ secrets.GH_BASIC }} run: | version="${{ steps.next-version.outputs.version }}" gh release create --title "v$version" --generate-notes "$version" \ "${{ steps.package-path.outputs.package }}" - name: ๐Ÿ›œ Publish to Nuget run: | dotnet nuget push "${{ steps.package-path.outputs.package }}" \ --api-key "${{ secrets.NUGET_API_KEY }}" \ --source "https://api.nuget.org/v3/index.json" --skip-duplicate