diff --git a/doc/images/build-option.gif b/doc/images/build-option.gif deleted file mode 100644 index 9944bec597..0000000000 Binary files a/doc/images/build-option.gif and /dev/null differ diff --git a/doc/images/changes.gif b/doc/images/changes.gif deleted file mode 100644 index c15fb34711..0000000000 Binary files a/doc/images/changes.gif and /dev/null differ diff --git a/doc/images/cicd-editor.gif b/doc/images/cicd-editor.gif new file mode 100644 index 0000000000..e216385c62 Binary files /dev/null and b/doc/images/cicd-editor.gif differ diff --git a/doc/images/annotation.png b/doc/images/code-annotation.png similarity index 100% rename from doc/images/annotation.png rename to doc/images/code-annotation.png diff --git a/doc/images/code-comment.gif b/doc/images/code-comment.gif new file mode 100644 index 0000000000..83f95555e9 Binary files /dev/null and b/doc/images/code-comment.gif differ diff --git a/doc/images/code-navigation.gif b/doc/images/code-navigation.gif new file mode 100644 index 0000000000..8d272e654e Binary files /dev/null and b/doc/images/code-navigation.gif differ diff --git a/doc/images/review-policy.gif b/doc/images/code-protection.gif similarity index 100% rename from doc/images/review-policy.gif rename to doc/images/code-protection.gif diff --git a/doc/images/custom-field.png b/doc/images/custom-field.png deleted file mode 100644 index ccf1bfabc6..0000000000 Binary files a/doc/images/custom-field.png and /dev/null differ diff --git a/doc/images/dashboard.png b/doc/images/dashboard.png deleted file mode 100644 index 8c9ef58688..0000000000 Binary files a/doc/images/dashboard.png and /dev/null differ diff --git a/doc/images/deep-integration.gif b/doc/images/deep-integration.gif new file mode 100644 index 0000000000..33d054751e Binary files /dev/null and b/doc/images/deep-integration.gif differ diff --git a/doc/images/edit-dashboard.gif b/doc/images/edit-dashboard.gif new file mode 100644 index 0000000000..701975541b Binary files /dev/null and b/doc/images/edit-dashboard.gif differ diff --git a/doc/images/file-comment.gif b/doc/images/file-comment.gif deleted file mode 100644 index 868770901a..0000000000 Binary files a/doc/images/file-comment.gif and /dev/null differ diff --git a/doc/images/fixing-build.png b/doc/images/fixing-build.png deleted file mode 100644 index b3671d4c96..0000000000 Binary files a/doc/images/fixing-build.png and /dev/null differ diff --git a/doc/images/replication.png b/doc/images/high-availability.png similarity index 100% rename from doc/images/replication.png rename to doc/images/high-availability.png diff --git a/doc/images/boards.png b/doc/images/issue-board.png similarity index 100% rename from doc/images/boards.png rename to doc/images/issue-board.png diff --git a/doc/images/issue-query.gif b/doc/images/issue-query.gif new file mode 100644 index 0000000000..d8dfe265c9 Binary files /dev/null and b/doc/images/issue-query.gif differ diff --git a/doc/images/job-command.gif b/doc/images/job-command.gif deleted file mode 100644 index 38154be425..0000000000 Binary files a/doc/images/job-command.gif and /dev/null differ diff --git a/doc/images/job-executors.png b/doc/images/job-executors.png new file mode 100644 index 0000000000..a994cf0f87 Binary files /dev/null and b/doc/images/job-executors.png differ diff --git a/doc/images/stats.png b/doc/images/line-stats.png similarity index 100% rename from doc/images/stats.png rename to doc/images/line-stats.png diff --git a/doc/images/markdown.gif b/doc/images/markdown.gif deleted file mode 100644 index d0ec1d02a3..0000000000 Binary files a/doc/images/markdown.gif and /dev/null differ diff --git a/doc/images/package-registry.png b/doc/images/package-registry.png new file mode 100644 index 0000000000..89f137e90d Binary files /dev/null and b/doc/images/package-registry.png differ diff --git a/doc/images/package-tab.png b/doc/images/package-tab.png deleted file mode 100644 index 19c2b9ce59..0000000000 Binary files a/doc/images/package-tab.png and /dev/null differ diff --git a/doc/images/pipeline.gif b/doc/images/pipeline.gif deleted file mode 100644 index 6fdef033bc..0000000000 Binary files a/doc/images/pipeline.gif and /dev/null differ diff --git a/doc/images/project-tree.png b/doc/images/project-tree.png new file mode 100644 index 0000000000..6065fc6ee1 Binary files /dev/null and b/doc/images/project-tree.png differ diff --git a/doc/images/query.gif b/doc/images/query.gif deleted file mode 100644 index c5e7e5e153..0000000000 Binary files a/doc/images/query.gif and /dev/null differ diff --git a/doc/images/regex-search.gif b/doc/images/regex-search.gif deleted file mode 100644 index 1e8e0b646b..0000000000 Binary files a/doc/images/regex-search.gif and /dev/null differ diff --git a/doc/images/resource-usage.png b/doc/images/resource-usage.png new file mode 100644 index 0000000000..75f5496694 Binary files /dev/null and b/doc/images/resource-usage.png differ diff --git a/doc/images/search-symbol.gif b/doc/images/search-symbol.gif deleted file mode 100644 index 7722feffca..0000000000 Binary files a/doc/images/search-symbol.gif and /dev/null differ diff --git a/doc/images/service-desk.png b/doc/images/service-desk.png index 2a87c4e77a..90b49dff1f 100644 Binary files a/doc/images/service-desk.png and b/doc/images/service-desk.png differ diff --git a/doc/images/symbol.gif b/doc/images/symbol.gif deleted file mode 100644 index 659ca8c8d0..0000000000 Binary files a/doc/images/symbol.gif and /dev/null differ diff --git a/doc/images/threaded-comments.png b/doc/images/threaded-comments.png deleted file mode 100644 index 9ec9bcdbcf..0000000000 Binary files a/doc/images/threaded-comments.png and /dev/null differ diff --git a/doc/images/timetrack.png b/doc/images/time-tracking.png similarity index 100% rename from doc/images/timetrack.png rename to doc/images/time-tracking.png diff --git a/doc/images/web-terminal.gif b/doc/images/web-terminal.gif index 75f57e4464..51cf37d056 100644 Binary files a/doc/images/web-terminal.gif and b/doc/images/web-terminal.gif differ diff --git a/doc/images/workflow-customization.gif b/doc/images/workflow-customization.gif new file mode 100644 index 0000000000..d74ab88928 Binary files /dev/null and b/doc/images/workflow-customization.gif differ diff --git a/doc/images/xcode-search.png b/doc/images/xcode-search.png deleted file mode 100644 index c5dbeb79bd..0000000000 Binary files a/doc/images/xcode-search.png and /dev/null differ diff --git a/readme.md b/readme.md index c13c3f078d..e8b5ad914d 100644 --- a/readme.md +++ b/readme.md @@ -10,165 +10,175 @@

Git Server with CI/CD, Kanban, and Packages

-Get started +Get Started

-## Out-of-box Symbol Search and Navigation -Just push code and you will be able to perform symbol search and navigation in arbitrary commit without any extra setup. You can also jump to symbol definition in diff while reviewing commits or pull requests. +## ๐Ÿ”Ž Out-of-box code search and navigation -It works by analyzing source code with ANTLR, extracting symbols for storage incrementally, fast and space efficient. Supports Java, JavaScript, C, C++, CSharp, Go, PHP, Python, CSS, SCSS, LESS and R. +Language aware symbol search and navigation in any commit. +Click symbol to show occurrences in current file. +Fast code search with regular expression. +[Try It](https://code.onedev.io/demo/dotnet-runtime) -![searchsymbol](doc/images/search-symbol.gif) +![code search and navigation](./doc/images/code-navigation.gif) -![jumpsymbol](doc/images/symbol.gif) +## ๐Ÿšฆ Annotate code with coverage and problems -## Code Search with Regular Expression +Code will be annotated with coverage info and problems found in +CI/CD pipeline, to facilitate code review. +[Demo](https://code.onedev.io/demo/react/~files/6039030814aedeaa6ebac706c0886e3675160666/packages/react-dom/src/client/ReactDOMSelect.js?position=source-202.1-202.36-1) -You may switch to any commit, and search code with regular expression. OneDev under the hood indexes the code with Lucene incrementally. At search time, literal tri-grams in the regular expression are extracted for a coarse search, followed by exact match in the result. This makes the regex search blazing fast, even for large repositories like Linux. +![code annotation](./doc/images/code-annotation.png) -![regex](doc/images/regex-search.gif) +## ๐Ÿ’ฌ Code discussion anywhere anytime -## Annotate Source/Diff with Static Analysis Result to Facilitate Code Review +Select any code or diff to start discussion. Suggest and apply changes. +Discussions stay with code to help code understanding. +[See It In Action](https://code.onedev.io/onedev/server/~compare?left=160:f96d82a3fa12800b4040cc9ea62af09233307ae9&right=160:e55d152b9cc783fd7e64dc752a6c2b3c5613212c&compare-with-merge-base=false&comment=149&mark=e55d152b9cc783fd7e64dc752a6c2b3c5613212c~server-product/docker/build.sh~22.1-22.148-1&tab=FILE_CHANGES) -Of course this can be done by many third party applications at GitHub, however they display the result on their own applications, and this makes review activities such as adding comment over analysis result difficult. Not to mention that you need to pay for these services. +![code comment](./doc/images/code-comment.gif) -![annotation](doc/images/annotation.png) +## ๐Ÿ”’ Versatile code protection rules -## Customizable Issue State and Field, with Deep CI/CD Integration +Set rule to require review or CI/CD verification when certain users touch certain +files in certain branches. +[Tutorial](https://docs.onedev.io/tutorials/code/pullrequest-approval) -The simple open/close state of GitHub/GitLab issues does not work well for many workflows. Considering issues submitted by customers: +![code protection](./doc/images/code-protection.gif) -1. If developer closes issue upon committing the code, customer will be notified and may ask for the release fixing the issue. -2. If developer closes the issue at release time, QA might be confused at what issues to test as they all remain open at test time.ย  +## ๐Ÿ“‹ Automated Kanban to keep team organized -With customizable issue states, we may address the issue with four states: open, committed, test ready and released: +Move tasks manually in Kanban, or define rules to move them automatically +when related work is committed/tested/released/deployed. +[See It In Action](https://code.onedev.io/onedev/server/~boards/State?milestone=4.2.0&backlog=true) -1. When code is committed, issue transits to committed state automatically -2. When a test build is created and deployed, the issue transits to test ready state automatically. QA will be notified and can check issue detail to know which environment the test build is deployed into. -3. When test passes, and a release build is created, customers submitting the issue will be notified and they can check issue detail to see which release contains the fix. +![issue board](./doc/images/issue-board.png) -![boards](doc/images/boards.png) +## ๐Ÿ›  Customizable and flexible issue workflow -![fixing-build](doc/images/fixing-build.png) +Custom issue states and fields. Manual or automatic state transition rules. +Issue links to sync operations and states. Confidential issues in public projects. +[Tutorial](https://docs.onedev.io/tutorials/issue/state-auto-transition) -## Service Desk to Create/Discuss Issues via Email +![workflow customization](./doc/images/workflow-customization.gif) -Service desk allows your users to submit tickets via email without the need to have a OneDev account. These tickets can then be created in desired projects, and assigned to appropriate members in your team. All further discussions over the tickets can take place completely in email, with discussion contents posted to ticket as comments. User will also get notifications when there are any ticket activities, for instance, when a relevant release is created or deployed +## ๐Ÿ“จ Service desk to link emails with issues -![service-desk.png](doc/images/service-desk.png) +Use issues as ticket system to support customers via email, without requiring +them to register accounts. Assign different support contacts for different +projects or customers. +[Tutorial](https://docs.onedev.io/tutorials/issue/service-desk) -## A powerful and Intuitive Query Language +![service desk](./doc/images/service-desk.png) -Thanks to ANTLR again, OneDev ships sophisticated query languages for projects, commits, issues, builds, and pull requests, with intuitive auto-completions and hints. For instance, it enables our customers finding fixed issues between their running release and latest release, and enables us to find all commits submitted by someone touching specified modules, etc.ย  +## โฐ Time tracking and reporting -Queries can be saved and subscribed, so that you won't miss anything interested. +Track estimated/spent time on tasks. Aggregate time from subtasks automatically. +Generate time sheets for work statistics and billing. +[Tutorial](https://docs.onedev.io/tutorials/issue/time-tracking) -![query](doc/images/query.gif) +![time tracking](./doc/images/time-tracking.png) -## A Full-fledge CI/CD Engine without Writing Yaml +## ๐Ÿ’ก CI/CD as code without writing code -OneDev ships with GUI to generate CI/CD Yaml. No need to google around for Yaml grammars. A one-liner docker command to start OneDev server and you have a local CI/CD runner automatically. Concerns about server capability to run massive jobs? Another one-liner to connect self-updating agent from any machine. Want auto-scale CI/CD farm? A helm one-liner to deploy OneDev into k8s cluster. Want to test/debug CI/CD jobs against local changes? tod comes to rescue +An intuitive GUI to create CI/CD jobs. Template for typical frameworks. +Typed parameters. Matrix jobs. CI/CD logic reuses. Cache management. +[Tutorial](https://docs.onedev.io/category/cicd) -Build pipeline, matrix jobs, typed parameters, parameter chaining, step templates, build promotionsโ€ฆ too many neat features to elaborateโ€ฆ +![ci/cd editor](./doc/images/cicd-editor.gif) -![job-def](doc/images/job-command.gif) +## ๐Ÿš€ Versatile CI/CD executors from simple to scale -![run-job](doc/images/build-option.gif) +Run CI/CD out-of-box in container or on bare metal. Run massive jobs concurrently +with Kubernetes or agents. +[Example1](https://docs.onedev.io/tutorials/cicd/agent-farm) +[Example2](https://docs.onedev.io/tutorials/cicd/k8s-farm) -![pipeline.gif](doc/images/pipeline.gif) +![job executors](./doc/images/job-executors.png) -## Built-in Docker/NPM/Maven/NuGET/PyPi/RubyGems Registry +## ๐Ÿ›  Tools to debug CI/CD jobs -The out-of-box integration of binary packages, CI/CD, -code and issues makes information cross-reference a lot easier. For instance, different package -versions can be compared to show code changes or fixed issues, published packages will be linked -with CI/CD builds automatically etc +Command to pause job execution. Web terminal to check job execution environment. +Run job locally against uncommitted changes. +[Tutorial1](https://docs.onedev.io/tutorials/cicd/diagnose-with-web-terminal) +[Tutorial2](https://docs.onedev.io/tutorials/cicd/run-job-against-local-change) -![build-package](doc/images/package-tab.png) +![web terminal](./doc/images/web-terminal.gif) -## Flexible Pull Request Review Policy and Reviewer Suggestion +## ๐Ÿ“ฆ Built-in package registries -Specify pull request review policy based on author, branch, and changed files. OneDev can leverage git change history to suggest most appropriate reviewers for pull requests touching certain files. +Built-in registry to manage binary packages. Link packages with +CI/CD jobs. +[Tutorial](https://docs.onedev.io/category/packages) -![review-policy](doc/images/review-policy.gif) +![package registry](./doc/images/package-registry.png) -## Lightweight Review without Pull Request +## ๐Ÿงฉ Deep integration and information cross-reference -Comment on any part of code or diff to start a lightweight review without opening pull request. Review comments live through code modification and even file rename to serve as documentation.ย  +Transit issue state via commit, CI/CD, or pull request. +Show fixing builds of issue. Query fixed issues or code changes between build/package versions. +[Example1](https://code.onedev.io/onedev/server/~builds/4799/fixed-issues?query=%22State%22+is+%22Released%22+order+by+%22Priority%22+desc+and+%22Type%22+asc) +[Example2](https://code.onedev.io/onedev/server/~issues/1794/builds) -Each discussion is threaded so that you can easily know discussions with new comments/updates. +![deep integration](./doc/images/deep-integration.gif) -![file-comment](doc/images/file-comment.gif) +## ๐ŸŒฒ Project tree for easy maintenance -![thread-comments](doc/images/threaded-comments.png) +Use tree to organize projects clearly and efficiently. +Define common settings in parent project and inherit in child projects. +[See It In Action](https://code.onedev.io/~projects?query=%22Path%22+is+%22onedev%22) -## Command Palette to Access Features Quickly +![project tree](./doc/images/project-tree.png) -Press cmd/ctrl-k to bring up command palette from anywhere. Search projects, files, issues, pull requests, builds, and various settings and jump to them without leaving your keyboard +## ๐Ÿ’ Smart query that can be saved and subscribed -![command-palette.gif](doc/images/command-palette.gif) +Powerful and intuitive query for everything. Save query for quick access. Subscribe to +query to get notified of interesting events. +[Try It](https://code.onedev.io/onedev/server/~issues) -## Write Markdown Pleasantly With a Smart Editor +![issue query](./doc/images/issue-query.gif) -When embedding an image in a markdown file in GitHub/GitLab, you need to upload the image in a separate page, and then figure out the relative path to reference that image. With OneDev, you simply upload the image to desired folder in same editor, and the link will be generated automatically.ย  +## ๐ŸŽ›๏ธ Dashboard for teams and users -OneDev tracks your cursor in edit window and scrolls the preview window as necessary so that you can always preview what you are typing. +Arrange gadgets in custom dashboard to get important information +at a glance. Share dashboard with users or groups, or make it public +for everyone. +[See It In Action](https://code.onedev.io/~dashboards) -![markdown](doc/images/markdown.gif) +![edit dashboard](./doc/images/edit-dashboard.gif) -## SLOC Trend By Language +## ๐Ÿ‘ฏ Effortless high availability and scalability -OneDev inspects git history of main branch to calculate trend of source lines of code by language efficiently. +Easy cluster setup. Replicate projects across different servers +for high availability, or distribute projects for horizontal scalability. +[More Info](https://docs.onedev.io/administration-guide/high-availabilty-scalabilty) -![stats](doc/images/stats.png) +![high availability](./doc/images/high-availability.png) -## Project Hierarchy to Facilitate Setting Inheritance +## ๐Ÿ›ธ Command palette for quick access -Organization is ideal for public service. However, for self-hosted internal use, we feel that a hierarchical structure is more practical to organize projects. Child projects can inherit settings from parent project and can selectively override some of them if necessary. This reduces a lot of overhead to manage a lot of projects in the company. +Use cmd/ctrl-k to bring up command palette from anywhere. +Search anything and jump to it without digging through menus. +[Try It](https://code.onedev.io) -## Effortless High Availability and Scalability (Enterprise Edition) +![command palette](./doc/images/command-palette.gif) -Just connect multiple OneDev instances to same database, and you will get a cluster to distribute project load to multiple -servers, as well as the ability to sync projects with its replicas in real time. If one server goes down, project replicas -on other servers will become active immediately without data loss and service interruption. +## ๐Ÿ“ˆ SLOC trend by language -![replication](doc/images/replication.png) +Inspects git history of main branch to calculate trend of +source lines of code by language efficiently +[See It In Action](https://code.onedev.io/onedev/server/~stats/lines) -## Customizable Dashboard (Enterprise Edition) +![SLOC trends](./doc/images/line-stats.png) -Arrange gadgets in custom dashboard to get important information at a glance. Share dashboard with other users or groups, -or make it public for everyone. +## ๐Ÿ•Š๏ธ Fast, lightweight, and reliable -![dashboard](doc/images/dashboard.png) +Crafted with resource usage and performance in mind. Get all features above with a 1 core 2G mem box +for medium-sized projects. Intensively used for more than 5 years, with battle-proven reliability. +[Performance Comparison](https://faun.pub/performance-compasion-of-onedev-and-gitlab-c11fc27b25be#:~:text=Git%20Push%3A%20OneDev%20is%2040,50%25%20less%20memory%20than%20GitLab) -## Time Tracking and Reporting (Enterprise Edition) - -Track issue, milestone and project progress with estimated time and spent time. Log works directly, -or start stopwatch while working. Aggregate estimate/spent time from subtasks to parent task -automatically. Generate timesheets for work statistics and billing. - -![timetrack](doc/images/timetrack.png) - -## Cross Project Fast Code Search (Enterprise Edition) - -Cross project fast code search to find information scattered in multiple projects. Support to search by symbol and regular -expression. Works out of box without extra setup. - -![xsearch](doc/images/xcode-search.png) - -## Web Terminal to Diagnose CI/CD Job (Enterprise Edition) - -A web terminal to access environment of running CI/CD job. Used together with pause instruction, one can check -live environment of the job to help diagnostics, and resume the job afterwards. - -![webterminal](doc/images/web-terminal.gif) - -## Fast and Reliable with Moderate Resource Usage - -OneDev is carefully designed with performance in mind. With a 2 core 2GB box, you will get all features above for medium-sized projects. -It has been intensively used for more than 5 years, with battle-proven reliability. Fixing bugs is our highest priority, and there is -normally few to no known bugs in the wild. +![resource usage](./doc/images/resource-usage.png)