marketplace-publish.yml 3.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. name: Publish Extension
  2. on:
  3. pull_request:
  4. types: [closed]
  5. workflow_dispatch:
  6. env:
  7. GIT_REF: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || 'main' }}
  8. NODE_VERSION: 20.18.1
  9. jobs:
  10. publish-extension:
  11. runs-on: ubuntu-latest
  12. permissions:
  13. contents: write # Required for pushing tags.
  14. if: >
  15. ( github.event_name == 'pull_request' &&
  16. github.event.pull_request.base.ref == 'main' &&
  17. contains(github.event.pull_request.title, 'Changeset version bump') ) ||
  18. github.event_name == 'workflow_dispatch'
  19. steps:
  20. - uses: actions/checkout@v4
  21. with:
  22. ref: ${{ env.GIT_REF }}
  23. - uses: actions/setup-node@v4
  24. with:
  25. node-version: ${{ env.NODE_VERSION }}
  26. - run: |
  27. git config user.name "github-actions[bot]"
  28. git config user.email "github-actions[bot]@users.noreply.github.com"
  29. - name: Install Dependencies
  30. run: |
  31. npm install -g vsce ovsx
  32. npm run install:all
  33. - name: Create .env file
  34. run: echo "POSTHOG_API_KEY=${{ secrets.POSTHOG_API_KEY }}" >> .env
  35. - name: Package Extension
  36. run: |
  37. current_package_version=$(node -p "require('./package.json').version")
  38. npm run vsix
  39. package=$(unzip -l bin/roo-cline-${current_package_version}.vsix)
  40. echo "$package"
  41. echo "$package" | grep -q "dist/extension.js" || exit 1
  42. echo "$package" | grep -q "extension/webview-ui/build/assets/index.js" || exit 1
  43. echo "$package" | grep -q "extension/node_modules/@vscode/codicons/dist/codicon.ttf" || exit 1
  44. echo "$package" | grep -q ".env" || exit 1
  45. - name: Create and Push Git Tag
  46. run: |
  47. current_package_version=$(node -p "require('./package.json').version")
  48. git tag -a "v${current_package_version}" -m "Release v${current_package_version}"
  49. git push origin "v${current_package_version}"
  50. echo "Successfully created and pushed git tag v${current_package_version}"
  51. - name: Publish Extension
  52. env:
  53. VSCE_PAT: ${{ secrets.VSCE_PAT }}
  54. OVSX_PAT: ${{ secrets.OVSX_PAT }}
  55. run: |
  56. current_package_version=$(node -p "require('./package.json').version")
  57. npm run publish:marketplace
  58. echo "Successfully published version $current_package_version to VS Code Marketplace"
  59. - name: Create GitHub Release
  60. env:
  61. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  62. run: |
  63. current_package_version=$(node -p "require('./package.json').version")
  64. # Extract changelog for current version
  65. echo "Extracting changelog for version ${current_package_version}"
  66. changelog_content=$(sed -n "/## \\[${current_package_version}\\]/,/## \\[/p" CHANGELOG.md | sed '$d')
  67. # If changelog extraction failed, use a default message
  68. if [ -z "$changelog_content" ]; then
  69. echo "Warning: No changelog section found for version ${current_package_version}"
  70. changelog_content="Release v${current_package_version}"
  71. else
  72. echo "Found changelog section for version ${current_package_version}"
  73. fi
  74. # Create release with changelog content
  75. gh release create "v${current_package_version}" \
  76. --title "Release v${current_package_version}" \
  77. --notes "$changelog_content" \
  78. --target ${{ env.GIT_REF }} \
  79. bin/roo-cline-${current_package_version}.vsix
  80. echo "Successfully created GitHub Release v${current_package_version}"