User:Martyav/Portal:Pipeline (staging)/Tools

From Wikitech

Not to be confused with tools in the Toolforge sense, these are the things we use to deploy code and communicate about it.

Communication

For communication, code sharing, and organizing tasks, we use the following:

  • Gerrit, our code review system; where our repos live. Note that while Github contains many of our public repos, you can only make pull requests via Gerrit.
  • Phabricator, for project management, such as opening tickets and talking about our plans for the next quarter.
  • IRC, live chat channels. The main one deployment uses is #wikimedia-serviceops.

Deploying code

The pipeline itself uses several different tools and services to deploy code onto the Wikimedia servers. The chief ones are:

  • Kubernetes, an open-source system for automating deployment and managing containers.
    • Docker, open-source software for building containers.
    • Blubber, a Wikimedia tool for writing Dockerfiles.
    • Helm, the package manager for Kubernetes.
    • Kubectl, the CLI for Kubernetes.
    • Charts, jargon for a collection of Kubernetes resources.
  • Jenkins, a Java-based tool that automates common tasks within Gerrit.
  • Zuul, a Python daemon that communicates between Jenkins and Gerrit.

Testing

During deployment, we test code both locally, and on test servers. During local testing, we use Apache ab to create benchmarks. For more information about our test servers, see test.wikipedia.org and test2.wikipedia.org

Notes

There are also some tools on their way out. For example, Scap has been historically important to Wikimedia deployment, but we are trying to move away from it in favor of Helm.