Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add Rook to cross-cloud CI testing #137

Open
jbw976 opened this issue Mar 30, 2018 · 8 comments
Open

add Rook to cross-cloud CI testing #137

jbw976 opened this issue Mar 30, 2018 · 8 comments

Comments

@jbw976
Copy link

jbw976 commented Mar 30, 2018

As per discussion on the CI mailing list, we would love for Rook to be integrated with the cross-cloud CI testing provided by the CNCF.

Our current Jenkins setup is hosted on an instance in Amazon EC2 and can be accessed at https://jenkins.rook.io.

That master instance dynamically brings up slaves in EC2 and GCE to deploy various versions of Kubernetes to those public cloud environments and run end to end integration testing there. Here's a recent build from master that shows the small matrix we currently deploy and test on: https://jenkins.rook.io/blue/organizations/jenkins/rook%2Frook/detail/master/559/pipeline

  • GCE w/ K8s 1.6.1
  • GCE w/ K8s 1.6.13
  • AWS w/ K8s 1.7.11
  • AWS w/ K8s 1.8.5
  • GCE w/ K8s 1.9.1

We would love to expand this matrix and integrate with the same CI services/environment that other CNCF projects are using. Thanks!

/cc @bassam @travisn

@travisn
Copy link

travisn commented Nov 27, 2018

We would love to get going on this. Where can we find more info? @denverwilliams @lixuna any pointers? thanks!

@taylor
Copy link
Contributor

taylor commented Nov 28, 2018

Hi, @travisn.

We'd welcome help in getting Rook on the CNCF CI dashboard as well as collaborations on CI/CD in the community as well.

It sounds like Rook is already doing some CI which maybe someone would like to talk about at the next CNCF CI WG meeting (Jan 22nd).

Regarding the cncf.ci dashboard we have short and longer term options. We don't have a quick answer to help you get started unfortunately. While we are working on new documentation and platform updates to allow projects to help directly to add themselves, that work is still in-progress and not yet ready. In the short term adding a project to the cncf.ci dashboard requires re-implementing part of a projects build/deploy/test process in Gitlab and that is not a self-service process unfortunately. I'll go more into that below.

Longer term, we are planning a new iteration of the dashboard which includes integration+collaboration with projects after Kubecon Seattle 2018. Maybe we can meet in-person in Seattle at Kubecon to discuss both the short and longer term options.

An overview of what how the system currently works should be helpful.

Currently the dashboard is populated based on data pulled from the underlying CI platform (Gitlab) or pulled from external CI systems (if we have created an integration). At the moment the only integrations to external CI systems are for build artifacts.

K8s is currently built from source (release + HEAD on master). Then k8s is deployed (using the (cross-cloud provisioner) to all of the supported cloud providers.

After the builds artifacts are collected for the projects deployments to all of the k8s clusters happens. At which point integration tests can be run if any exists.

Some options for integration of Rook deploy+tests on the dashboard:

  1. Gitlab-only: Understand + implement the build and deployment stages for Rook in gitlab.cncf.ci
  2. Gitlab+Jenkins: Integrate Jenkins artifacts for builds. Implement deployment in Gitlab

Option 1 has been the default choice. It would be similar to what you have on Jenkins. Gitlab has a configuration file that has the commands to create a build and run whatever other commands are needed. We would need to see how Rook would be deployed and tested with k8s. Implementation in the various gitlab stages including running the integration tests would be similar to Jenkins.

Option 2 is similar, expect the build artifacts are pulled from Rook's Jenkins server (or some other artifact repository).

Either option will require taking build and test process used in the Rook Jenkins server and re-implementing in the Gitlab system.


Fyi, A future option we hope to provide is pulling all status information from a projects CI system and not running anything in a different system. It would be something like, Rook Jenkins + CNCF.ci Dashboad. Help Jenkins to use cross-cloud for provisioning k8s clusters and deploy Rook to those clusters. Integrate Rook Jenkins results with Cross-Cloud CI status repository which provides data for the Dashboard. The different Cross-Cloud CI components can be used outside of the implementation for the CNCF dashboard.


So implementing one of the current options...

The first thing would be determining where/how Rook fits in with the current system and dashboard. Since Rook provides a storage orchestrator for K8s I'm not sure where it would fit in and what integration tests we want to highlight. The other projects run on the clusters themselves in containers. We need to determine that first. Then implementation of the steps in Gitlab for build + integration tests. Otherwise that would be something someone on the Cross-Cloud CI team would work on.

/cc @denverwilliams @lixuna

@travisn
Copy link

travisn commented Dec 14, 2018

@taylor Thanks for all the background on what it might look like to integrate with the CNCF CI. We would really prefer to have the builds and integration tests all running as you described in option 1. Unfortunately I didn't think to think to discuss this at kubecon. We can plan on joining the community meeting next month to discuss.

@jbw976
Copy link
Author

jbw976 commented Jan 22, 2019

Thank you for the discussion today in the CI working group meeting. I think the CNCF CI v2.0 slides that were shown are going in a good direction that will result in more CNCF projects integrating with the CNCF CI efforts. The Rook project is definitely interested in integrating as well. From the roadmap, it looks like the March timeframe will add documentation for how to add a project to this effort, so we can engage further then.

We initially had hopes for the CNCF hosting the full build/integration environment for us and getting rid of the burden of our own Jenkins server that we are hosting and managing on our own. But it sounds like that is not the direction that will be supported going forward, so we will need to look into how best our existing CI efforts with Jenkins can be integrated into the v2 efforts.

@dankohn
Copy link
Contributor

dankohn commented Jan 23, 2019 via email

@taylor
Copy link
Contributor

taylor commented Jan 25, 2019

Hi, @jbw976.

It sounds like we have two efforts that can be worked on independently:

  1. adding Rook to the cncf.ci dashboard
  2. general CI hosting/help for the rook project

As we already have a Jenkins integration (for ONAP) I think integration with Rook existing Jenkins will lower the effort for adding the project to the dashboard. As we are closer to adding Rook we'll reach out to discuss items like published artifacts for different stages, smoke tests deployments, and e2e tests.

Regarding CI for the Rook project I suggest looking at hosted options rather than maintaining your own CI system (as that is not something desired within the project). There are many choices which provide free hosting for open source projects, including:

Hosted CircleCI and TravisCI are being used by many projects in the CNCF and K8s community.

If it's decided to continue self-hosting, I suggest looking at alternatives to Jenkins which should be easier to maintain such as Buildbot or CircleCI.

@dankohn
Copy link
Contributor

dankohn commented Jan 25, 2019 via email

@jbw976
Copy link
Author

jbw976 commented Jan 25, 2019

Thanks for the pointers and discussion. It sounds like the short term and easier goal of adding rook to the cncf.ci v2 dashboard will be a great first step. Please let us know when the documentation or process for adding projects (march on the roadmap) is ready and we'll be happy to engage.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants