release-openapi-mcp.yml 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. name: Release OpenAPI MCP
  2. on:
  3. push:
  4. branches:
  5. - "**"
  6. tags:
  7. - "v*.*.*"
  8. paths-ignore:
  9. - "**/*.md"
  10. - "**/*.yaml"
  11. pull_request:
  12. branches:
  13. - "**"
  14. paths-ignore:
  15. - "**/*.md"
  16. - "**/*.yaml"
  17. jobs:
  18. release-openapi-mcp:
  19. name: Release OpenAPI MCP
  20. runs-on: ubuntu-24.04
  21. permissions:
  22. contents: write
  23. strategy:
  24. fail-fast: false
  25. matrix:
  26. targets:
  27. - GOOS: linux
  28. GOARCH: arm64
  29. - GOOS: linux
  30. GOARCH: amd64
  31. - GOOS: darwin
  32. GOARCH: arm64
  33. - GOOS: darwin
  34. GOARCH: amd64
  35. - GOOS: windows
  36. GOARCH: amd64
  37. EXT: .exe
  38. - GOOS: windows
  39. GOARCH: arm64
  40. EXT: .exe
  41. steps:
  42. - name: Checkout
  43. uses: actions/checkout@v4
  44. - name: Setup Go
  45. uses: actions/setup-go@v5
  46. with:
  47. go-version-file: "openapi-mcp/go.mod"
  48. - name: Build
  49. working-directory: openapi-mcp
  50. run: |
  51. export GOOS=${{ matrix.targets.GOOS }}
  52. export GOARCH=${{ matrix.targets.GOARCH }}
  53. go build -trimpath -tags "jsoniter" -ldflags "-s -w" -o openapi-mcp-${{ matrix.targets.GOOS }}-${{ matrix.targets.GOARCH }}${{ matrix.targets.EXT }}
  54. - name: Get release meta
  55. if: ${{ startsWith(github.ref, 'refs/tags/') }}
  56. id: release_meta
  57. run: |
  58. version=${GITHUB_REF/refs\/tags\/v/}
  59. echo "version: ${version}"
  60. prerelease=$(echo ${version} | grep -E 'rc|beta|alpha' || true)
  61. release_name="Version ${version}"
  62. echo "release_name: ${release_name}"
  63. if [ -n "${prerelease}" ]; then
  64. prerelease=true
  65. release_name="${release_name} (Prerelease)"
  66. fi
  67. tag_name="v${version}"
  68. echo "prerelease: ${prerelease}"
  69. echo "tag_name: ${tag_name}"
  70. echo "PRERELEASE=${prerelease}" >> $GITHUB_OUTPUT
  71. echo "RELEASE_NAME=${release_name}" >> $GITHUB_OUTPUT
  72. echo "TAG_NAME=${tag_name}" >> $GITHUB_OUTPUT
  73. - name: Release
  74. uses: softprops/action-gh-release@v2
  75. if: ${{ startsWith(github.ref, 'refs/tags/') }}
  76. with:
  77. token: ${{ secrets.GITHUB_TOKEN }}
  78. draft: false
  79. prerelease: ${{ steps.release_meta.outputs.PRERELEASE }}
  80. append_body: false
  81. fail_on_unmatched_files: true
  82. name: ${{ steps.release_meta.outputs.RELEASE_NAME }}
  83. tag_name: ${{ steps.release_meta.outputs.TAG_NAME }}
  84. files: |
  85. openapi-mcp/openapi-mcp-${{ matrix.targets.GOOS }}-${{ matrix.targets.GOARCH }}${{ matrix.targets.EXT }}