Replies: 4 comments 1 reply
-
@jtopjian I would use your feedback on this one, thanks. |
Beta Was this translation helpful? Give feedback.
-
I like this idea a lot and I think it's really cool that you were able to create an Action for devstack.
It's been beneficial to have all services tested for the occasions when a change might affect more than one service. For example, a change to blockstorage could affect how an instance attaches a volume. Or a change to networking could affect the port configuration of an instance. Is it possible to manually trigger different test suites with Actions? For OpenLab we would do:
when we wanted to run the PR against the Queens release. Can something like this be done for different OpenStack services? I would not consider this to be a blocker since changes that affect more than one service only happen occasionally.
This is impressive. |
Beta Was this translation helpful? Give feedback.
-
First proposal: #2307 |
Beta Was this translation helpful? Give feedback.
-
Problem Description
It was in late 2017 when openlab folks reached out and proposed to integrate OpenLab systems into Gophercloud CI.
This was a great idea at that time, Zuul is one of the most powerful system to drive continuous integration and using nodepool was a given for us, where we had free resources for testing.
The challenge after a few releases, where CI jobs weren't very well maintained and we could observe a lot of failures in our tests. Here is a quick overview of what we skip because it doesn't work fine in Openlab.
Very often, it involves patching OpenLab Zuul jobs which is an unmaintained (by unmaintain I mean that they were copied once and now additions are made when needed, but they don't follow OpenStack zuul jobs anymore, where a lot of features were added) fork of the OpenStack Zuul jobs and therefore hard to make it work at every release.
For example, if a contributor wants to add a new service, they'll have to patch OpenLab Zuul jobs to configure Devstack for the new service (this logic already exists in OpenStack zuul jobs, but we have to duplicate it here), wait for a review and then run the tests in Gophercloud. If a configuration is wrong or missing, they have to repeat this operation until this works, because the integration between Openlab Zuul jobs & Gophercloud isn't fast as you can see.
This process makes iterations slower than they could be if we moved Gophercloud to OpenStack, where we could directly use the Devstack jobs that are well maintained by the OpenStack community. See #2257, it's pretty clear that for now we won't move the project.
In summary, here is a list of problems that we have today:
Proposed Change
Overview
I would like to propose a new way forward to improve our CI.
** As a developer, if I change a file for
blockstorage
, I want to have a CI job that will deploy Cinder and run acceptance tests forblockstorage
only. I don't care about other services.Here is a prototype that implements Github Actions to run acceptance tests:
Both run in ~20 minutes.
The job layout for Manila looks like this:
gophercloud/.github/workflows/functional-sharedfilesystems.yaml
Lines 1 to 71 in 7f0d0e9
One layout per service (baremetal, compute, etc) and we can configure when to run them, depending on which file is touched.
Alternatives
Stay under OpenLab and:
Move the project under Opendev and:
Developer impact
Quality impact
Implementation
Assignee(s)
@EmilienM + ?
Work items
Dependencies
Testing
Testing happens every time a PR is made to the new CI jobs, so we get immediate feedback.
A new CI job won't be voting until it's actually working and stable.
Documentation Impact
We need to document:
Any feedback is highly welcome.
Beta Was this translation helpful? Give feedback.
All reactions