OneDev-easy-to-use GitLab alternative

Posted Jun 26, 20204 min read

OneDev is an open source and integrated DevOps platform. Currently the project has 3K stars on GitHub: .

The original intention of this project is actually to solve the problem of information split between Build, Issue and Code. For example, after a test version is released, this version contains those issues that need to be tested, or a certain issue is resolved in that version at the earliest, or any two release versions are compared, and all source code changes are obtained. To facilitate the integration of this information, it is necessary to use an integrated platform. I also studied GitLab at the beginning, but felt that this company was too profit-oriented and was particularly keen to add new features. However, it often overlooked the existing high-voice problems. For example, the multi-line comments of the code have not been supported, .gitlab -ci.yml is difficult to maintain, and the runner often fails for some reason. The enterprise version of GitHub is too expensive to consume. Moreover, they are not as smooth as expected in the integration of Build, Issue and Code.

Because I have been doing Git related development work, I feel that it should not be difficult to make a simplified version of GitHub/GitLab Copy Cat, and it is used internally by the company. Instead, it focuses on functions that directly increase productivity, such as intelligent code navigation, Build-defined graphical interface and intelligent prompts, incremental pull request review, native support for Docker and Kubernetes, and so on. With the continuous feedback and iteration of users, OneDev is now quite mature and stable, can replace GitLab to a large extent, and has simple installation and maintenance, less resource consumption, and excellent performance. See the project homepage for specific documents.

Okay, so much nonsense, let's see what features we have done.

Native support for Docker and Kubernetes

Built-in continuous integration engine, you can use Docker to run Build directly on the machine, or you can connect to Kubernetes cluster to build in large quantities.

Graphical Build definition interface

When using other tools such as GitHub/GitLab to define Build behavior, you need to write a Yaml script. It is inevitable to understand the complex Build definition rules. The OneDev provides a graphical interface, supplemented by automatic prompts, making this job very easy. And when the version is upgraded in the future, the Build definition can also be automatically upgraded.


Flexible Build workflow definition

Support variables to control Build behavior. Build/Test the combination of different variables separately. You can connect different Build tasks to form a Build Pipeline, and support concurrent tasks.


Support Issue status and field customization

Customize Issue status and fields as needed to meet different application scenarios. You can define dependencies between different fields. For example, you can specify that a field is displayed only when another field selects a specific value. Issue status can be set to automatically migrate based on rules, or manual migration based on permissions.

Automatically refreshed Issue Kanban

Display Issue Kanban based on Issue status or fields. All Issue related operations can be performed in Kanban. Kanban automatically refreshes instantly to show the latest status of Issue.


Code Smart Search and Navigation

When viewing source files and Diff, it supports intelligent search and navigation of code based on grammatical analysis, and can display the outline structure of the source code for easy reading. Currently supports Java, JavaScript, C, C++, CSharp, Go, PHP, Python, CSS, SCSS, LESS, R.


Use annotations to discuss and read the code

When reading the code, you can always add annotations to discuss with the author. After that, even if the file has been modified or renamed, OneDev can still display the appropriate historical annotations next to the code to help understanding.


Flexible code review rules

Formulate code review rules based on Pull Request. For example, you can specify who needs to pass the review of certain files in a branch after modification, or which Build tasks must pass, and so on.

Powerful and easy to use query language

The system includes a well-designed query language. Through automatic prompting and completion, you can quickly create complex queries for Issue, build, code, pull request and other objects. Queries can also be saved and subscribed as needed, so that when an event that meets the query conditions occurs, it is automatically notified.


In-depth integration of Code, Issue, Pull Request and Build

After the code is submitted, the Pull Request is created/merged, or the Build is successful, the related Issue can be automatically transferred to the desired state and the relevant personnel notified. Obtain cross information at any time, for example, a Build contains those completed Issues, a certain Issue was resolved in that Build at the earliest, or compare any two Builds to get all the source code changes, etc.


Fine permissions control

For example, you can define who can modify key source files, who can assign Issues, who can access the test version, who can release versions, and so on.