<!-- Provide a brief summary of your changes --> ## Motivation and Context <!-- Why is this change needed? What problem does it solve? --> The following PR introduces Goreleaser for the releases of the registry server and the publisher CLI. **Details:** - Builds registry and publisher binaries for Linux, macOS, and Windows (amd64 + arm64) - Leverage GitHub's release process by creating releases directly from GitHub's interface - Added .goreleaser.yaml configuration - New .github/workflows/release.yml workflow triggered by GitHub releases - Updated Docker tagging in deploy workflow (:latest and :semver(the tag) for releases, :main-YYYYMMDD-sha for testing/development) - Consolidated version handling in main.go files - Added release documentation ## How Has This Been Tested? <!-- Have you tested this in a real application? Which scenarios were tested? --> Locally (but we have to test it by creating a release, i.e. v0.0.1 once this gets merged) ## Breaking Changes <!-- Will users need to update their code or configurations? --> Yes, the notion of `latest` for the container image is now different ## Types of changes <!-- What types of changes does your code introduce? Put an `x` in all the boxes that apply: --> - [ ] Bug fix (non-breaking change which fixes an issue) - [x] New feature (non-breaking change which adds functionality) - [ ] Breaking change (fix or feature that would cause existing functionality to change) - [ ] Documentation update ## Checklist <!-- Go over all the following points, and put an `x` in all the boxes that apply. --> - [ ] I have read the [MCP Documentation](https://modelcontextprotocol.io) - [ ] My code follows the repository's style guidelines - [ ] New and existing tests pass locally - [ ] I have added appropriate error handling - [ ] I have added or updated documentation as needed ## Additional context <!-- Add any other context, implementation notes, or design decisions --> Related to #358 --------- Signed-off-by: Radoslav Dimitrov <radoslav@stacklok.com>
70 lines
No EOL
1.9 KiB
Go
70 lines
No EOL
1.9 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
"os"
|
|
|
|
"github.com/modelcontextprotocol/registry/cmd/publisher/commands"
|
|
)
|
|
|
|
// Version info for the MCP Publisher tool
|
|
// These variables are injected at build time via ldflags by goreleaser
|
|
var (
|
|
// Version is the current version of the MCP Publisher tool
|
|
Version = "dev"
|
|
|
|
// BuildTime is the time at which the binary was built
|
|
BuildTime = "unknown"
|
|
|
|
// GitCommit is the git commit that was compiled
|
|
GitCommit = "unknown"
|
|
)
|
|
|
|
func main() {
|
|
if len(os.Args) < 2 {
|
|
printUsage()
|
|
os.Exit(1)
|
|
}
|
|
|
|
var err error
|
|
switch os.Args[1] {
|
|
case "init":
|
|
err = commands.InitCommand()
|
|
case "login":
|
|
err = commands.LoginCommand(os.Args[2:])
|
|
case "logout":
|
|
err = commands.LogoutCommand()
|
|
case "publish":
|
|
err = commands.PublishCommand(os.Args[2:])
|
|
case "--version", "-v", "version":
|
|
log.Printf("mcp-publisher %s (commit: %s, built: %s)", Version, GitCommit, BuildTime)
|
|
return
|
|
case "--help", "-h", "help":
|
|
printUsage()
|
|
default:
|
|
fmt.Fprintf(os.Stderr, "Unknown command: %s\n\n", os.Args[1])
|
|
printUsage()
|
|
os.Exit(1)
|
|
}
|
|
|
|
if err != nil {
|
|
fmt.Fprintf(os.Stderr, "Error: %v\n", err)
|
|
os.Exit(1)
|
|
}
|
|
}
|
|
|
|
func printUsage() {
|
|
_, _ = fmt.Fprintln(os.Stdout, "MCP Registry Publisher Tool")
|
|
_, _ = fmt.Fprintln(os.Stdout)
|
|
_, _ = fmt.Fprintln(os.Stdout, "Usage:")
|
|
_, _ = fmt.Fprintln(os.Stdout, " mcp-publisher <command> [arguments]")
|
|
_, _ = fmt.Fprintln(os.Stdout)
|
|
_, _ = fmt.Fprintln(os.Stdout, "Commands:")
|
|
_, _ = fmt.Fprintln(os.Stdout, " init Create a server.json file template")
|
|
_, _ = fmt.Fprintln(os.Stdout, " login Authenticate with the registry")
|
|
_, _ = fmt.Fprintln(os.Stdout, " logout Clear saved authentication")
|
|
_, _ = fmt.Fprintln(os.Stdout, " publish Publish server.json to the registry")
|
|
_, _ = fmt.Fprintln(os.Stdout)
|
|
_, _ = fmt.Fprintln(os.Stdout, "Use 'mcp-publisher <command> --help' for more information about a command.")
|
|
} |