Glasgow Haskell Compiler (GHC) migration to GitLab
Background
The Glasgow Haskell Compiler is planning a migration to GitLab. GHC's infrastructure is currently:
- Trac for ticket tracking and wiki
- gitolite and a variety of custom tooling for repository hosting
- Phabricator for code review
- a mix of CircleCI (for Linux, macOS) and Appveyor (for Windows) for CI
Those responsible for GHC's infrastructure has been in touch with GitLab (namely @dplanella).
Goals
The main goals for a successful migration would be:
- More accessible infrastructure for contributors
- Code review integration with git
- Reliable and maintainable multi-platform continuous integration
- Streamlined infrastructure and tooling
- Good relationship and open communication channel with upstream (GitLab in this case)
Discussion
Currently the migration is underway. Tools for migrating Trac tickets and the wiki into GitLab are largely complete. A staging installation can be found here.
GitLab replacements
Tool | Feature | GitLab feature | GitLab edition |
---|---|---|---|
Gitolite | GitHub -> Git mirroring | Repository mirroring | EE |
Gitolite | Git -> GitHub mirroring | Repository mirroring | EE |
Trac | Tickets | Issues | CE |
Trac | Ticket lists | Issue boards | CE |
Trac | Ticket notifications mailing list | ? | ? |
Trac | Ticket priority | Issue weight | EE |
Trac | Wiki | Wiki | CE |
Phabricator | Herald for automatic reviewer assignment | Code owners | EE |
Phabricator | Code review | Discussions | CE |
Phabricator | Continuous integration | Pipelines | CE |
CircleCI | Continuous integration | Pipelines with custom CircleCI bridge tool | CE |
Appveyor | Continuous integration | Pipelines and Appveyor's GitLab integration | CE |
Outstanding issues
Blockers
-
Issues/API: Import difficulties due to gitlab-ce#46980 -
Issues: Commit notes aren't created if ticket is created after commit is pushed (gitlab-ce#56943; worked around).
Urgent
-
Difficult to run certain CI jobs only on merge requests (gitlab-ce#56418) -
Gitaly loses its mind on an otherwise normal repository (gitlab-ce#57067) -
Functional gitlab-runner
support on Windows. This might be either accomplished by- fixing gitlab-runner#3856 (closed),
- following through on gitlab-runner#2609 (closed). It looks like there is motion along these lines on &535 (closed)
-
Functional artifact uploads on Windows (gitlab-runner#3035 (closed)) -
Approvers are spammed with large quantities of email (gitlab-ee#4816)
Important but not urgent
-
gitlab-runner
-
gitlab-runner
fails to heartbeat while running a job on Windows (gitlab-runner#3854 (closed)) -
gitlab-runner
support for AArch64: gitlab-runner!725 (closed), gitlab-runner#2137 (closed) -
gitlab-runner
support for msys2 (gitlab-runner#1699) -
gitlab-runner
leaves old Docker volumes around (gitlab-runner#2980 (closed))
-
- Issues:
-
Closed milestones not shown in milestones line (gitlab-ce#25091) -
Issues are incorrectly closed by commits containing doesn't fix #NNNN
in their commit message (gitlab-ce#55970) -
Issue search via issue number is broken (gitlab-ce#30974)
-
- Code review:
-
Send one email notification per published code review gitlab-ee#4326. -
Finding changes between merge request revisions is quite difficult (gitlab-ce#51336) -
Very difficult to orient oneself in long reviews (gitlab-ce#52485) -
Finding new inline comments is quite hard (gitlab-ce#56481) -
Automatically rebase stale MRs marked as "merge when pipelines pass" (&521 (closed)) -
Attach non-inline comments to transactional reviews (gitlab-ee#8225)
-
Important but not prioritized by GitLab
-
Pipelines: No way to build all commits (gitlab-ce#53799) -
Wiki: Non-developers can't view wiki history (gitlab-ce#14620)
Nice to have
-
Issues: Issue search autocompletion should be less selective (gitlab-ce#57249) -
Code review: Comments not allowed on unchanged lines (gitlab-ce#51823) -
Code review: file tree (gitlab-ce#46474) -
Pipelines: Need to custom bridge tool to integrate with CircleCI (need mitigated by migration away from CircleCI) -
Pipelines: Difficulty of managing builder images, no story for Docker on Windows. Potentially helped by gitlab-runner!464 (closed), gitlab-runner#2885 (closed) -
Pipelines: No way to query triggered pipeline status (gitlab-ee#5096) -
gitlab-runner: extends
keywords is broken in some cases (gitlab-runner#3794 (closed)) -
gitlab-runner: gitlab-runner
violates the principle of least privilege (gitlab-runner#3188 (closed)) -
Issues: Label namespace clutter due to lack of custom fields (https://gitlab.com/gitlab-org/gitlab-ee/issues/1906, &235) -
Issues: Better handling of duplicate and blocking ticket relationships (gitlab-ce#47007, gitlab-ce#39751) -
Repository mirror: Crash (gitlab-ce#55350) -
Code review: Convenient way to fold all resolved discussions (gitlab-ce#55747) -
Code review: Allow user to rewrite commit message while squashing during merge (gitlab-ee#1510) -
Code review: Button to toggle visibility of all discussions (gitlab-ce#19149) -
Search: Be more clever in identifying user intent for searching on IDs (gitlab-ce#56967) -
Poor search relevance: fix ElasticSearch support (gitlab-ee#9633)
Status
The migration effort is on a fairly aggressive timeline due to various considerations. The plan is to switch over to GitLab by December 18. There is a test instance here. This is a self-hosted GitLab Ultimate installation provided through the GitLab FOSS initiative which includes an import of GHC's Trac tickets and users from a few months ago.
After migration there are a