Forge
yaml15d33a96
1# Публикация на nuget.org через Trusted Publishing (OIDC).
2# nuget.org → пакет AIGuiders.GitMcp.Core → Trusted Publishing → GitHub:
3# Owner: KarataevDmitry, Repository name: git-mcp-core (НЕ имя пакета),
4# Workflow: nuget-publish.yml, субъект: LonelySoul (как у AgentNotes.Core).
5name Publish to NuGet
6
7on
8 workflow_dispatch:
9 inputs:
10 package_version:
11 description: 'Версия пакета (SemVer, напр. 1.0.1)'
12 required: true
13 type: string
14 push:
15 tags:
16 - 'v*'
17
18permissions
19 contents: read
20 id-token: write
21
22jobs
23 publish:
24 runs-on: ubuntu-latest
25 steps:
26 - uses: actions/checkout@v4
27
28 - uses: actions/setup-dotnet@v4
29 with:
30 dotnet-version: '10.0.x'
31
32 - name: Версия пакета
33 shell: bash
34 run: |
35 set -euo pipefail
36 if [ "${{ github.ref_type }}" = "tag" ]; then
37 v="${GITHUB_REF_NAME#v}"
38 echo "PKG_VERSION=$v" >> "$GITHUB_ENV"
39 echo "Publishing version (from tag): $v"
40 else
41 iv="${{ github.event.inputs.package_version }}"
42 echo "PKG_VERSION=$iv" >> "$GITHUB_ENV"
43 echo "Publishing version (workflow_dispatch): $iv"
44 fi
45
46 - name: Pack (Release)
47 run: dotnet pack GitMcp.Core.csproj -c Release -o nupkg -p:PackageVersion="${PKG_VERSION}"
48
49 - name: NuGet login (OIDC → временный API key)
50 uses: NuGet/login@v1
51 id: nuget_login
52 with:
53 user: LonelySoul
54
55 - name: Push nupkg / snupkg
56 shell: bash
57 run: |
58 set -euo pipefail
59 key="${{ steps.nuget_login.outputs.NUGET_API_KEY }}"
60 src="https://api.nuget.org/v3/index.json"
61 shopt -s nullglob
62 for f in nupkg/*.nupkg; do
63 dotnet nuget push "$f" --api-key "$key" --source "$src" --skip-duplicate
64 done
65 declare -A seen=()
66 for f in nupkg/*.snupkg; do
67 base=$(basename "$f")
68 if [[ -n "${seen[$base]:-}" ]]; then continue; fi
69 seen[$base]=1
70 dotnet nuget push "$f" --api-key "$key" --source "$src" --skip-duplicate
71 done
72
View only · write via MCP/CIDE