Skip to content

build(server): remove unused GitSSH sidecar - #28204

Open
Alex Villarreal (alexvy86) wants to merge 4 commits into
microsoft:mainfrom
alexvy86:scaling-memory
Open

Alex Villarreal (alexvy86) wants to merge 4 commits into
microsoft:mainfrom
alexvy86:scaling-memory

Conversation

@alexvy86

Copy link
Copy Markdown
Contributor

Description

server/gitssh was a git-over-SSH sidecar container (Alpine + git + OpenSSH) that shared GitRest's persistence volume. No application code opens an SSH/git-protocol connection to it: GitRest reads/writes document snapshots directly through isomorphic-git and the filesystem, not over SSH. Its only real use was a documented manual workflow for cloning snapshots with a native git client to inspect history locally.

There was a prior "Remove everything gitssh" commit (Jan 2025) that never made it into main and predates several since-added CI/build changes to the package, so this re-derives the removal against current main.

This removes the package and its dedicated server-gitssh build pipeline, unwires the sidecar from the docker-compose files (server/docker-compose.yml, server/docker-compose.dev.yml, server/gitrest/docker-compose.yml, server/routerlicious/docker-compose.yml), the Historian Helm chart, and the test-real-service pipeline, and updates the routerlicious README to use docker compose exec/cp against GitRest's mounted volume instead of git clone ssh://...:3022/....

Reviewer Guidance

The review process is outlined in the pull request guidelines.

  • tools/pipelines/templates/build-docker-service.yml keeps its tagName == 'gitssh' skip-branch mechanism (now always-true / dead) rather than restructuring the shared template; flagging as optional follow-up cleanup, not required here.
  • ff_internal's selfhost docker-compose files still reference server/gitssh and will need a follow-up there once this merges.

server/gitssh provided a git-over-SSH sidecar container (Alpine + git +
OpenSSH) alongside GitRest, sharing its persistence volume. No application
code opens an SSH/git-protocol connection to it: GitRest reads/writes
document snapshots directly through isomorphic-git and the filesystem, not
over SSH. The only real use was a documented manual workflow for cloning
snapshots with a native git client to inspect history locally.

This removes the package and its dedicated `server-gitssh` build pipeline,
unwires the sidecar from the docker-compose files, the Historian Helm
chart, and the real-service test pipeline, and updates the routerlicious
README to use `docker compose exec`/`cp` against GitRest's mounted volume
instead of `git clone ssh://...:3022/...`.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot AI lite review requested due to automatic review settings September 11, 2026 17:03
@github-actions github-actions Bot added area: server Server related issues (routerlicious) area: tools area: build Build related issues area: repo Repo related work area: website base: main PRs targeted against main branch labels Sep 11, 2026
@github-actions

github-actions Bot commented Sep 11, 2026

Copy link
Copy Markdown
Contributor

Hi! Thank you for opening this PR. Want me to review it?

Based on the diff (263 lines, 21 files), I've queued these reviewers:

  • Correctness — logic errors, race conditions, lifecycle issues
  • Security — vulnerabilities, secret exposure, injection
  • API Compatibility — breaking changes, release tags, type design
  • Performance — algorithmic regressions, memory leaks
  • Testing — coverage gaps, hollow tests

How this works

  • Adjust the reviewer set by ticking/unticking boxes above. Reviewer toggles alone don't trigger anything.

  • Tick Start review below to dispatch the review fleet.

  • After review finishes, tick Start review again to request another run — it auto-resets after each dispatch.

  • This comment updates as new commits land; your reviewer selections are preserved.

  • Start review

Copilot AI left a comment

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.

🟡 Changes recommended

Unresolved findings include a stale Helm Service port and outdated SSH references in documentation and container configuration.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Pull request overview

Removes the obsolete GitSSH sidecar and updates related build, deployment, testing, and documentation workflows.

Changes:

  • Deletes the GitSSH image, package, and dedicated pipeline.
  • Removes GitSSH wiring from Compose, Helm, and test-service configurations.
  • Replaces SSH-based snapshot inspection instructions.
File summaries
File Summary
tools/pipelines/test-real-service.yml Removes GitSSH pipeline resources and image references.
tools/pipelines/templates/include-test-real-service.yml Removes GitSSH parameters and environment wiring.
tools/pipelines/templates/build-docker-service.yml Retains the obsolete GitSSH skip branch.
tools/pipelines/server-gitssh.yml Deletes the GitSSH build pipeline.
server/routerlicious/README.md Updates snapshot inspection instructions.
server/routerlicious/docker-compose.yml Removes the GitSSH service.
server/README.md Removes GitSSH documentation.
server/gitssh/README.md Deletes the obsolete README.
server/gitssh/entrypoint.sh Deletes the obsolete entrypoint.
server/gitssh/Dockerfile Deletes the obsolete container definition.
server/gitrest/docker-compose.yml Removes the GitSSH service.
server/docker-compose.yml Removes the GitSSH service.
server/docker-compose.dev.yml Removes the development GitSSH service.
server/charts/historian/values.yaml Removes GitSSH image values.
server/charts/historian/templates/gitrest-deployment.yaml Removes the GitSSH sidecar.
server/charts/historian/templates/_helpers.tpl Removes the GitSSH naming helper.
.claude/skills/trigger-pipelines-for-copilot-pr/SKILL.md Removes GitSSH pipeline trigger instructions.
Review details

Suppressed comments (3)

server/README.md:14

  • The sidecar removal leaves stale SSH-based guidance in server/gitrest/README.md:74 (the submodule example writes ssh://git@localhost:3022/...) and server/gitrest/Dockerfile:107-109 (it describes sharing a volume with an SSH service). Those references now point to the deleted service; update or remove them in this change.
    server/routerlicious/README.md:235
  • This replacement workflow assumes the GitRest container has the native git CLI, but server/gitrest/Dockerfile uses node:22.22.2-bookworm-slim without installing git, and the application only depends on isomorphic-git. docker compose exec gitrest git clone ... will therefore fail in the published image; either add the CLI to that image or make the host-side docker compose cp flow the supported option.
docker compose exec gitrest git clone /home/node/documents/fluid/fluid /tmp/fluid
docker compose exec gitrest sh -c "cd /tmp/fluid && git checkout <document id>"

server/routerlicious/README.md:243

  • The copied path is the bare repository created by isomorphic-git.init({ bare: true }) (server/gitrest/packages/gitrest-base/src/utils/isomorphicgitManager.ts:412-416). Copying it directly to ./fluid and running git checkout there will fail because a bare repository has no work tree; clone the copied bare repository into a second host directory before checking out the document revision.
docker compose cp gitrest:/home/node/documents/fluid/fluid ./fluid
cd fluid
git checkout <document id>
  • Files reviewed: 17/17 changed files
  • Comments generated: 3
  • Review effort level: Lite

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread server/charts/historian/templates/gitrest-deployment.yaml
Comment thread server/routerlicious/README.md Outdated
Comment thread tools/pipelines/templates/build-docker-service.yml
- Remove the now-dead ssh Service port from the Historian gitrest-service Helm template.
- Update gitrest README/Dockerfile comments that still described the removed ssh sidecar.
- Fix the routerlicious README snapshot-inspection instructions: the GitRest image has no git
  CLI (only isomorphic-git), and the mounted repositories are bare, so 'docker compose exec ...
  git clone' and 'git checkout' directly on the copied bare repo would both fail. Copy the bare
  repo out with 'docker compose cp' then 'git clone' it locally to get a working tree.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@github-actions

github-actions Bot commented Sep 11, 2026

Copy link
Copy Markdown
Contributor

Fleet Review — Clean

No issues found across the reviewer fleet for this run.

View run

Comment thread server/gitrest/README.md
Comment thread server/gitrest/Dockerfile
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot AI left a comment

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.

🟢 Approval recommended

No unresolved review comments remain, and the readiness assessments support approval.

Review details
  • Files reviewed: 20/20 changed files
  • Comments generated: 0 new
  • Review effort level: Lite

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@alexvy86

Copy link
Copy Markdown
Contributor Author

[Agent-generated]

Updated server/charts/historian/README.md to describe GitRest as REST-only now that the GitSSH sidecar has been removed.

We are deliberately not adding a release or migration notice. Based on the project context, Git-over-SSH was never part of an explicit consumer contract, and these server images are not meaningfully consumed by external users. Existing GitRest REST operations and repository data are unchanged, so a release-facing migration notice would add noise without providing a useful migration path.

@github-actions

Copy link
Copy Markdown
Contributor

🔗 No broken links found! ✅

Your attention to detail is admirable.

linkcheck output

$ start-server-and-test "npm run serve -- --host 127.0.0.1 --no-open" http://127.0.0.1:3000 check-links
1: starting server using command "npm run serve -- --host 127.0.0.1 --no-open"
and when url "[ 'http://127.0.0.1:3000' ]" is responding with HTTP status code 200
running tests using command "npm run check-links"


> fluid-framework-website@0.0.0 serve
> docusaurus serve --host 127.0.0.1 --no-open

[SUCCESS] Serving "build" directory at: http://127.0.0.1:3000/

> fluid-framework-website@0.0.0 check-links
> linkcheck http://127.0.0.1:3000 --skip-file skipped-urls.txt

Crawling...

Stats:
  351523 links
    2064 destination URLs
    2323 URLs ignored
       0 warnings
       0 errors


@anthony-murphy

Copy link
Copy Markdown
Contributor

Deep Review

Reviewed commit 536a080 on 2026-09-11.

Readiness: 10/10 — READY

Ready for sign-off. The GitSSH sidecar is removed coherently across Compose, Helm, CI, automation, and documentation while GitRest's storage volume and REST data path remain intact.

Context for Reviewers

  • GitRest remains the storage and inspection boundary: the Compose and Helm changes retain its data volume, and the documented inspection workflow now copies the bare repository from GitRest for a host-side clone.
  • GitSSH was infrastructure plumbing for manual Git-over-SSH access, not an application dependency; Routerlicious and Historian continue using GitRest's REST interface.
  • This removal is derived against current main because the January 2025 removal commit never landed and predates newer image-digest, publishing, and test-pipeline wiring removed here.
  • The PR description identifies ff_internal self-host Compose files as external consumers requiring coordination when the GitSSH image pipeline is retired; deployment-specific Historian overrides may require the same check.
  • Relevant historical review routes are znewton for Compose development workflow, curtisman for shared Docker pipeline patterns, tylerbutler for build-tools wiring, and tianzhu007 for Historian deployment overrides.
For human reviewer
  • Needs human judgment — Confirm that retaining GitRest's pre-existing root execution is the appropriate compatibility choice for deployments with legacy persistent volumes.
  • Needs human judgment — Ensure the acknowledged ff_internal self-host Compose update is coordinated with retirement of the GitSSH image pipeline.
  • Cannot be assessed by the pipeline — Verify whether deployment-specific Historian overrides still supply removed gitssh values or depend on SSH port 22.
Review history (2 prior reviews)
  • bec98d5 2026-09-11 · 8/10 — Almost ready for sign-off.
  • 0b1b784 2026-09-11 · 8/10 — Almost ready for sign-off.

@anthony-murphy

Copy link
Copy Markdown
Contributor

Deep Review: The Historian README now accurately describes REST-only access. Your explanation establishes that Git-over-SSH was not a supported consumer contract and that there is no useful consumer migration path, so the release-note request is resolved.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: build Build related issues area: repo Repo related work area: server Server related issues (routerlicious) area: tools area: website base: main PRs targeted against main branch deep-review

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants