name: Publish NuGet packages 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 projects env: GITEA_REF: ${{ gitea.ref }} shell: bash run: | set -euo pipefail tag="${GITEA_REF#refs/tags/}" version="$(node -p "require('./package.json').version")" test "$tag" = "v$version" mkdir -p packages mapfile -d '' projects < <(find DotNet~ Godot~ -type f -name '*.csproj' -print0 2>/dev/null || true) test "${#projects[@]}" -gt 0 for project in "${projects[@]}"; do dotnet restore "$project" --configfile NuGet.Config dotnet pack "$project" --configuration Release --no-restore --output "$PWD/packages" --include-symbols --include-source done find packages -maxdepth 1 -name '*.nupkg' -type f | grep -q . - name: Publish packages 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