csharpfritz / csharpfritz/SquadUI

VS 2026: Separate build and publish CI/CD pipelines

Open
#46 0 comments 0 reactions 0 assignees View on GitHub
deferred enhancement vs2026
Dominant language
TypeScript
Stars
18
Forks
3
PR merge metrics
No merged PRs in 30d

Description

## Summary

Create independent CI/CD pipelines for the Visual Studio 2026 extension. The VS 2026 extension (C#/.NET/VSIX) must have completely separate build and publish workflows from the VS Code extension (TypeScript/.vsix).

## Motivation

- Different languages and build systems (dotnet build vs npm)
- Different package formats (VSIX for VS Marketplace vs .vsix for VS Code Marketplace)
- Different marketplaces and publish tooling
- Independent release cadences — one extension shipping shouldn't block the other
- Per user directive from Jeffrey T. Fritz

## Acceptance Criteria

- [ ] GitHub Actions workflow for **building** the VS 2026 extension on PR and push
- Runs `dotnet build` / `dotnet test` for the `vs2026/` project
- Only triggers on changes to `vs2026/**` paths
- Matrix: Windows (required), optionally Linux for service-layer unit tests
- [ ] GitHub Actions workflow for **publishing** the VS 2026 extension
- Triggers on tag push (e.g., `vs2026-v*`) or manual dispatch
- Builds release VSIX package
- Publishes to Visual Studio Marketplace
- Creates GitHub release with VSIX artifact attached
- [ ] Existing VS Code CI workflows remain untouched
- [ ] Path filters ensure VS Code changes don't trigger VS 2026 builds and vice versa
- [ ] Build status badges in README for both extensions

## Implementation Details

### Build Workflow (`.github/workflows/vs2026-build.yml`)
- **Trigger:** `push` and `pull_request` on `vs2026/**` paths
- **Steps:** checkout → setup-dotnet → restore → build → test → upload VSIX artifact
- **Matrix:** `os: [windows-latest]` (VS extensions require Windows for full VSIX packaging)

### Publish Workflow (`.github/workflows/vs2026-publish.yml`)
- **Trigger:** tag `vs2026-v*` or `workflow_dispatch`
- **Steps:** checkout → setup-dotnet → build Release → package VSIX → publish to VS Marketplace → create GitHub release
- **Secrets needed:** `VS_MARKETPLACE_PAT` (separate from any VS Code marketplace token)

### Path Isolation
```yaml
# vs2026-build.yml
on:
push:
paths: ['vs2026/**']
pull_request:
paths: ['vs2026/**']

# Existing VS Code workflows should add path exclusions if not already filtered
```

## Dependencies

- #43 (VS 2026 project scaffold must exist before CI can build it)

## Size: M

## Routing

Assigned to **squad:livingston** (DevOps/CI)

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.