Skip to content

ci: push-model publish to CBWeb internal marketplace W-21525556#264

Merged
peternhale merged 10 commits intomainfrom
kdev/extPublishCI
Mar 25, 2026
Merged

ci: push-model publish to CBWeb internal marketplace W-21525556#264
peternhale merged 10 commits intomainfrom
kdev/extPublishCI

Conversation

@kylewalke
Copy link
Copy Markdown
Contributor

@kylewalke kylewalke commented Mar 18, 2026

What does this PR do?

Add publish-to-cbweb-marketplace job to nightly-extensions.yml so the Apex repo pushes the VSIX directly to the internal marketplace after packaging, replacing the current pull model where the marketplace repo fetches from GitHub releases.

  • Non-blocking (continue-on-error: true) — marketplace failures never fail the release workflow
  • Retries transient network errors (--retry 2 --retry-delay 5)
  • Uses GitHub Actions annotations (::error::, ::warning::) for visibility in run summaries
  • Skipped on dry-run
  • Requires repo variable MARKETPLACE_URL and secret MARKETPLACE_DEPLOY_TOKEN (already configured)

What issues does this PR fix or reference?

@W-21525556@

@kylewalke kylewalke requested a review from a team as a code owner March 18, 2026 22:24
@kylewalke kylewalke requested a review from RitamAgrawal March 18, 2026 22:24
@github-actions
Copy link
Copy Markdown

E2E Test Results Summary

Run: 221

Test Results

  • Passed: 85
  • Failed: 0
  • Errors: 0
  • Total: 85

Passing Rate by File

  • apex-hover.spec.ts/junit.xml: 100.0% (21/21 passed)
  • apex-lsp-integration.spec.ts/junit.xml: 100.0% (16/16 passed)
  • apex-goto-definition.spec.ts/junit.xml: 100.0% (29/29 passed)
  • apex-outline.spec.ts/junit.xml: 100.0% (11/11 passed)
  • apex-extension-core.spec.ts/junit.xml: 100.0% (8/8 passed)

Artifacts

View detailed test reports in the Artifacts section.

All tests passed

@jonnyhork
Copy link
Copy Markdown

jonnyhork commented Mar 19, 2026

Do you want to remove this job from the nightly workflow in the marketplace repo too?

Curious what the size of the vsix you are pushing is, are you doing any sort of pruning for desktop assets first?

@github-actions
Copy link
Copy Markdown

E2E Test Results Summary

Run: 222

Test Results

  • Passed: 85
  • Failed: 0
  • Errors: 0
  • Total: 85

Passing Rate by File

  • apex-hover.spec.ts/junit.xml: 100.0% (21/21 passed)
  • apex-lsp-integration.spec.ts/junit.xml: 100.0% (16/16 passed)
  • apex-goto-definition.spec.ts/junit.xml: 100.0% (29/29 passed)
  • apex-outline.spec.ts/junit.xml: 100.0% (11/11 passed)
  • apex-extension-core.spec.ts/junit.xml: 100.0% (8/8 passed)

Artifacts

View detailed test reports in the Artifacts section.

All tests passed

@kylewalke
Copy link
Copy Markdown
Contributor Author

kylewalke commented Mar 19, 2026

@jonnyhork

Do you want to remove this job from the nightly workflow in the marketplace repo too?

Yes, that's in the follow up to-do's after the merging of this job.

Curious what the size of the vsix you are pushing is, are you doing any sort of pruning for desktop assets first?

This job wasn't doing any of the pruning. It's taking the packaged vsix generated from the nightly build and publishing it to the internal marketplace. Currently the pruning is done after the fact in the cbweb sync job when it creates the dist, right? Did it need to happen higher up the chain due to the 30s timeout limitation you were mentioning earlier?

@github-actions
Copy link
Copy Markdown

E2E Test Results Summary

Run: 224

Test Results

  • Passed: 85
  • Failed: 0
  • Errors: 0
  • Total: 85

Passing Rate by File

  • apex-hover.spec.ts/junit.xml: 100.0% (21/21 passed)
  • apex-lsp-integration.spec.ts/junit.xml: 100.0% (16/16 passed)
  • apex-goto-definition.spec.ts/junit.xml: 100.0% (29/29 passed)
  • apex-outline.spec.ts/junit.xml: 100.0% (11/11 passed)
  • apex-extension-core.spec.ts/junit.xml: 100.0% (8/8 passed)

Artifacts

View detailed test reports in the Artifacts section.

All tests passed

@github-actions
Copy link
Copy Markdown

E2E Test Results Summary

Run: 240

Test Results

  • Passed: 85
  • Failed: 0
  • Errors: 0
  • Total: 85

Passing Rate by File

  • apex-hover.spec.ts/junit.xml: 100.0% (21/21 passed)
  • apex-lsp-integration.spec.ts/junit.xml: 100.0% (16/16 passed)
  • apex-goto-definition.spec.ts/junit.xml: 100.0% (29/29 passed)
  • apex-outline.spec.ts/junit.xml: 100.0% (11/11 passed)
  • apex-extension-core.spec.ts/junit.xml: 100.0% (8/8 passed)

Artifacts

View detailed test reports in the Artifacts section.

All tests passed

Build a separate web-targeted VSIX with node bundles and source maps
stripped, reducing size from ~45MB to ~8MB for Heroku upload limits.
Add dry-run guard to create-github-releases job.

Made-with: Cursor
@github-actions
Copy link
Copy Markdown

E2E Test Results Summary

Run: 241

Test Results

  • Passed: 85
  • Failed: 0
  • Errors: 0
  • Total: 85

Passing Rate by File

  • apex-hover.spec.ts/junit.xml: 100.0% (21/21 passed)
  • apex-lsp-integration.spec.ts/junit.xml: 100.0% (16/16 passed)
  • apex-goto-definition.spec.ts/junit.xml: 100.0% (29/29 passed)
  • apex-outline.spec.ts/junit.xml: 100.0% (11/11 passed)
  • apex-extension-core.spec.ts/junit.xml: 100.0% (8/8 passed)

Artifacts

View detailed test reports in the Artifacts section.

All tests passed

@github-actions
Copy link
Copy Markdown

E2E Test Results Summary

Run: 268

Test Results

  • Passed: 85
  • Failed: 0
  • Errors: 0
  • Total: 85

Passing Rate by File

  • apex-hover.spec.ts/junit.xml: 100.0% (21/21 passed)
  • apex-lsp-integration.spec.ts/junit.xml: 100.0% (16/16 passed)
  • apex-goto-definition.spec.ts/junit.xml: 100.0% (29/29 passed)
  • apex-outline.spec.ts/junit.xml: 100.0% (11/11 passed)
  • apex-extension-core.spec.ts/junit.xml: 100.0% (8/8 passed)

Artifacts

View detailed test reports in the Artifacts section.

All tests passed

Copy link
Copy Markdown

@jonnyhork jonnyhork left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, so you are planning to have two sets of vsix files or is this only the case when pushing to the internal marketplace?

I looked for a CI run as an example but couldn't find one.

@jonnyhork
Copy link
Copy Markdown

jonnyhork commented Mar 23, 2026

This job wasn't doing any of the pruning. It's taking the packaged vsix generated from the nightly build and publishing it to the internal marketplace. Currently the pruning is done after the fact in the cbweb sync job when it creates the dist, right? Did it need to happen higher up the chain due to the 30s timeout limitation you were mentioning earlier?

@kylewalke Maybe you already realized this but you are crossing streams here.

Currently the pruning is done after the fact in the cbweb sync job when it creates the dist, right?

yes when bundling CBW the dist does do some pruning after is pulls the VSIX from MS marketplace. I am actually working on refactoring this now, should have no impact on you.
BUT
Heroku request time-outs is only a concern with the internal marketplace, not with CBW, to totally different repos and workflows (for now). So if you do in fact want to push to the internal marketplace then yes size matters, otherwise we let the marketplace repo to the pruning.

needs.package.result == 'success' &&
needs.determine-changes.outputs.selected-extensions != '' &&
github.event_name != 'pull_request' &&
(inputs.dry-run != 'true' && github.event.inputs.dry-run != 'true')
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@kylewalke please revert the check here for dry-run.

The script that is run is passed the value for dry-run, so it c an do everything in the script, except the final action.

continue-on-error: true
if: >-
needs.package.result == 'success' &&
(inputs.dry-run != 'true' && github.event.inputs.dry-run != 'true')
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We want all the steps to be exercised, except for the mutating action. Those actions should be guarded with dry-run.

npx vsce package --target web --no-dependencies
fi

WEB_VSIX=$(find . -maxdepth 1 -name "*-web-*.vsix" | head -1)
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Isn't this simply results of package:packages.vsix.size() - web.vsix.siae()?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's just getting the web vsix name. No size calc.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The line I commented on, ok, but what follows seems relevant to my comment, yes?

Copy link
Copy Markdown
Contributor Author

@kylewalke kylewalke Mar 25, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah, now I see what you're saying, the calculation in the echo statement. Yes, essentially that is what the difference is. The statement itself is just window dressing so if you want I can remove it as well?

path: |
packages/**/*.vsix
!packages/**/*-web-*.vsix
packages/**/*.vsix.md5
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should exclude the md5 calculated for the web vsix in step "Generate MD5 checksums"

packages/checksums.json
retention-days: 5

- name: Upload web VSIX artifact
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why have a distinct artifact upload when it could be done via step "Upload VSIX artifacts"

@peternhale peternhale removed the request for review from RitamAgrawal March 24, 2026 12:19
@github-actions
Copy link
Copy Markdown

E2E Test Results Summary

Run: 280

Test Results

  • Passed: 85
  • Failed: 0
  • Errors: 0
  • Total: 85

Passing Rate by File

  • apex-hover.spec.ts/junit.xml: 100.0% (21/21 passed)
  • apex-lsp-integration.spec.ts/junit.xml: 100.0% (16/16 passed)
  • apex-goto-definition.spec.ts/junit.xml: 100.0% (29/29 passed)
  • apex-outline.spec.ts/junit.xml: 100.0% (11/11 passed)
  • apex-extension-core.spec.ts/junit.xml: 100.0% (8/8 passed)

Artifacts

View detailed test reports in the Artifacts section.

All tests passed

@github-actions
Copy link
Copy Markdown

E2E Test Results Summary

Run: 286

Test Results

  • Passed: 85
  • Failed: 0
  • Errors: 0
  • Total: 85

Passing Rate by File

  • apex-hover.spec.ts/junit.xml: 100.0% (21/21 passed)
  • apex-lsp-integration.spec.ts/junit.xml: 100.0% (16/16 passed)
  • apex-goto-definition.spec.ts/junit.xml: 100.0% (29/29 passed)
  • apex-outline.spec.ts/junit.xml: 100.0% (11/11 passed)
  • apex-extension-core.spec.ts/junit.xml: 100.0% (8/8 passed)

Artifacts

View detailed test reports in the Artifacts section.

All tests passed

@github-actions
Copy link
Copy Markdown

E2E Test Results Summary

Run: 289

Test Results

  • Passed: 85
  • Failed: 0
  • Errors: 0
  • Total: 85

Passing Rate by File

  • apex-hover.spec.ts/junit.xml: 100.0% (21/21 passed)
  • apex-lsp-integration.spec.ts/junit.xml: 100.0% (16/16 passed)
  • apex-goto-definition.spec.ts/junit.xml: 100.0% (29/29 passed)
  • apex-outline.spec.ts/junit.xml: 100.0% (11/11 passed)
  • apex-extension-core.spec.ts/junit.xml: 100.0% (8/8 passed)

Artifacts

View detailed test reports in the Artifacts section.

All tests passed

@github-actions
Copy link
Copy Markdown

E2E Test Results Summary

Run: 292

Test Results

  • Passed: 85
  • Failed: 0
  • Errors: 0
  • Total: 85

Passing Rate by File

  • apex-hover.spec.ts/junit.xml: 100.0% (21/21 passed)
  • apex-goto-definition.spec.ts/junit.xml: 100.0% (29/29 passed)
  • apex-outline.spec.ts/junit.xml: 100.0% (11/11 passed)
  • apex-extension-core.spec.ts/junit.xml: 100.0% (8/8 passed)
  • apex-lsp-integration.spec.ts/junit.xml: 100.0% (16/16 passed)

Artifacts

View detailed test reports in the Artifacts section.

All tests passed

@kylewalke kylewalke requested a review from peternhale March 25, 2026 16:54
@peternhale peternhale merged commit c386a3f into main Mar 25, 2026
21 checks passed
@peternhale peternhale deleted the kdev/extPublishCI branch March 25, 2026 21:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants