Drone

Exploring Drone, have questions

I’m exploring replacing a home-grown CI/CD utility that has very similar functionality to this (modeled after Bitbucket’s Pipelines, actually) and I had some questions about functionality:

  1. Is it possible to limit the repos that show in Drone to a certain whitelist pattern? For example, I don’t want to see my personal repos in Drone, I only want to see my org repos. It looks like this was an enterprise feature in .8, and I saw a comment that it would be available for all in .9, but I don’t see this in 1.x
  2. It looks like builds can be kicked off by new tags based on an Event Trigger, am I correct?
  3. The current system we have will fire off Slack notifications for all builds automatically, it doesn’t have to be a part of the build steps - is there a way to do this in Drone? After much Googling, it seems my only option may be to write a custom Config Plugin that appends a Slack step to every pipeline if one doesn’t already exist; but I wanted to verify before I took a crash course in go and attempted my hand at it.
  4. Does Drone create a separate network stack for each build?
  5. Are there any easy ways of deploying code to Windows machines? Most of our apps are PHP web apps and unfortunately some of our internal servers are Windows Servers. Our current build system is able to use Samba/CIFS to mount the Windows shares and deploy to them from Linux. I see the ability to mount host volumes in the build containers, so maybe something similar can be done there?

I think that’s all for now, thanks!

Answering some of my own questions after playing a little

  1. Yes, using the DRONE_REPOSITORY_FILTER option
  2. Yes
  3. Yes, I saw another discussion on here that mentioned this and I can see that in the code as well.

3 and 5 I’m still trying to figure out; seems like what I mentioned above might the way to do those items.

  1. The current system we have will fire off Slack notifications for all builds automatically, it doesn’t have to be a part of the build steps - is there a way to do this in Drone?

This sort of functionality can be achieved using global webhooks, which could be used to trigger Slack notifications at the completion of every build. See How to use Global Webhooks

Note that there is no requirement to use Go for custom webhooks (or config plugins for that matter). Everything uses standard REST / HTTP.

  1. Does Drone create a separate network stack for each build?

Yes

  1. Are there any easy ways of deploying code to Windows machines?

Drone is a workflow engine at its core. It does not concern itself with how to accomplish specific tasks (e.g. deploy to windows, or deploy to kubernetes). Drone gives you the primitives to execute shell command which means you can do anything with Drone that you can do from a shell (which should be pretty much anything), and the ability to encapsulate commonly used shell commands inside a re-usable plugin.

To deploy to windows you should first figure out how you would do this from a unix shell. You could then add those commands directly to a pipeline step. You could then wrap those commands in a re-usable plugin [1][2]. Or you could see if a plugin already exists to do what you want.

[1] http://plugins.drone.io/
[2] https://docs.drone.io/plugins/