chore(release): v0.3.3 #19
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Release | |
| on: | |
| push: | |
| tags: | |
| - 'v*' | |
| jobs: | |
| build: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Set up Go | |
| uses: actions/setup-go@v4 | |
| with: | |
| go-version: '1.21' | |
| - name: Set up Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '20' | |
| - name: Get version | |
| id: get_version | |
| run: echo "VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV | |
| # Read changelog | |
| - name: Read changelog | |
| id: changelog | |
| run: | | |
| VERSION_FILE="changelog/${GITHUB_REF#refs/tags/}.md" | |
| if [ -f "$VERSION_FILE" ]; then | |
| CHANGELOG_CONTENT=$(cat "$VERSION_FILE") | |
| echo "CHANGELOG_CONTENT<<EOF" >> $GITHUB_ENV | |
| echo "$CHANGELOG_CONTENT" >> $GITHUB_ENV | |
| echo "EOF" >> $GITHUB_ENV | |
| else | |
| echo "CHANGELOG_CONTENT=" >> $GITHUB_ENV | |
| fi | |
| # Build mcp-gateway | |
| - name: Build mcp-gateway for Linux amd64 | |
| run: | | |
| GOOS=linux GOARCH=amd64 go build -ldflags "-X main.version=${{ env.VERSION }}" -o mcp-gateway-linux-amd64 ./cmd/mcp-gateway | |
| - name: Build mcp-gateway for Linux arm64 | |
| run: | | |
| GOOS=linux GOARCH=arm64 go build -ldflags "-X main.version=${{ env.VERSION }}" -o mcp-gateway-linux-arm64 ./cmd/mcp-gateway | |
| - name: Build mcp-gateway for macOS amd64 | |
| run: | | |
| GOOS=darwin GOARCH=amd64 go build -ldflags "-X main.version=${{ env.VERSION }}" -o mcp-gateway-darwin-amd64 ./cmd/mcp-gateway | |
| - name: Build mcp-gateway for macOS arm64 | |
| run: | | |
| GOOS=darwin GOARCH=arm64 go build -ldflags "-X main.version=${{ env.VERSION }}" -o mcp-gateway-darwin-arm64 ./cmd/mcp-gateway | |
| - name: Build mcp-gateway for Windows amd64 | |
| run: | | |
| GOOS=windows GOARCH=amd64 go build -ldflags "-X main.version=${{ env.VERSION }}" -o mcp-gateway-windows-amd64.exe ./cmd/mcp-gateway | |
| # Build mock-user-svc | |
| - name: Build mock-user-svc for Linux amd64 | |
| run: | | |
| GOOS=linux GOARCH=amd64 go build -ldflags "-X main.version=${{ env.VERSION }}" -o mock-user-svc-linux-amd64 ./cmd/mock-user-svc | |
| - name: Build mock-user-svc for Linux arm64 | |
| run: | | |
| GOOS=linux GOARCH=arm64 go build -ldflags "-X main.version=${{ env.VERSION }}" -o mock-user-svc-linux-arm64 ./cmd/mock-user-svc | |
| - name: Build mock-user-svc for macOS amd64 | |
| run: | | |
| GOOS=darwin GOARCH=amd64 go build -ldflags "-X main.version=${{ env.VERSION }}" -o mock-user-svc-darwin-amd64 ./cmd/mock-user-svc | |
| - name: Build mock-user-svc for macOS arm64 | |
| run: | | |
| GOOS=darwin GOARCH=arm64 go build -ldflags "-X main.version=${{ env.VERSION }}" -o mock-user-svc-darwin-arm64 ./cmd/mock-user-svc | |
| - name: Build mock-user-svc for Windows amd64 | |
| run: | | |
| GOOS=windows GOARCH=amd64 go build -ldflags "-X main.version=${{ env.VERSION }}" -o mock-user-svc-windows-amd64.exe ./cmd/mock-user-svc | |
| # Build apiserver | |
| - name: Build apiserver for Linux amd64 | |
| run: | | |
| GOOS=linux GOARCH=amd64 go build -ldflags "-X main.version=${{ env.VERSION }}" -o apiserver-linux-amd64 ./cmd/apiserver | |
| - name: Build apiserver for Linux arm64 | |
| run: | | |
| GOOS=linux GOARCH=arm64 go build -ldflags "-X main.version=${{ env.VERSION }}" -o apiserver-linux-arm64 ./cmd/apiserver | |
| - name: Build apiserver for macOS amd64 | |
| run: | | |
| GOOS=darwin GOARCH=amd64 go build -ldflags "-X main.version=${{ env.VERSION }}" -o apiserver-darwin-amd64 ./cmd/apiserver | |
| - name: Build apiserver for macOS arm64 | |
| run: | | |
| GOOS=darwin GOARCH=arm64 go build -ldflags "-X main.version=${{ env.VERSION }}" -o apiserver-darwin-arm64 ./cmd/apiserver | |
| - name: Build apiserver for Windows amd64 | |
| run: | | |
| GOOS=windows GOARCH=amd64 go build -ldflags "-X main.version=${{ env.VERSION }}" -o apiserver-windows-amd64.exe ./cmd/apiserver | |
| # Build web | |
| - name: Install web dependencies | |
| run: | | |
| cd web | |
| npm ci | |
| - name: Build web | |
| run: | | |
| cd web | |
| VITE_API_BASE_URL=/api \ | |
| VITE_WS_BASE_URL=ws://localhost:5234/ws \ | |
| VITE_BASE_URL=/web \ | |
| VITE_MCP_GATEWAY_BASE_URL=http://localhost:5235 \ | |
| npm run build | |
| mv dist ../web-build | |
| # Create zip packages for each platform | |
| - name: Create Linux amd64 package | |
| run: | | |
| mkdir -p release/linux-amd64 | |
| # Copy binaries | |
| cp mcp-gateway-linux-amd64 release/linux-amd64/mcp-gateway | |
| cp apiserver-linux-amd64 release/linux-amd64/apiserver | |
| cp mock-user-svc-linux-amd64 release/linux-amd64/mock-user-svc | |
| # Copy configs | |
| mkdir -p release/linux-amd64/configs | |
| cp configs/apiserver.yaml release/linux-amd64/configs/ | |
| cp configs/mcp-gateway.yaml release/linux-amd64/configs/ | |
| # Create data directory and empty files | |
| mkdir -p release/linux-amd64/data | |
| touch release/linux-amd64/data/mcp-gateway.db | |
| touch release/linux-amd64/data/mcp-gateway.pid | |
| # Copy and modify .env | |
| cp .env.example release/linux-amd64/.env | |
| sed -i 's|/var/run/mcp-gateway.pid|./data/mcp-gateway.pid|g' release/linux-amd64/.env | |
| # Copy web | |
| cp -r web-build release/linux-amd64/web | |
| # Create zip | |
| cd release/linux-amd64 | |
| zip -r ../mcp-gateway-linux-amd64.zip . | |
| - name: Create Linux arm64 package | |
| run: | | |
| mkdir -p release/linux-arm64 | |
| # Copy binaries | |
| cp mcp-gateway-linux-arm64 release/linux-arm64/mcp-gateway | |
| cp apiserver-linux-arm64 release/linux-arm64/apiserver | |
| cp mock-user-svc-linux-arm64 release/linux-arm64/mock-user-svc | |
| # Copy configs | |
| mkdir -p release/linux-arm64/configs | |
| cp configs/apiserver.yaml release/linux-arm64/configs/ | |
| cp configs/mcp-gateway.yaml release/linux-arm64/configs/ | |
| # Create data directory and empty files | |
| mkdir -p release/linux-arm64/data | |
| touch release/linux-arm64/data/mcp-gateway.db | |
| touch release/linux-arm64/data/mcp-gateway.pid | |
| # Copy and modify .env | |
| cp .env.example release/linux-arm64/.env | |
| sed -i 's|/var/run/mcp-gateway.pid|./data/mcp-gateway.pid|g' release/linux-arm64/.env | |
| # Copy web | |
| cp -r web-build release/linux-arm64/web | |
| # Create zip | |
| cd release/linux-arm64 | |
| zip -r ../mcp-gateway-linux-arm64.zip . | |
| - name: Create macOS amd64 package | |
| run: | | |
| mkdir -p release/darwin-amd64 | |
| # Copy binaries | |
| cp mcp-gateway-darwin-amd64 release/darwin-amd64/mcp-gateway | |
| cp apiserver-darwin-amd64 release/darwin-amd64/apiserver | |
| cp mock-user-svc-darwin-amd64 release/darwin-amd64/mock-user-svc | |
| # Copy configs | |
| mkdir -p release/darwin-amd64/configs | |
| cp configs/apiserver.yaml release/darwin-amd64/configs/ | |
| cp configs/mcp-gateway.yaml release/darwin-amd64/configs/ | |
| # Create data directory and empty files | |
| mkdir -p release/darwin-amd64/data | |
| touch release/darwin-amd64/data/mcp-gateway.db | |
| touch release/darwin-amd64/data/mcp-gateway.pid | |
| # Copy and modify .env | |
| cp .env.example release/darwin-amd64/.env | |
| sed -i 's|/var/run/mcp-gateway.pid|./data/mcp-gateway.pid|g' release/darwin-amd64/.env | |
| # Copy web | |
| cp -r web-build release/darwin-amd64/web | |
| # Create zip | |
| cd release/darwin-amd64 | |
| zip -r ../mcp-gateway-darwin-amd64.zip . | |
| - name: Create macOS arm64 package | |
| run: | | |
| mkdir -p release/darwin-arm64 | |
| # Copy binaries | |
| cp mcp-gateway-darwin-arm64 release/darwin-arm64/mcp-gateway | |
| cp apiserver-darwin-arm64 release/darwin-arm64/apiserver | |
| cp mock-user-svc-darwin-arm64 release/darwin-arm64/mock-user-svc | |
| # Copy configs | |
| mkdir -p release/darwin-arm64/configs | |
| cp configs/apiserver.yaml release/darwin-arm64/configs/ | |
| cp configs/mcp-gateway.yaml release/darwin-arm64/configs/ | |
| # Create data directory and empty files | |
| mkdir -p release/darwin-arm64/data | |
| touch release/darwin-arm64/data/mcp-gateway.db | |
| touch release/darwin-arm64/data/mcp-gateway.pid | |
| # Copy and modify .env | |
| cp .env.example release/darwin-arm64/.env | |
| sed -i 's|/var/run/mcp-gateway.pid|./data/mcp-gateway.pid|g' release/darwin-arm64/.env | |
| # Copy web | |
| cp -r web-build release/darwin-arm64/web | |
| # Create zip | |
| cd release/darwin-arm64 | |
| zip -r ../mcp-gateway-darwin-arm64.zip . | |
| - name: Create Windows amd64 package | |
| run: | | |
| mkdir -p release/windows-amd64 | |
| # Copy binaries | |
| cp mcp-gateway-windows-amd64.exe release/windows-amd64/mcp-gateway.exe | |
| cp apiserver-windows-amd64.exe release/windows-amd64/apiserver.exe | |
| cp mock-user-svc-windows-amd64.exe release/windows-amd64/mock-user-svc.exe | |
| # Copy configs | |
| mkdir -p release/windows-amd64/configs | |
| cp configs/apiserver.yaml release/windows-amd64/configs/ | |
| cp configs/mcp-gateway.yaml release/windows-amd64/configs/ | |
| # Create data directory and empty files | |
| mkdir -p release/windows-amd64/data | |
| touch release/windows-amd64/data/mcp-gateway.db | |
| touch release/windows-amd64/data/mcp-gateway.pid | |
| # Copy and modify .env | |
| cp .env.example release/windows-amd64/.env | |
| # Windows uses a different sed command | |
| sed -i 's|/var/run/mcp-gateway.pid|./data/mcp-gateway.pid|g' release/windows-amd64/.env | |
| # Copy web | |
| cp -r web-build release/windows-amd64/web | |
| # Create zip | |
| cd release/windows-amd64 | |
| zip -r ../mcp-gateway-windows-amd64.zip . | |
| - name: Create Release | |
| id: create_release | |
| uses: softprops/action-gh-release@v1 | |
| with: | |
| files: | | |
| release/mcp-gateway-linux-amd64.zip | |
| release/mcp-gateway-linux-arm64.zip | |
| release/mcp-gateway-darwin-amd64.zip | |
| release/mcp-gateway-darwin-arm64.zip | |
| release/mcp-gateway-windows-amd64.zip | |
| draft: false | |
| prerelease: false | |
| generate_release_notes: true | |
| body: | | |
| ${{ env.CHANGELOG_CONTENT }} |