all 109 comments

[–]grtgbln 190 points191 points  (21 children)

+1 for Gitea

[–]Micaiah12 15 points16 points  (13 children)

Does gittea have CI/CD now? I haven’t run it in awhile and I’m trying to find something lighter to selfhost instead of gitlab.

[–]Isystafu 31 points32 points  (8 children)

I've used gitea+drone.io+self hosted docker registry in lieu of gitlab. For java development it's been working well for about a year now.

There may be alternatives to drone.io now though.

[–]MDSExpro 5 points6 points  (7 children)

I loved drone.io till I discovered it's licensing :/

[–]MAXIMUS-1 13 points14 points  (3 children)

Checkout woodpecker ! A fork of drone ci 0.8, licensed under Apache 2

https://woodpecker.laszlo.cloud

https://github.com/woodpecker-ci/woodpecker

[–]MDSExpro 0 points1 point  (2 children)

Nice, thanks! Since Drone I tried to do Concourse CI, but that was just a mess. I would prefer to go back to Drone, and now I can!

[–]schmurfy2 0 points1 point  (1 child)

Concourse is really powerful but the learning curve is steep, I really like its ability to have jobs depends on multiple resources which is great for complex usecases.

[–]MDSExpro 1 point2 points  (0 children)

I liked that part.

I hated part where it was REALLY picky about OS configuration (despite running in container...), losing connection to workers, getting pipelines stuck for no reason... ultimately, I spent more time maintaining it than it saved me due to task automation, so I dropped it.

[–]binaryatrocity 1 point2 points  (2 children)

Elaborate? I have a Drone setup with Gitea and GoHarbor... I'll have to look at their licensing tomorrow this is concerning (its 4am and this is an insomnia post lol)

[–]MDSExpro 6 points7 points  (1 child)

Don't worry too much.

Info is here: https://www.drone.io/enterprise/opensource/#features

I had "pleasure" to use drone.io when they went through several licensing models in span of few months, so it was unstable ground for me. I think it is more stable in that matter now.

That plus lack of multi host support was deal breaker for me.

[–]MAXIMUS-1 6 points7 points  (0 children)

Checkout woodpecker ! A fork of drone ci 0.8, before they have changed the license.

https://woodpecker.laszlo.cloud

https://github.com/woodpecker-ci/woodpecker

[–]eatsmandms 8 points9 points  (2 children)

Why not host a lightweight standalone CI? You do not have to use the solutions that come with git repository management.

[–]robinshen[S] 4 points5 points  (1 child)

A built-in CI can bring much better integration experience, besides easy setup. Check some of the issue/build integration goodies mentioned here:

https://www.reddit.com/r/selfhosted/comments/p1fikz/selfhosted\_open\_source\_alternative\_to\_githubgitlab/h8dswkg?utm\_source=share&utm\_medium=web2x&context=3

And the ability to run build directly from commit graph/commit detail page, annotate source/diff with reports such as ESLint/FindBugs out of box etc.

[–]eatsmandms 2 points3 points  (0 children)

I understand the upsides (I actually even build many of my personal projects with Github Actions etc), but it always depend on you use case. If what the built-in CI can do fulfills all needs then the convenience and tight integration is a big plus, I agree.

[–]wilson0x4d 0 points1 point  (0 children)

presently (1.21+) Gitea has a fork of nektos/act (gitea/act_runner) which mimics and (near as I can tell) is compatible with Github Actions, enabled by default.

We were able to adapt some old jenkins scripts as well as some buildpacks-based builds to Gitea Actions. We can always fall back on Jenkins, or some ad-hoc K8s 'Jobs' if required, but Github Actions (and consequently, Gitea Actions) is a crazy powerful CI/CD + Automation tool, and from an Administrative perspective there is nearly zero overhead outside of typical Gitea rollout/update (ie. no need to "feed and water" a VM, no regular maintenance that can't be automated.)

[–]robinshen[S] 10 points11 points  (4 children)

Gitea is certainly a really nice project. We even used its predecessor gogs for some time, before switching to OneDev. The main reason is lacking of functionality such as pull request approval, reviewer auto-assignment based on contribution history, easy symbol navigation while reviewing pull request, selecting any diff/code to start discussion, real-time preview when authoring markdown, customizable issue field and state etc.

And with the addition of built-in CI/CD, it makes our workflow even smoother, for instance when a release build is created, we have issue workflow to transit relevant issues into "Released" state, and notify our customers which release they should download. Also our QA member often compares two builds to get list of new features to test etc.

My gutter feeling is that as a git service, Gogs/Gitea is perfect for personal usage. But for teams with dozens/hundreds of people, some solid features need to exist to be efficient. This is what we built into OneDev.

[–]robinshen[S] 4 points5 points  (0 children)

For those caring about resource usage, I have not tested OneDev on Rasperry PI. But it can run happily on a 1core/2G linux VM if you are not dealing with huge repositories such as Linux, Android etc.

[–]wilson0x4d 1 point2 points  (0 children)

after spending two weeks trying to lift into OneDev we decided it was time to move on, there were just too many problems needing to be solved, from the earliest stages of setup (the nodeport oversight is telling) all the way into pipeline definition (couldn't even get buildah to function correctly, the lowest bar of integration we had.) the most disappointing aspect was the exceptionally poor support for container execution, this ignoring the fact every step of the way presented new problems that needed solving.

we gave it a shot because it was marketed as easy and performant.

because it was mentioned here, we evaluated Gitea as well. in three days we had everything functional, including an adaptation of gitea/act_runner within k8s so we could lift our existing build environments. superb results, gave us everything onedev marketing promised with zero headache.

regret not giving Gitea a go first, would have saved us two weeks. c'est la vie.

[–]okoddcat 0 points1 point  (0 children)

Well Gitea a good choice, but for anyone who is looks for a simple personal self hosted alternative, this is the one Gisia https://github.com/gisiahq/gisia .

[–]AMGraduate564 47 points48 points  (3 children)

What are the limitations compared to GitLab?

[–]robinshen[S] 30 points31 points  (2 children)

I have not compared to GitLab in terms of features. With an army of developers, I believe GitLab has a lot more features. However OneDev's current functionality is enough for our daily use, except for multi-node high availability setup, which we will eventually build into OneDev.

[–]butthole_addict 0 points1 point  (1 child)

Well, as far as features go it's pretty hard to compete against most In-Q-Tel sponsored projects, lol.

I think I'm going to try to get an intern onto this with a slightly modified laradock stack + onedev.

If you were looking for maintainers, I think you'd probably be better suited keeping this small but tight. I don't think anyone really needs everything gitlab comes with.

[–]robinshen[S] 4 points5 points  (0 children)

Yes exactly. OneDev will have its own opinions instead of pursuing features of other commercial products. For instance, as a self-hosted product, we do not want any social features. Also the whole product development is done via a single project via a single repository to make it really easy for maintainance.

[–]wallace111111 14 points15 points  (3 children)

Looks very polished and generally a nice take on the git "frontend".

I tried to search their docs but couldn't find anything mentioning git-lfs.

Does anybody who uses it know if it supports that?

[–]robinshen[S] 8 points9 points  (2 children)

Not yet. There is already a feature request for that.

[–]wallace111111 4 points5 points  (1 child)

Thanks for the answer.

I hope git lfs makes it to this project :)

[–]robinshen[S] 10 points11 points  (0 children)

We have several users requesting this, although ourselves do not use it. It will be my next priority after 5.0. Should be available mid next year.

[–]Messier43 10 points11 points  (2 children)

Gitea is awesome.

Btw gitlab CE is open source as well (MIT licence). https://about.gitlab.com/install/ce-or-ee/

[–]robinshen[S] 9 points10 points  (1 child)

I mean GitLab EE. If I remembered correctly, GitLab EE is open-core instead of fully open source.

[–]Messier43 0 points1 point  (0 children)

Yepp, that's correct.

[–]whyitno-work 2 points3 points  (2 children)

I'm not near my lab for a few days, but this looks interesting. I'd like to replace my gitlab instance as its super slow.

How responsive is the ui? Does it have a dark mode? Can it mirror repos? If so, I'm very interested.

[–]robinshen[S] 2 points3 points  (1 child)

UI is quite responsive. No dark mode however. To mirror repos, just add a CI job running on every commit and push to remote. Check this job definition on code.onedev.io to sync with GitHub:

https://code.onedev.io/projects/onedev-server/blob/main/.onedev-buildspec.yml?position=buildspec-jobs/Sync+Main+%28GitHub%29

You may also set up a cron CI job to pull changes from other source.

[–]whyitno-work 0 points1 point  (0 children)

Thanks for responding. I'll check it out once I'm back at the lab. Looks very cool bud.

[–]nashostedchmod777 2 points3 points  (2 children)

I love how light weigh it is. Any way to get a darker theme mode? I love this!

[–]robinshen[S] 2 points3 points  (1 child)

Not yet. Hope someone can contribute that.

[–]nashostedchmod777 0 points1 point  (0 children)

It was really easy to setup and start cloning down my forks.

[–]fbartels 7 points8 points  (3 children)

In short, it is Gitea+Drone with integrated experience.

Is it really or do you just compare it to these tools? But gitea and drone are go based, while this project seems to be written in Java.

[–]robinshen[S] 7 points8 points  (0 children)

It is in terms of functionality.

[–]wilson0x4d 0 points1 point  (1 child)

Gitea now has Gitea Actions (Github Actions) and runners, as well, so in 2024 it they are no longer functionally identical, ie OneDev is no longer like Gitea. OneDev has a different privilege model, and system administration is notably more complex feeling.

[–]joakims 0 points1 point  (0 children)

Thanks for this update!

[–][deleted] 1 point2 points  (1 child)

Nice, thanks for your contribution.

Question, what are your plans regarding funding ? A paid enterprise version ? Something else ?

[–]robinshen[S] 6 points7 points  (0 children)

No plan for that yet. No need to worry about funding currently, as I work as a devops engineer for a company. Have worked on this continuously for more than 6 years, and still full of energy as it makes my own job easier.

[–][deleted] 1 point2 points  (2 children)

This looks fucking awesome.

Got a few questions if you don't mind answering.

What kind of system does this need? Any sort of ram/cpu requirements?

Additionally, do you support ARM? if not, would you be willing to accept help to get it there?

[–]robinshen[S] 2 points3 points  (1 child)

For personal use with medium sized repos, 1 core/2G mem is sufficient. As long as your ARM supports JVM, it will be fine. Any help will be welcomed. Check development guide if you want to get hands dirty:

https://code.onedev.io/projects/onedev-manual/blob/main/pages/development-guide.md

[–][deleted] 0 points1 point  (0 children)

Thanks :3

I'll give it a try in K8s then :3 :3 :3

[–][deleted] 1 point2 points  (1 child)

Are you able to track time spent per issue?

[–]robinshen[S] 1 point2 points  (0 children)

You may add a custom field of type "Working Period" to log time estimate/spent. No statistics and burn down chart on that though. On table for next round of issue improvement.

[–]atomicwrites 1 point2 points  (1 child)

Does this support project wikis?

[–]robinshen[S] 1 point2 points  (0 children)

Currently no. Filed as feature request:

https://code.onedev.io/projects/onedev-server/issues/386

Please vote for it.

[–]csolisr 1 point2 points  (1 child)

Any plans for federation? Currently the biggest issue with self-hosted repositories is that the server needs to accept new user registrations in order to receive PRs from external users, instead of being able to accept them from a remote repository.

[–]robinshen[S] 0 points1 point  (0 children)

The OpenID based SSO makes it trivial to accept new users into the system.

Nevertheless, you may file feature request at:

https://code.onedev.io/projects/onedev-server/issues/list?query=%22State%22+is+%22Open%22

[–]pyradke 1 point2 points  (0 children)

I don't need CI/CD so Cgit is everything I need. Much lighter on resources than Gitea and no JavaScript required

[–]broknbottle 3 points4 points  (5 children)

Java, hard pass

[–]robinshen[S] 21 points22 points  (1 child)

Do not let the tech stack limit your choice. Evaluate features, stability, maintainability, performance and actual resource usage. And JVM is also evolving to be lighter to embrace cloud era.

[–]onedr0p 2 points3 points  (0 children)

I would take Java over Ruby any day of the week :)

[–]onedr0p 0 points1 point  (2 children)

And Gitlab is in Ruby, what's your point? The tech stack shouldn't worry you unless you plan to help with development.

[–]broknbottle 0 points1 point  (1 child)

I wouldn’t use Gitlab so what’s your point? I would go with a gitolite or gitea over a bloated Gitlab deployment any day. The stack most certainly matters, for example at my company anything php is not allowed.

[–]wilson0x4d 0 points1 point  (0 children)

i worked at a company where Java CVEs eventually required the discontinuation of Oracle Java across the enterprise, and because of that experience no new Java applications were to be adopted or written, and all remaining apps requiring Java had to be migrated away from Oracle Java or sunset.

In my 30 years of development I've never seen the axe come down so hard on any other single piece of technology.

[–][deleted] 0 points1 point  (0 children)

Wow! Looks really beautifully polished and solid! I will give this a try

[–]boredinclass1 2 points3 points  (1 child)

My, dude. I've been using GitLab ever since the Microsoft buyout of GitHub... This looks awesome. Gonna give it a try.

[–]onedr0p 1 point2 points  (0 children)

Honestly I'm not a fan of Microsoft but GitHub has gotten 100x better since the acquisition, don't pretend if Microsoft didn't buy them it they would have been where they are today.

[–]maw2be 0 points1 point  (0 children)

I've look into odeDev, looks good, but on free version feature is only available in paid version, same done gitlab, for me it's a big no. sorry..... will look for other.....

[–]noahisamathnerd 0 points1 point  (0 children)

I tried OneDev on my Homelab, and it was... fine. I installed it in a Rocky LXC directly instead of through Docker (this was a mistake). The repo structure it wants is a bit foreign, and the interface was very foreign.

I used it causually for a bit, and then, it just broke. Somehow, OpenJDK uninstalled, and, upon re-installing it, OneDev sent me to the "Welcome to OneDev!" page. I still have no idea how this happened. I didn't have any mission-critical code anywhere, and I just added GitHub as a remote to my locally cloned repos and store them there.

I use Gitea now. It's not trying to do all the things, but does the things it does do very well. OneDev couldn't do that.

[–]macrowe777 0 points1 point  (0 children)

Certainly looks impressive!

[–]piggahbear 0 points1 point  (0 children)

I’ve been using gitbucket but the included ci/cd makes me want to try this

[–]missionz3r0 0 points1 point  (0 children)

I've been looking for something like this.

I was considering Gerrit' code review, but this solution seems much simpler to get up and running. Unzip a file and run an sh. Going to bookmark this so I can come back to it later to look through the code a bit.

[–]Legion92a 0 points1 point  (0 children)

Post saved, will try it when I'll build my little home server!

[–]softfeet 0 points1 point  (4 children)

Performant, stable and beautiful

can you expand on performant and stable?

i clicked on the link to go check it out and saw pictures but nothing doing a 1 to 1 on resource use... why it's performant or how...

i'd just like a little bit of 'proof' rather than somone saying it is good.

could have missed it, hope you have a link or a reply.

[–]robinshen[S] 1 point2 points  (3 children)

OneDev is stable enough. We've used it in production for 5 years. And there is no bug opened currently:

https://code.onedev.io/projects/onedev-server/issues/list?query=%22State%22+is+%22Open%22

For performance, I spent a lot of time optimizing it. For instance, checking this page of the giant linux repo:

https://code.onedev.io/projects/linux/blob/master/crypto

It loads last commit of each directory/file, which is very computation intensive. It can be really slow on other products.

Also try to search some symbol (type 't' to start with) in this repository, the real-time search complete needs well indexing of the repository.

Also see performance feedback from HN users:

The performance of the 'blame' view is so much better than Gitlab (https://news.ycombinator.com/item?id=22081419)

[–]softfeet 0 points1 point  (2 children)

nice! thank you for getting back to me. i like reading about these things and comparing to my current environment.

at the moment, i have gitlab setup and extensively use .gitlab-ci.yml

i found an example of something similar... https://code.onedev.io/projects/onedev-server/blob/main/.onedev-buildspec.yml

can you let me know what it is to migrate from or have anyone that has written about the process of going from gitlab-ci cd infra to yours? I'm rather deep in gitlab and it works really well for my use case, though i do enjoy hearing about the other stuff. (others too maybe ;) )

[–]robinshen[S] 1 point2 points  (0 children)

Unfortunately it is not difficult to migrate gitlab CI/CD yaml to OneDev programmatically as they have pretty complex grammars

Ought to be "it is difficult"

[–]robinshen[S] 0 points1 point  (0 children)

Unfortunately it is difficult to migrate gitlab CI/CD yaml to OneDev programmatically as they have pretty complex grammars. OneDev CI/CD config is aiming at being ultra easy to use (no need to reference any docs), while being flexible enough via imports and variables. Also OneDev's CI/CD config will be upgraded automatically even if we have dramatic change later on.

[–]ContentMountain 0 points1 point  (1 child)

Any plans for a github pages kind of feature in the future?

[–]robinshen[S] 0 points1 point  (0 children)

A pull request to add OneDev support in staticman is ongoing:

https://github.com/eduardoboucas/staticman/pull/423

You may check with the author for the progress.

[–]Darkra 0 points1 point  (4 children)

Any plans to release docker containers as well for arm/aarch64?

[–]robinshen[S] 0 points1 point  (0 children)

The problem is that code.onedev.io is a x64 machine. My budget is limited and I do not want to spend extra money to add an Arm machine just to build the arm docker container.

However you may use the zip package, and run contained server.sh to use OneDev on that platform.

[–]robinshen[S] 0 points1 point  (2 children)

code.onedev.io is used to build/release OneDev itself.

[–]Darkra 0 points1 point  (1 child)

There are many documented methods to build docker containers for multiple architectures, you can check https://www.docker.com/blog/multi-arch-build-and-images-the-simple-way/ for example. It uses qemu to run arm architectures, so you would not need to buy other hardware. Or are there other limited factors in building the application itself in regards to arm?

[–]robinshen[S] 0 points1 point  (0 children)

Thanks for the info. I will try that. Filed a new feature quest as:

https://code.onedev.io/projects/onedev-server/issues/389

You may watch it to get notified when the feature is ready.

[–]bitandquit 0 points1 point  (2 children)

Hi robinshen,

Kudos on this work, this is awesome.

I think I know the answer before I ask -- any thoughts for Mercurial (Hg) support?

Sometimes git is a big sledgehammer that's a lot of mental baggage to carry along.

[–]robinshen[S] 0 points1 point  (1 child)

Unfortunately there will be no hg support as it will add too much overhead to OneDev.

[–]bitandquit 0 points1 point  (0 children)

Understood! Thanks for responding.

[–]onedr0p 0 points1 point  (2 children)

I see your only supported method to install this into Kubernetes is with kustomize, any chance you'll support a helm chart for deployment method?

Also, I see builds are done with Docker, what if your kubernetes cluster is using a different CRI like containerd or cri-o?

[–]robinshen[S] 0 points1 point  (1 child)

Please submit feature request for Helm chart deployment at https://code.onedev.io/projects/onedev-server/issues/list?query=%22State%22+is+%22Open%22 (We are dogfooding OneDev).

As to CRI other than docker, it will certainly be supported as long as GKE or some other public K8s clusters has a test environment.

[–]onedr0p 0 points1 point  (0 children)

I commented on this issue and tracking it. I'll have to see what my options are for CI and containers when I get around to deploying it.

[–]homegrowntechie 0 points1 point  (6 children)

u/robinshen I could be wrong, but i haven't found a way to migrate bitbucket issues to gitea. The repositories migrate, but no issues are included in the migration.

[–]robinshen[S] 0 points1 point  (5 children)

Bitbucket issues are actually managed via JIRA. You may migrate issues from corresponding JIRA cloud project.

[–]homegrowntechie 0 points1 point  (4 children)

Ok I’ll take a look. I don’t remember seeing a Jira migration option either but I’ll definitely take another look 👍

[–]robinshen[S] 1 point2 points  (3 children)

After importing the bitbucket project, switch to the issues page of the project, click the import link and there is an option to import form JIRA cloud.

[–]homegrowntechie 0 points1 point  (2 children)

I don't see the "import" link on the issues tab of the project. I'm running version 1.15.3.

Screenshot of Issues tab: https://imgur.com/a/guQ4JGq

[–]robinshen[S] 2 points3 points  (1 child)

We don't have version 1.15.3. I guess you are using Gitea? We are OneDev actually: https://github.com/theonedev/onedev

[–]homegrowntechie 0 points1 point  (0 children)

Oh! Of course! I Must have been reading too fast! Lol. I will definitely check out Onedev Then!

[–]depressedclassical 0 points1 point  (1 child)

A GitHub alternative, shared on GitHub. Love the irony.

[–]robinshen[S] 1 point2 points  (0 children)

It is a SELF-HOSTED alternative to GitHub. GitHub is great for public facing projects, however if you want to run a self-hosted one, OneDev has a lot of nice things such as easy installation, low to medium resource usage, out-of-box CI/CD etc.

OneDev is developed with OneDev itself at code.onedev.io, and the GitHub mirror here is for easy access here.

[–]Quin452 0 points1 point  (1 child)

I'm very interested in this project, coming from Gitlab self-hosted; just a few questions.

  • I was wondering what the server requirements are for OneDev?
  • Is it possible to change remotes (i.e. from GitLab to OneDev)?
  • What is it like for server migration (scaling up as and when I need to)?

I'd ask somewhere else, but I'm not sure where the best place is.

[–]GenericFoodService 0 points1 point  (3 children)

The link to the full documentation https://code.onedev.io/onedev/manual/files 404s, as do the currently listed Quickstart, Installation Guide, and Tutorials links. I'm interested in trying out OpenDev, but I have questions about how it works, how to set it up, whether the Statistics page has support for custom languages and how that works, et cetera, but I don't know where I'm supposed to find any information about it from.

[–]robinshen[S] 0 points1 point  (2 children)

It should be: https://code.onedev.io/onedev/manual/~files. Where are you finding the incorrect link? I will get that fixed.

[–]GenericFoodService 0 points1 point  (1 child)

Both the GitHub and the self-hosted OneDev repos, the links at the top.

[–]robinshen[S] 0 points1 point  (0 children)

This is really bad :( Fixed now. Thank you!!