Geo: Proxy Git fetch/clone over SSH via Gitlab Shell
Release notes
Problem to solve
Move proxying of Git clone and fetch operations over SSH from secondary Geo sites to primary currently handle via rails to Gitlab shell.
The current proxying implementation suffers from some shortcomings where we see certain git options fails. e.g #391980
We have changed the proxying of git push workflow to go via the Gitlab shell. It will be beneficial for both the push and pull workflows to be consolidated and work via Gitlab shell.
While it may be possible to fix shortcomings of the pull/fetch/clone operations in the current implementation it would be better to have a single proxying workflow via Gitlab shell and have one place where fixes need to be applied in the future.
Intended users
User experience goal
No change to existing developer experience. Git fetch/pull/clone requests are transparently proxied from the secondary Geo site to the primary when needed.
Proposal
Move git fetch/pull/clone proxying workflow to the Gitlab shell to follow a similar workflow to proxied git push operations.
Permissions and Security
Permissions and security should mirror existing scope.
Documentation
Update developer documentation to related to Geo proxying https://docs.gitlab.com/ee/development/geo/proxying.html
Availability & Testing
Testing should cover all git fetch/pull/operations and options such as --depth
, --deepen
, --sparse
etc.. If certain options are found to be unsupported we should document them as limitations.
Available Tier
- Premium/Silver
- Ultimate/Gold
Feature Usage Metrics
TBD
What does success look like, and how can we measure that?
We see a seemless transition to the new proxying workflow. In future will see fewer discrepancies between supported git operations and proxied operations.
Is this a cross-stage feature?
No
What is the competitive advantage or differentiation for this feature?
None. This is an enhancement to an existing feature.