name: Publish NuGet package on: push: tags: - 'v*' workflow_dispatch: jobs: publish: runs-on: ubuntu-latest permissions: contents: read packages: write env: NUGET_AUTH_TOKEN: ${{ secrets.SHRINKSDK_PACKAGE_TOKEN }} steps: - name: Checkout tagged source uses: actions/checkout@v4 - name: Install .NET prerequisites shell: bash run: | apt-get update apt-get install -y --no-install-recommends ca-certificates curl rm -rf /var/lib/apt/lists/* - name: Set up .NET uses: actions/setup-dotnet@v4 with: dotnet-version: '8.0.x' - name: Validate tag and pack env: GITEA_REF: ${{ gitea.ref }} shell: bash run: | set -euo pipefail tag="${GITEA_REF#refs/tags/}" version="$(dotnet msbuild ShrinkSDK.Godot.csproj -getProperty:Version -nologo)" test "$tag" = "v$version" dotnet restore ShrinkSDK.Godot.csproj --configfile NuGet.Config dotnet pack ShrinkSDK.Godot.csproj --configuration Release --no-restore --output packages --include-symbols --include-source - name: Publish package shell: bash run: | set -euo pipefail : "${NUGET_AUTH_TOKEN:?SHRINKSDK_PACKAGE_TOKEN is required}" dotnet nuget push 'packages/*.nupkg' --api-key "$NUGET_AUTH_TOKEN" --source https://git.crash.work/api/packages/ShrinkSDK/nuget/index.json --skip-duplicate if compgen -G 'packages/*.snupkg' > /dev/null; then dotnet nuget push 'packages/*.snupkg' --api-key "$NUGET_AUTH_TOKEN" --source https://git.crash.work/api/packages/ShrinkSDK/nuget/index.json --skip-duplicate fi