1
1
name :Publish to MCP Registry
2
2
3
3
on :
4
- repository_dispatch :
5
- types :[docker-published ] # Triggered after Docker image is published
4
+ push :
5
+ tags :["v*" ] # Triggers on version tags like v1.0.0
6
6
workflow_dispatch :# Allow manual triggering
7
7
8
8
jobs :
@@ -23,32 +23,28 @@ jobs:
23
23
24
24
-name :Fetch tags
25
25
run :|
26
- if [[ "${{ github.event_name }}" == "repository_dispatch" ]]; then
27
- echo "Triggered by docker-published event for tag: ${{ github.event.client_payload.tag }}"
28
- elif [[ "${{ github.ref_type }}" != "tag" ]]; then
26
+ if [[ "${{ github.ref_type }}" != "tag" ]]; then
29
27
git fetch --tags
30
28
else
31
29
echo "Skipping tag fetch - already on tag ${{ github.ref_name }}"
32
30
fi
33
31
34
32
-name :Wait for Docker image
35
33
run :|
36
- if [[ "${{ github.event_name }}" == "repository_dispatch" ]]; then
37
- TAG="${{ github.event.client_payload.tag }}"
38
- elif [[ "${{ github.ref_type }}" == "tag" ]]; then
34
+ if [[ "${{ github.ref_type }}" == "tag" ]]; then
39
35
TAG="${{ github.ref_name }}"
40
36
else
41
37
TAG=$(git tag --sort=-version:refname | grep -E '^v[0-9]+\.[0-9]+\.[0-9]+' | head -n1)
42
38
fi
43
39
IMAGE="ghcr.io/github/github-mcp-server:$TAG"
44
40
45
- for i in {1..6 }; do
41
+ for i in {1..10 }; do
46
42
if docker manifest inspect "$IMAGE" &>/dev/null; then
47
43
echo "✅ Docker image ready: $TAG"
48
44
break
49
45
fi
50
- [ $i -eq6 ] && { echo "❌ Timeout waiting for $TAG after3 minutes"; exit 1; }
51
- echo "⏳ Waiting for Docker image ($i/6 )..."
46
+ [ $i -eq10 ] && { echo "❌ Timeout waiting for $TAG after5 minutes"; exit 1; }
47
+ echo "⏳ Waiting for Docker image ($i/10 )..."
52
48
sleep 30
53
49
done
54
50
60
56
61
57
-name :Update server.json version
62
58
run :|
63
- if [[ "${{ github.event_name }}" == "repository_dispatch" ]]; then
64
- TAG_VERSION=$(echo "${{ github.event.client_payload.tag }}" | sed 's/^v//')
65
- echo "Using tag from dispatch: ${{ github.event.client_payload.tag }}"
66
- elif [[ "${{ github.ref_type }}" == "tag" ]]; then
59
+ if [[ "${{ github.ref_type }}" == "tag" ]]; then
67
60
TAG_VERSION=$(echo "${{ github.ref_name }}" | sed 's/^v//')
68
61
else
69
62
LATEST_TAG=$(git tag --sort=-version:refname | grep -E '^v[0-9]+\.[0-9]+\.[0-9]+(-.*)?$' | head -n 1)