What is Wharf

Features

  • CI/CD, with current support having emphasis on CD.

  • Arbitrary code execution engine. Can run anything that fits inside a Docker container.

  • Easy to configure: build definitions configured in YAML (.wharf-ci.yml), easy to version control and quick to learn synax.

  • Git forge integration with GitHub, GitLab, and Azure DevOps. Both self-managed Git forges as well as official github.com, gitlab.com, and dev.azure.com.

  • Self managed: Runs builds in your own Kubernetes cluster. No phoning home.

  • Open source: All code and project planning is open to all, licensed under the permissive MIT (aka Expat) license.

Use cases

  • Continuously/automatically deploy when commits reach the master branch.

  • Build and push Docker images

  • Run Ansible or Terraform scripts to deploy VMs

  • Build and run tests and show the results in the web interface

    • Unit tests
    • Integration tests
    • E2E tests
    • Security scans
  • Deploy services to Kubernetes, in a way allowing Git versioning of Kubernetes clusters.

  • Custom integrations by using Wharf’s REST API.

History

  • Originally an abstraction over Jenkins.

  • Started February 2019.

  • 11 developers (throughout the years):

    • Fredrik L
    • Jonas G
    • Ewelina S (@iverestefans)
    • Piotr W (@Grimwind)
    • Marek Ł
    • Kalle F (@jilleJr)
    • Tomasz Z (@tomaszzarzeczny-iver)
    • Jens B
    • Martin L
    • Fredrik D (@fredx30)
    • Alexander F (@Alexamakans)

Building blocks

  • Backend written in Go.

  • Web frontend written in Angular (TypeScript).

  • Deployed components:

    • Nginx for frontend serving
    • REST API
    • PostgreSQL database for projects and build persistence
    • Optional components for GitHub, GitLab, and Azure DevOps integration
    • Jenkins (soon to be replaced, for real this time) as execution engine

Future of Wharf (on the horizon)

  • Completely drop dependency on Jenkins.

  • Allow Wharf builds without a full Wharf installation instance.

  • Improved security via OpenID Connect and Role-Based Access Control (RBAC).

  • Better integration with existing Git forges.

  • Improve documentation.

  • Plugin-architecture for Git forges, allowing users to add support for Gitea, Gogs, BitBucket, etc.