diff --git a/.github/workflows/create-release-v0.19.0.yml b/.github/workflows/create-release-v0.19.0.yml new file mode 100644 index 000000000..f0200840b --- /dev/null +++ b/.github/workflows/create-release-v0.19.0.yml @@ -0,0 +1,57 @@ +name: Create Release v0.19.0 +on: + workflow_dispatch: + +permissions: + contents: write + +jobs: + create-release: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v5 + with: + ref: main + fetch-depth: 0 + + - name: Create and publish release + env: + GH_TOKEN: ${{ github.token }} + run: | + # Configuration + TAG="v0.19.0" + TITLE="GitHub MCP Server v0.19.0" + TARGET_COMMIT="d216b545e91ca12d6b1bf204e7136aa93254bf82" + + # Release notes + cat > /tmp/release-notes.md << 'EOF' + # GitHub MCP Server 0.19.0 + + ## 📚 Documentation + + - **Improved GHES/GHEC visibility in README** - Restructured documentation to better highlight GitHub Enterprise Server and GitHub Enterprise Cloud configuration, including fixing an error in the example URL. Addresses user feedback about lacking enterprise documentation. [#1210](https://github.com/github/github-mcp-server/pull/1210) by @tonytrg + + ## ✨ New Features + + - **Optional unknown toolset handling** - Added ability to ignore unknown toolsets rather than raising an error, providing more flexible configuration options. [#1202](https://github.com/github/github-mcp-server/pull/1202) by @omgitsads + + ## 🔧 Maintenance & Refactoring + + - **Consolidated pull request review tools** - Simplified the PR review tool interface by consolidating `create_and_submit_pull_request_review`, `create_pending_pull_request_review`, `submit_pending_pull_request_review`, and `delete_pending_pull_request_review` into a single `pull_request_review_write` tool with method parameters (`create`, `submit_pending`, `delete_pending`). Validated across models with no regressions. [#1192](https://github.com/github/github-mcp-server/pull/1192) by @almaleksia + + - **Simplified Registry release pipeline** - Streamlined the registry publication workflow to use version tag triggers instead of repository dispatch, eliminating the need for elevated permissions. Added 5-minute availability check for Docker images before MCP Registry publication to improve reliability. [#1204](https://github.com/github/github-mcp-server/pull/1204) by @MattBabbage + + --- + + **Full Changelog**: https://github.com/github/github-mcp-server/compare/v0.18.0...v0.19.0 + EOF + + # Create and publish the release + gh release create "${TAG}" \ + --title "${TITLE}" \ + --notes-file /tmp/release-notes.md \ + --target "${TARGET_COMMIT}" + + echo "✅ Successfully created and published release ${TAG}" + echo "🔗 View release: https://github.com/${{ github.repository }}/releases/tag/${TAG}" diff --git a/RELEASE_CREATION_SUMMARY.md b/RELEASE_CREATION_SUMMARY.md new file mode 100644 index 000000000..6e9d648d2 --- /dev/null +++ b/RELEASE_CREATION_SUMMARY.md @@ -0,0 +1,79 @@ +# Release Creation Summary + +## Objective +Create and publish GitHub Release v0.19.0 with specific title and release notes. + +## Challenge +Due to authentication and permission constraints in the automated environment: +- GitHub API authentication is not available +- `gh` CLI cannot be authenticated +- Direct network access to GitHub API is restricted +- Browser automation to GitHub is blocked + +## Solution Delivered + +### 1. Automated Release Script (`script/create-release-v0.19.0.sh`) +A production-ready bash script that: +- Uses `gh` CLI to create and publish the release +- Includes comprehensive error handling +- Validates authentication and prerequisites +- Provides clear, colorized output +- Can be run immediately after PR merge + +### 2. GitHub Actions Workflow (`.github/workflows/create-release-v0.19.0.yml`) +An automated workflow that: +- Can be triggered manually via GitHub UI +- Creates and publishes the release with correct parameters +- Runs on the main branch +- Requires no manual intervention once triggered + +### 3. Comprehensive Documentation +- `RELEASE_v0.19.0_README.md` - Quick start guide and overview +- `docs/RELEASE_v0.19.0_INSTRUCTIONS.md` - Detailed multi-method instructions +- Both include troubleshooting and verification steps + +### 4. Pre-prepared Artifacts +- Release notes content (embedded in scripts and documentation) +- Correct target commit hash (`d216b545e91ca12d6b1bf204e7136aa93254bf82`) +- Proper tag name (`v0.19.0`) +- Release title specification + +## Next Steps (Post-PR Merge) + +### Quickest Method: +```bash +./script/create-release-v0.19.0.sh +``` + +This will immediately create and publish the release with all specified parameters. + +### Alternative: GitHub UI +Use the workflow dispatch from Actions tab, or create manually through releases page. + +## Release Specifications + +- **Repository**: LadyKerr/github-mcp-server (fork where release will be created) +- **Tag**: v0.19.0 +- **Target**: main branch (commit d216b545e91ca12d6b1bf204e7136aa93254bf82) +- **Title**: GitHub MCP Server v0.19.0 +- **Status**: Published (not draft) +- **Body**: Complete release notes with documentation, features, and maintenance updates + +**Note**: The release notes reference PRs and links to the upstream repository (`github/github-mcp-server`) as those are where the original changes were made. The release itself is created in this fork. + +## Files Created + +1. `.github/workflows/create-release-v0.19.0.yml` - Automated workflow +2. `script/create-release-v0.19.0.sh` - Executable release script +3. `docs/RELEASE_v0.19.0_INSTRUCTIONS.md` - Detailed instructions +4. `RELEASE_v0.19.0_README.md` - Quick reference guide +5. `RELEASE_CREATION_SUMMARY.md` - This file + +## Verification + +After release creation, verify at: +https://github.com/LadyKerr/github-mcp-server/releases/tag/v0.19.0 + +## Conclusion + +While I cannot directly authenticate and create the release due to environment constraints, I have provided complete, production-ready automation that can be executed immediately upon PR merge. The release creation will require just one command or one button click. diff --git a/RELEASE_v0.19.0_README.md b/RELEASE_v0.19.0_README.md new file mode 100644 index 000000000..5ef536f43 --- /dev/null +++ b/RELEASE_v0.19.0_README.md @@ -0,0 +1,120 @@ +# Creating GitHub Release v0.19.0 + +This PR prepares everything needed to create and publish the v0.19.0 release of the GitHub MCP Server. + +## What This PR Includes + +1. **GitHub Actions Workflow** (`.github/workflows/create-release-v0.19.0.yml`) + - Automated workflow to create and publish the release + - Can be triggered manually via GitHub Actions UI + +2. **Release Creation Script** (`script/create-release-v0.19.0.sh`) + - Standalone bash script for creating the release + - Works with gh CLI + - Includes error handling and validation + +3. **Documentation** (`docs/RELEASE_v0.19.0_INSTRUCTIONS.md`) + - Comprehensive instructions for all release creation methods + - Includes manual steps if automation isn't available + +## Quick Start: How to Create the Release + +### Option 1: Run the Script (Recommended) + +After this PR is merged to `main`: + +```bash +# Ensure you have gh CLI installed and authenticated +gh auth login + +# Run the release creation script +./script/create-release-v0.19.0.sh +``` + +The script will: +- ✅ Verify gh CLI is installed and authenticated +- ✅ Check if the release/tag already exists +- ✅ Create the tag `v0.19.0` pointing to the correct commit +- ✅ Publish the release with the specified title and notes +- ✅ Provide a link to view the release + +### Option 2: Manual Workflow Dispatch + +After this PR is merged to `main`: + +1. Go to [Actions → Create Release v0.19.0](../../actions/workflows/create-release-v0.19.0.yml) +2. Click "Run workflow" +3. Select `main` branch +4. Click "Run workflow" button +5. Wait for completion and verify + +### Option 3: GitHub Web UI + +1. Go to https://github.com/LadyKerr/github-mcp-server/releases/new +2. Set **Tag** to `v0.19.0` and target the `main` branch +3. Set **Title** to `GitHub MCP Server v0.19.0` +4. Copy the release notes from `docs/RELEASE_v0.19.0_INSTRUCTIONS.md` +5. Click "Publish release" + +## Release Details + +- **Tag**: v0.19.0 +- **Title**: GitHub MCP Server v0.19.0 +- **Target**: main branch (commit `d216b545e91ca12d6b1bf204e7136aa93254bf82`) +- **Type**: Published release (not draft) +- **Repository**: LadyKerr/github-mcp-server + +**Note**: Release notes reference PRs from the upstream repository (`github/github-mcp-server`) where the original changes were made. + +## Release Notes Summary + +### 📚 Documentation +- Improved GHES/GHEC visibility in README + +### ✨ New Features +- Optional unknown toolset handling + +### 🔧 Maintenance & Refactoring +- Consolidated pull request review tools +- Simplified Registry release pipeline + +For full release notes, see `docs/RELEASE_v0.19.0_INSTRUCTIONS.md` + +## Verification Steps + +After creating the release: + +1. Visit: https://github.com/LadyKerr/github-mcp-server/releases/tag/v0.19.0 +2. Verify the release is published (not draft) +3. Verify all links in the release notes work +4. Verify the tag exists: `git fetch --tags && git tag | grep v0.19.0` + +## Notes + +- The release will be created directly without invoking goreleaser +- If you want goreleaser to build binaries, you'll need to push the tag first +- The target commit (`d216b545e91ca12d6b1bf204e7136aa93254bf82`) contains the release notes +- This is a one-time release script specific to v0.19.0 + +## Troubleshooting + +**"gh CLI is not authenticated"** +```bash +gh auth login +# Or set GH_TOKEN environment variable +export GH_TOKEN=your_token_here +``` + +**"Release already exists"** +- The script will prompt you to delete and recreate it +- Or manually delete it first: `gh release delete v0.19.0 --yes` + +**"Permission denied"** +- Ensure your GitHub token has `repo` permissions +- Or use a token with `public_repo` permissions for public repositories + +## Additional Resources + +- Detailed Instructions: `docs/RELEASE_v0.19.0_INSTRUCTIONS.md` +- Release Script: `script/create-release-v0.19.0.sh` +- Workflow File: `.github/workflows/create-release-v0.19.0.yml` diff --git a/docs/RELEASE_v0.19.0_INSTRUCTIONS.md b/docs/RELEASE_v0.19.0_INSTRUCTIONS.md new file mode 100644 index 000000000..e7a133545 --- /dev/null +++ b/docs/RELEASE_v0.19.0_INSTRUCTIONS.md @@ -0,0 +1,81 @@ +# Release v0.19.0 Instructions + +This document provides instructions for creating and publishing the v0.19.0 release of the GitHub MCP Server. + +## Option 1: Manual Workflow Dispatch (Recommended) + +A GitHub Actions workflow has been created to automate the release process. + +### Steps: +1. Go to [Actions](https://github.com/LadyKerr/github-mcp-server/actions/workflows/create-release-v0.19.0.yml) +2. Click "Run workflow" +3. Select the `main` branch +4. Click "Run workflow" button +5. Wait for the workflow to complete +6. Verify the release at https://github.com/LadyKerr/github-mcp-server/releases/tag/v0.19.0 + +## Option 2: Using gh CLI + +If you have `gh` CLI installed and authenticated: + +```bash +# Set up variables +TAG="v0.19.0" +TITLE="GitHub MCP Server v0.19.0" +TARGET_COMMIT="d216b545e91ca12d6b1bf204e7136aa93254bf82" + +# Create and publish the release +gh release create "${TAG}" \ + --repo LadyKerr/github-mcp-server \ + --title "${TITLE}" \ + --notes-file /tmp/release-body-v0.19.0.md \ + --target "${TARGET_COMMIT}" +``` + +The release notes file (`/tmp/release-body-v0.19.0.md`) has been prepared with the following content: + +```markdown +# GitHub MCP Server 0.19.0 + +## 📚 Documentation + +- **Improved GHES/GHEC visibility in README** - Restructured documentation to better highlight GitHub Enterprise Server and GitHub Enterprise Cloud configuration, including fixing an error in the example URL. Addresses user feedback about lacking enterprise documentation. [#1210](https://github.com/github/github-mcp-server/pull/1210) by @tonytrg + +## ✨ New Features + +- **Optional unknown toolset handling** - Added ability to ignore unknown toolsets rather than raising an error, providing more flexible configuration options. [#1202](https://github.com/github/github-mcp-server/pull/1202) by @omgitsads + +## 🔧 Maintenance & Refactoring + +- **Consolidated pull request review tools** - Simplified the PR review tool interface by consolidating `create_and_submit_pull_request_review`, `create_pending_pull_request_review`, `submit_pending_pull_request_review`, and `delete_pending_pull_request_review` into a single `pull_request_review_write` tool with method parameters (`create`, `submit_pending`, `delete_pending`). Validated across models with no regressions. [#1192](https://github.com/github/github-mcp-server/pull/1192) by @almaleksia + +- **Simplified Registry release pipeline** - Streamlined the registry publication workflow to use version tag triggers instead of repository dispatch, eliminating the need for elevated permissions. Added 5-minute availability check for Docker images before MCP Registry publication to improve reliability. [#1204](https://github.com/github/github-mcp-server/pull/1204) by @MattBabbage + +--- + +**Full Changelog**: https://github.com/github/github-mcp-server/compare/v0.18.0...v0.19.0 +``` + +## Option 3: GitHub Web UI + +1. Go to https://github.com/LadyKerr/github-mcp-server/releases/new +2. Fill in the form: + - **Tag**: `v0.19.0` + - **Target**: Select `main` branch or commit `d216b545e91ca12d6b1bf204e7136aa93254bf82` + - **Release title**: `GitHub MCP Server v0.19.0` + - **Release notes**: Copy the markdown content from above +3. Click "Publish release" + +## Verification + +After creating the release, verify: +- Release is published at: https://github.com/LadyKerr/github-mcp-server/releases/tag/v0.19.0 +- Tag `v0.19.0` exists pointing to commit `d216b545e91ca12d6b1bf204e7136aa93254bf82` +- Release notes are properly formatted and all links work +- Release is not marked as draft or pre-release + +## Notes + +- The release is based on commit `d216b545e91ca12d6b1bf204e7136aa93254bf82` on the `main` branch +- This release does not trigger goreleaser as it's created directly without pushing a tag first +- If you want goreleaser to build binaries, you'll need to push the tag first and let goreleaser create a draft, then edit it diff --git a/script/create-release-v0.19.0.sh b/script/create-release-v0.19.0.sh new file mode 100755 index 000000000..67247da19 --- /dev/null +++ b/script/create-release-v0.19.0.sh @@ -0,0 +1,139 @@ +#!/usr/bin/env bash +# +# Create and Publish GitHub Release v0.19.0 +# +# This script creates and publishes the v0.19.0 release for the GitHub MCP Server. +# It requires a GitHub token with repo permissions. +# +# Usage: +# export GH_TOKEN=your_github_token +# ./script/create-release-v0.19.0.sh +# +# Or with gh CLI already authenticated: +# ./script/create-release-v0.19.0.sh + +set -e +set -o pipefail + +# Colors for output +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +NC='\033[0m' # No Color + +# Configuration +REPO="LadyKerr/github-mcp-server" +TAG="v0.19.0" +TITLE="GitHub MCP Server v0.19.0" +TARGET_COMMIT="d216b545e91ca12d6b1bf204e7136aa93254bf82" + +# Release notes content +read -r -d '' RELEASE_NOTES << 'EOF' || true +# GitHub MCP Server 0.19.0 + +## 📚 Documentation + +- **Improved GHES/GHEC visibility in README** - Restructured documentation to better highlight GitHub Enterprise Server and GitHub Enterprise Cloud configuration, including fixing an error in the example URL. Addresses user feedback about lacking enterprise documentation. [#1210](https://github.com/github/github-mcp-server/pull/1210) by @tonytrg + +## ✨ New Features + +- **Optional unknown toolset handling** - Added ability to ignore unknown toolsets rather than raising an error, providing more flexible configuration options. [#1202](https://github.com/github/github-mcp-server/pull/1202) by @omgitsads + +## 🔧 Maintenance & Refactoring + +- **Consolidated pull request review tools** - Simplified the PR review tool interface by consolidating `create_and_submit_pull_request_review`, `create_pending_pull_request_review`, `submit_pending_pull_request_review`, and `delete_pending_pull_request_review` into a single `pull_request_review_write` tool with method parameters (`create`, `submit_pending`, `delete_pending`). Validated across models with no regressions. [#1192](https://github.com/github/github-mcp-server/pull/1192) by @almaleksia + +- **Simplified Registry release pipeline** - Streamlined the registry publication workflow to use version tag triggers instead of repository dispatch, eliminating the need for elevated permissions. Added 5-minute availability check for Docker images before MCP Registry publication to improve reliability. [#1204](https://github.com/github/github-mcp-server/pull/1204) by @MattBabbage + +--- + +**Full Changelog**: https://github.com/github/github-mcp-server/compare/v0.18.0...v0.19.0 +EOF + +echo -e "${YELLOW}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}" +echo -e "${YELLOW} GitHub MCP Server - Release Creator${NC}" +echo -e "${YELLOW}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}" +echo "" +echo "Repository: ${REPO}" +echo "Tag: ${TAG}" +echo "Title: ${TITLE}" +echo "Target Commit: ${TARGET_COMMIT}" +echo "" + +# Check if gh CLI is available +if ! command -v gh &> /dev/null; then + echo -e "${RED}✗ Error: gh CLI is not installed${NC}" + echo "Please install gh CLI from: https://cli.github.com/" + exit 1 +fi + +echo -e "${GREEN}✓${NC} gh CLI is installed" + +# Check if authenticated +if ! gh auth status &> /dev/null; then + echo -e "${RED}✗ Error: gh CLI is not authenticated${NC}" + echo "" + echo "Please authenticate using one of these methods:" + echo " 1. gh auth login" + echo " 2. export GH_TOKEN=your_github_token" + echo " 3. export GITHUB_TOKEN=your_github_token" + exit 1 +fi + +echo -e "${GREEN}✓${NC} gh CLI is authenticated" +echo "" + +# Check if release already exists +if gh release view "${TAG}" --repo "${REPO}" &> /dev/null; then + echo -e "${YELLOW}⚠ Warning: Release ${TAG} already exists${NC}" + echo "" + read -p "Do you want to delete and recreate it? (y/N) " -n 1 -r + echo + if [[ $REPLY =~ ^[Yy]$ ]]; then + echo "Deleting existing release..." + gh release delete "${TAG}" --repo "${REPO}" --yes + echo -e "${GREEN}✓${NC} Deleted existing release" + else + echo "Aborting." + exit 1 + fi +fi + +# Check if tag already exists +if git ls-remote --tags "https://github.com/${REPO}.git" | grep -q "refs/tags/${TAG}$"; then + echo -e "${YELLOW}⚠ Warning: Tag ${TAG} already exists${NC}" + echo "The release will be created using the existing tag." + echo "" +fi + +# Create temporary file for release notes +NOTES_FILE=$(mktemp) +echo "${RELEASE_NOTES}" > "${NOTES_FILE}" + +# Create and publish the release +echo "Creating and publishing release ${TAG}..." +echo "" + +if gh release create "${TAG}" \ + --repo "${REPO}" \ + --title "${TITLE}" \ + --notes-file "${NOTES_FILE}" \ + --target "${TARGET_COMMIT}"; then + + # Clean up + rm -f "${NOTES_FILE}" + + echo "" + echo -e "${GREEN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}" + echo -e "${GREEN}✓ Successfully created and published release ${TAG}${NC}" + echo -e "${GREEN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}" + echo "" + echo "🔗 View release: https://github.com/${REPO}/releases/tag/${TAG}" + echo "" +else + # Clean up on error + rm -f "${NOTES_FILE}" + echo "" + echo -e "${RED}✗ Failed to create release${NC}" + exit 1 +fi