eclipse-jkube / jkube

Build and Deploy java applications on Kubernetes
https://www.eclipse.dev/jkube/
Eclipse Public License 2.0
769 stars 515 forks source link

Supporting drone pipelines #1534

Open kameshsampath opened 2 years ago

kameshsampath commented 2 years ago

Description

Drone is continuous delivery tool that uses containers to build pipelines. As a Java developer I would like to have JKube generate a standard .drone.yml for the Java project then use that YAML to trigger Drone pipelines.

Support for Drone pipelines to build the Java projects.

CC: @manusa , @rohanKanojia

manusa commented 2 years ago

Sounds good. This could be an optional enricher. I guess, that this requires java types to map Drone's custom resources. With the upcoming release of Fabric8 Kubernetes Client 6.0 we'll include a CRD to Java generator that might simplify this task very much.

kameshsampath commented 2 years ago

@manusa - this more done at the client side than at server side. The .drone.yaml does not apply anything on the Kubernetes though Kubernetes Runner is one option. My thought here is to generate the standard Java specific .drone.yaml and then when we do mvn k8s:build it triggers the Drone pipeline.

What do you think about this?

manusa commented 2 years ago

:sweat_smile: Well, I guess I haven't checked the Drone project that much.

Yes, this sounds good. I understand that the pipeline would generate a container image and maybe push it to the cluster's registry? (This more being related to #767 #439) One of the project goals is to cover as many build strategies and options as we can.

So I'm still not sure if this is what we'd achieve, but being able to run:

mvn package k8s:build -Djkube.build.strategy=drone # k8s:push # (maybe this too)

and having the container image built remotely, would be awesome. In this case, besides the .drone.yaml, the build should behave similarly to what we have in the S2i build. The package should be piped to the remote server. However, I understand this might be a further step on the initial implementation.

kameshsampath commented 2 years ago

😅 Well, I guess I haven't checked the Drone project that much.

It will be nice if you can play with it to get some more idea and thoughts

Yes, this sounds good. I understand that the pipeline would generate a container image and maybe push it to the cluster's registry? (This more being related to #767 #439) One of the project goals is to cover as many build strategies and options as we can.

So I'm still not sure if this is what we'd achieve, but being able to run:

mvn package k8s:build -Djkube.build.strategy=drone # k8s:push # (maybe this too)

and having the container image built remotely, would be awesome. In this case, besides the .drone.yaml, the build should behave similarly to what we have in the S2i build.

s2i is close but then the Drone is pipelines are run using containers just like tekton but little simpler :)

The package should be piped to the remote server.

This might be a good one. We could also add watch so that we can trigger the pipelines when source changes ?

However, I understand this might be a further step on the initial implementation.

Yes, I want to have the very basics to be working first, then we can keep improving.

sunix commented 2 years ago

Hey @kameshsampath, is the plan, you to contribute a first draft of this feature and us to review it? Let us know.

kameshsampath commented 2 years ago

yes @sunix thats the plan

sunix commented 2 years ago

Allright 🙏🏼