mirror of
https://github.com/RooVetGit/Roo-Code.git
synced 2026-09-07 08:26:51 +00:00
- Remove unused "Determine VSIX filename" step whose outputs were never consumed - Replace listComments with github.paginate to handle PRs with 30+ comments
138 lines
4.3 KiB
YAML
138 lines
4.3 KiB
YAML
name: PR Build VSIX
|
|
|
|
on:
|
|
pull_request:
|
|
types: [opened, reopened, ready_for_review, synchronize]
|
|
branches: [main]
|
|
|
|
# Cancel in-flight builds for the same PR when a new push arrives.
|
|
concurrency:
|
|
group: pr-build-${{ github.event.pull_request.number }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
build-regular:
|
|
name: Build Regular VSIX
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Setup Node.js and pnpm
|
|
uses: ./.github/actions/setup-node-pnpm
|
|
with:
|
|
install-args: '--frozen-lockfile'
|
|
|
|
- name: Build VSIX
|
|
run: pnpm vsix
|
|
|
|
- name: Upload Regular VSIX
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: roo-code
|
|
path: bin/*.vsix
|
|
retention-days: 14
|
|
|
|
build-nightly:
|
|
name: Build Nightly VSIX
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- name: Setup Node.js and pnpm
|
|
uses: ./.github/actions/setup-node-pnpm
|
|
with:
|
|
install-args: '--frozen-lockfile'
|
|
|
|
- name: Forge numeric Nightly version
|
|
id: version
|
|
env:
|
|
RUN_NUMBER: ${{ github.run_number }}
|
|
run: echo "number=$(( 5500 + ${RUN_NUMBER} ))" >> "$GITHUB_OUTPUT"
|
|
|
|
- name: Patch package.json version
|
|
env:
|
|
VERSION_NUMBER: ${{ steps.version.outputs.number }}
|
|
run: |
|
|
node <<'EOF'
|
|
const fs = require('fs');
|
|
const path = require('path');
|
|
const pkgPath = path.join(__dirname, 'apps', 'vscode-nightly', 'package.nightly.json');
|
|
const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf8'));
|
|
const [maj, min] = pkg.version.split('.');
|
|
pkg.version = `${maj}.${min}.${process.env.VERSION_NUMBER}`;
|
|
fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2));
|
|
console.log(`Nightly version set to ${pkg.version}`);
|
|
EOF
|
|
|
|
- name: Build Nightly VSIX
|
|
run: pnpm vsix:nightly
|
|
|
|
- name: Upload Nightly VSIX
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: roo-code-nightly
|
|
path: bin/*.vsix
|
|
retention-days: 14
|
|
|
|
comment:
|
|
name: Post PR Comment
|
|
runs-on: ubuntu-latest
|
|
needs: [build-regular, build-nightly]
|
|
permissions:
|
|
pull-requests: write
|
|
steps:
|
|
- name: Post or update PR comment with build links
|
|
uses: actions/github-script@v7
|
|
with:
|
|
script: |
|
|
const runUrl = `${context.serverUrl}/${context.repo.owner}/${context.repo.repo}/actions/runs/${context.runId}`;
|
|
const sha = context.payload.pull_request.head.sha.substring(0, 7);
|
|
|
|
const body = [
|
|
`### VSIX Build Artifacts`,
|
|
``,
|
|
`Build artifacts for commit \`${sha}\` are ready for review:`,
|
|
``,
|
|
`| Variant | Artifact |`,
|
|
`|---------|----------|`,
|
|
`| **Regular** | \`roo-code\` |`,
|
|
`| **Nightly** | \`roo-code-nightly\` |`,
|
|
``,
|
|
`[Download artifacts from this workflow run](${runUrl}#artifacts)`,
|
|
``,
|
|
`> Install with: \`code --install-extension path/to/file.vsix\``,
|
|
].join('\n');
|
|
|
|
// Look for an existing comment from this workflow so we update
|
|
// instead of creating a new one on every push.
|
|
const marker = '### VSIX Build Artifacts';
|
|
const comments = await github.paginate(github.rest.issues.listComments, {
|
|
owner: context.repo.owner,
|
|
repo: context.repo.repo,
|
|
issue_number: context.issue.number,
|
|
per_page: 100,
|
|
});
|
|
|
|
const existing = comments.find(
|
|
(c) => c.user.type === 'Bot' && c.body.startsWith(marker),
|
|
);
|
|
|
|
if (existing) {
|
|
await github.rest.issues.updateComment({
|
|
owner: context.repo.owner,
|
|
repo: context.repo.repo,
|
|
comment_id: existing.id,
|
|
body,
|
|
});
|
|
} else {
|
|
await github.rest.issues.createComment({
|
|
owner: context.repo.owner,
|
|
repo: context.repo.repo,
|
|
issue_number: context.issue.number,
|
|
body,
|
|
});
|
|
}
|