Drone

On generic git or custom provider once again

So, I made a very deep research of the CI/CD market and came up with a conclusion that Drone CI is the most suitable for our needs:
– Self hosted without meaningless pricing options (see Circle CI self-hosted, this is insane for small teams)
– Declarative .yaml configuration
– Clean and unobtrusive UI
– Feature-rich via plugins
– Docker in mind

Unfortunately, our team exists in corporate standards with very restrictive infrastructure. We have our code in self-hosted bitbucket instance, which is very outdated. Basically, I just can’t setup bitbucket integration via tokens because this options is unavailable in our bitbucket setup yet. In other words, I control every part of my infrastructure excepting SCM.

I understand that Drone uses SCM functionalilty on its 100% with all the options like authorization, webhooks, etc. However, it would be very nice to have an ability to provide all this functionaltiy with external services or plugins. A custom auth service, a custom webhooks service and a generic git checkout.

Please note that I don’t ask to write all this stuff, I’m just asking to have a potential ability to integrate some custom tools instead of predefined ones.

I understand that Drone uses SCM functionalilty on its 100% with all the options like authorization, webhooks, etc. However, it would be very nice to have an ability to provide all this functionaltiy with external services or plugins. A custom auth service, a custom webhooks service and a generic git checkout.

You already have this option. You just need to pick a provider (e.g. github) and then make a small server that masquerades as github (implements the required endpoints). Drone will think it is connecting to github but will instead by connecting with your custom implementation, which in turn will be interacting with your generic git server.

This is great news, thank you. But could you please point me in right direction, which endpoints should I implement in such a proxy server? I believe there are some info which methods Drone’s providers are using in order to get the whole system alive.

You would have to look through the code to find all endpoints. The good news is that all the code for interacting with the scm are in the same place, just choose a provider from the list:

And the code for authentication can be found here:

Most of the providers use standard oauth2 so you would just need to make sure you mirror the same endpoint paths.

Thank you, this looks like a great place to start. I’ll dig it.

Actually, the one more question was born. I see stash directory in provided repos. In fact, stash is Bitbucket former name and I believe this is exactly what I need for our outdated self-hosted Bitbucket instance (it’s v4.x). I can even see some old github issues for Bitbucket sever v4.13 – this means it should work somehow. But I don’t see any documentation on it. Is there a chance that this info is still online somewhere?

You can find the Bitbucket Server (Stash) documentation here:
https://docs.drone.io/server/provider/bitbucket-server/

Drone 1.x and higher supports Bitbucket 5.x and higher. Older versions of Drone may support older versions of Bitbucket Server, however, these older versions of Drone are end-of-life and are no longer being supported or distributed.

Ok, got it. For now I’m researching an approach with a local Gitea instance which mirrors our bitbucket repos and refreshes itself via bitbucket’s post-commit hooks. This looks hackish but it seems to work with minimal effort. Thanks for your help once again.