GitHub

Decision

We use GitHub, including GitHub Workflows, as source management.

Problems

We need a tool to manage which changes we accept into our source code. The current solution, BitBucket, does not integrate well with other tools we currently use like Netlify, Amplify, or Chromatic.

We also need to automatically run tests, linting, and similar tasks before integrating code. This currently happens in Jenkins, which only few of our developers feel comfortable configuring. It can also be bothersome to find the results of the tests in the logs.

Context

Currently, we use BitBucket for centralized version management and Jenkins both to run deployments and to run tests on branches.

Most developers currently working at optilyz have experience with using GitHub, including GitHub Workflows. Some have experience with GitLab.

Options

  • BitBucket
  • GitHub
  • GitLab SaaS
  • GitLab self-hosted

Reasoning

GitHub integrates well with tools for reviewing code, e.g. automatically adding comments on Pull Requests based on tool results. It is an industry-standard tool which most candidates will feel comfortable using.

Also, GitHub Workflows is an easy-enough way to configure script runs and makes it easier for all teams to add their own flows.

Self-hosting would give us a bit more breathing room on GDPR, but since this tool shouldn't come in contact with customer data anyways, the cost of maintaining the tool ourselves would outweigh the benefits.

GitLab SaaS is very close, and might well have been chosen instead. The main reason for deciding in favor of GitHub is to take any decision at all. In addition, GitHub integrates better with external tools. GitLab brings more tools on its own, though. Using GitHub might also benefit us when doing more open source work.

For current employees, experience and preference is roughly equally split between the tools.

Specifically, the CI capabilities of Gitlab are a bit more advanced than what GitHub workflows offer: E.g. the ability to rerun individual failed jobs is on the GitHub public roadmap for this quarter, but it isn't implemented yet. Also, GitHub Workflows can become costly, and budgets are also still on the roadmap for this quarter, but not yet implemented.

Consequences

We need to move over our repositories from BitBucket and update the configuration for deploying and testing code. We need to set up guidelines and tutorials on how to use GitHub with personal accounts, and with company-only accounts.

We will need to deal with more different external tools than if we had decided for e.g. GitLab.

Related