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

Use Argo workflow engine for CI/CD or releases #205

Closed
jlewi opened this issue Dec 8, 2017 · 12 comments
Closed

Use Argo workflow engine for CI/CD or releases #205

jlewi opened this issue Dec 8, 2017 · 12 comments
Assignees

Comments

@jlewi
Copy link
Contributor

jlewi commented Dec 8, 2017

https://applatix.com/open-source/argo/

This looks like it could be much lighter weight than Airflow. Looks like it would be simpler to allow testing of changes to the workflow in presubmits.

Might be interesting to experiment with Argo for our release pipeline and see if we like it more than Airflow.

@bhack
Copy link

bhack commented Dec 8, 2017

Seems interesting and with a "native" design.

@jimexist
Copy link
Member

jimexist commented Dec 9, 2017

Personally, I think Argo (or any other mature k8s-native approach) would be a better fit than Airflow. It allows for better inter-operationality and a unified resource control and scheduling.

Would love to give it a try soon.

@jlewi jlewi added this to the Kubecon Europe milestone Jan 10, 2018
@jlewi
Copy link
Contributor Author

jlewi commented Jan 10, 2018

We're using Argo for google/kubeflow and its much better. I think we want to migrate ASAP because the friction around Airflow is impeding developer velocity.

@bhack
Copy link

bhack commented Jan 10, 2018

There is also https://github.com/argoproj/argo-ci in early stages.

@jlewi
Copy link
Contributor Author

jlewi commented Jan 12, 2018

I haven't looked at argo-ci. Any idea what it provides relative to prow?

@bhack
Copy link

bhack commented Jan 12, 2018

I suppose that is an early stage CI Argo flavour (SCM integration, Artifact, Deployment etc..)
/cc @alexmt

@jlewi
Copy link
Contributor Author

jlewi commented Jan 12, 2018

Replacing Airflow with Argo will make it much easier for contributors to access the logs. I think we can make the Argo UI publicly available and I think its more friendly then the Airflow Ui.

I think to dump Airflow we need to do the following

Add a flag to py/release.py so we can control the label that will be used for the docker image and in the helm chart path.

  • This way we know what path to use for the helm chart in subsequent steps and we won't need a mechanism like xcom to allow steps to communicate.

At this point you can write a ksonnet component to run our E2E tests. You can look at what I did for Kubeflow.

@ScorpioCPH Any help with this would be great. I think removing the friction around our E2E tests will allow us to iterate more quickly.

@ScorpioCPH
Copy link
Member

@jlewi Thanks for the background information! Will take a look tomorrow :)

@alexmt
Copy link

alexmt commented Jan 13, 2018

@jlewi, Argo CI is envisioned as travis-ci like system, powered by argo workflows. I've briefly looked at prow and seems like argo ci is very similar. Roadmap is available here: https://github.com/argoproj/argo-ci/blob/master/ROADMAP.md . Requests and comments are very welcome.

@jlewi
Copy link
Contributor Author

jlewi commented Jan 17, 2018

We've been using Prow for a quite a while and I think its been around longer then Argo. I think there's overlap between Prow and Argo CI. Its not obvious to me what benefit Argo CI would provide over the corresponding features in Prow.

The current plan is to use Prow to trigger Argo workflows; this is what we do for google/kubeflow and it works pretty well. We'd like to do the same for tensorflow/k8s.

@jlewi
Copy link
Contributor Author

jlewi commented Jan 31, 2018

I've started working on this.

jlewi added a commit that referenced this issue Feb 4, 2018
* Argo should be much easier to manage and use for our E2E tests
   Related to #205
   * In particular it should provide better isolation between test runs and easier access to logs
* Create an Argo workflow to replace our Airflow workflow for running E2E tests
* Create a ksonnet application to manage our E2E workflows.
* Need to modify some of the steps in the workflow to activate the service account.
* Update the Docker image used by our prow jobs to trigger the workflow rather than use Airflow.
* Delete all the files related to E2E pipelines using Airflow.
@jlewi
Copy link
Contributor Author

jlewi commented Feb 4, 2018

#358 is submitted. Tests are using Argo now.

I deleted the cluster GKE cluster prow in project mlkube-testing which was used to run Airflow.

@jlewi jlewi closed this as completed Feb 4, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants