Skip to content
Snippets Groups Projects
gitlab.mdwn 6.87 KiB
[GitLab](https://gitlab.com/) is *a web-based DevOps lifecycle tool that provides a
Git-repository manager providing wiki, issue-tracking and continuous
integration/continuous deployment pipeline features, using an
open-source license, developed by GitLab Inc* ([Wikipedia](https://en.wikipedia.org/wiki/GitLab)). Tor
uses GitLab mainly for issue tracking, wiki hosting and code review
for now, at <https://gitlab.torproject.org>, after migrating from
[[trac]].

[[!toc levels=3]]

<!-- note: this template was designed based on multiple sources: -->
<!-- https://www.divio.com/blog/documentation/ -->
<!-- http://opsreportcard.com/section/9-->
<!-- http://opsreportcard.com/section/11 -->
<!-- comments like this one should be removed on instanciation -->

# Tutorial

<!-- simple, brainless step-by-step instructions requiring little or -->
<!-- no technical background -->

# How-to

<!-- more in-depth procedure that may require interpretation -->

## Pager playbook

<!-- information about common errors from the monitoring system and -->
<!-- how to deal with them. this should be easy to follow: think of -->
<!-- your future self, in a stressful situation, tired and hungry. -->

## Disaster recovery

<!-- what to do if all goes to hell. e.g. restore from backups? -->
<!-- rebuild from scratch? not necessarily those procedures (e.g. see -->
<!-- "Installation" below but some pointers. -->

## Backups

There is a cronjob configured via the gitlab puppet monitor that runs every night
at 2.00 AM UTC

This will basically run `$ gitlab-backup ` and will create a tarball under:
`/srv/gitlab-backup/`

There is also a config backup job that makes sure to backup the content of
`/var/opt/gitlab/gitlab-rails/etc/`


# Reference

## Installation
<!-- how to setup the service from scratch -->

## SLA
<!-- this describes an acceptable level of service for this service -->

## Migration

GitLab was migrated from Trac in June 2020, after a few months of
testing. Tests were done first on a server called
`dip.torproject.org`, a reference to `salsa.debian.org`, the GitLab
server ran by the Debian project. We identified [some problems with
merge requests](https://gitlab.torproject.org/tpo/tpa/services/-/issues/32197) during the test so the server was reinstalled with
the "GitLab Omnibus" package on the current server, `gitlab-02` which
will enter production in the week of June 15th 2020.

### Migrated content

The issues and wiki of the "Tor" project are migrated. There are no
other projects in Trac.

<!-- TODO: details of the migration -->

 * Trac wiki: <https://gitlab.torproject.org/legacy/trac>
 * Trac issues: <https://gitlab.torproject.org/groups/legacy/-/issues>

Trac issues that remain are really legacy issues, others issues have
been "moved" to the respective projects. @ahf, who did the migration,
maintained a [copy of the mapping](https://anubis.0x90.dk/~ahf/sekrit/tor/gitlab/component-tickets.txt) for those looking for their old
stuff.


### Interesting new features

 1. Using pull requests to your project repositories, and assigning
    reviewers on pull requests, rather than using `reviewer` and
    `needs_review` labels on issues. Issues can refer to pull requests
    and vice versa.

 2. Your team can work on using Gitlab boards for handling the
    different stages of issue handling. All the way from selection to
    finalization with code in a PR. You can have as many boards as you
    like: per subproject, per sponsor, per week, all of this is
    something we can experiment with.

 3. You can now use time estimation in Gitlab simply by adding a specially
    formatted comment in your issues/pull requests instead of using `points` and
    `actual_points`. See the [time tracking documentation](https://docs.gitlab.com/ee/user/project/time_tracking.html) for details

 4. Familiarize yourself with new interfaces such as the ["to do"
    dashboard](https://docs.gitlab.com/ee/user/todos.html) where you can see what needs your input since last
    visit

 5. Create email filters for tickets: Gitlab adds a lot more [email
    headers to each notification](https://docs.gitlab.com/ee/user/profile/notifications.html#filtering-email) you receive (if you want it via
    email), which for example allows you split notifications in your
    mail program into different directories.

    Bonus info: You will be able to reply via email to the notifications you
    receive from Gitlab, and Gitlab will put your responses into the system as
    notes on issues :-)

### Remaining work

As of June 13th:

 1. Figure out what to do with https://bugs.torproject.org/ - there is
    a very easy simple solution, and a slightly harder (but still
    easy) solution that is probably nicer.

 2. Make sure the daily tools we use is ready such as IRC bots.

 3. Make sure TPO project issue change notifications are emailed to
    the tor-bugs@lists.torproject.org mailing list.

 4. Begin handing out some of the accounts to community members that
    we have created in their name(s).

 5. Begin figuring out how to solve the account creation and anonymous
    users in the longer run.

### History

 * 2010-04-23: [migration from Flyspray to Trac completed](https://lists.torproject.org/pipermail/tor-dev/2010-April/000183.html)
 * 2020-06-13 19:00UTC: [Trac readonly](https://lists.torproject.org/pipermail/tor-project/2020-June/002872.html)
 * 2020-06-13 02:25UTC: Trac tickets migrated
 * 2020-06-14 21:22UTC: Trac wiki migrated

## Design
<!-- how this is built -->
<!-- should reuse and expand on the "proposed solution", it's a -->
<!-- "as-built" documented, whereas the "Proposed solution" is an -->
<!-- "architectural" document, which the final result might differ -->
<!-- from, sometimes significantly -->

<!-- a good guide to "audit" an existing project's design: -->
<!-- https://bluesock.org/~willkg/blog/dev/auditing_projects.html -->

## Issues

<!-- such projects are never over. add a pointer to well-known issues -->
<!-- and show how to report problems. usually a link to the bugtracker -->

There is no issue tracker specifically for this project, [File][] or
[search][] for issues in the [generic internal services][search] component.

 [File]: https://trac.torproject.org/projects/tor/newticket?component=Internal+Services%2FTor+Sysadmin+Team
 [search]: https://trac.torproject.org/projects/tor/query?status=!closed&component=Internal+Services%2FTor+Sysadmin+Team

## Monitoring and testing

<!-- describe how this service is monitored and how it can be tested -->
<!-- after major changes like IP address changes or upgrades -->

# Discussion

## Overview

<!-- describe the overall project. should include a link to a ticket -->
<!-- that has a launch checklist -->

## Goals
<!-- include bugs to be fixed -->

### Must have

### Nice to have

### Non-Goals

## Approvals required
<!-- for example, legal, "vegas", accounting, current maintainer -->

## Proposed Solution

## Cost

## Alternatives considered

<!-- include benchmarks and procedure if relevant -->