Barak Korren created OVIRT-1984:
-----------------------------------
Summary: Create "out-of-band" slave cleanup and setup jobs
Key: OVIRT-1984
URL: https://ovirt-jira.atlassian.net/browse/OVIRT-1984
Project: oVirt - virtualization made easy
Issue Type: New Feature
Components: Jenkins Slaves
Reporter: Barak Korren
Assignee: infra
Right now, we run slave cleaup and setup steps as part or every single job we
run. This has several shortcomings:
# It takes a long time from the point a user submitted a patch to the point his
actual test or build code runs
# If slave setup or cleanup steps fail - they fail the whole job for the user
# If slave setup or cleanup steps fail - they can keep failing for many jobs
until the CI team intervenes manually
# There is a "chicken and an egg" issue where some parts of the CI code have to
run before the slave was properly cleaned up and configured. This makes if
harder to add new slaves for the system.
Here is a suggested scheme to fix all this:
# Label all slaves that should be cleaned up automatically as 'cleanable'. This
is mostly to prevent the jobs described here from operating on the master node.
# Have a "cleanup scheduler" job that finds all slaves labelled as "cleanable"
but not as "dirty" or "clean", labels them as "dirty" and runs a cleanup job on
them.
# Have a "cleanup" job that is triggered on particular slaves by the "cleanup
scheduler" job, runs cleaup and setup steps on them and then labels them as
"clean" and removes the "dirty" label.
# Have all other CI jobs only use slaves with the "clean" label.
Notes:
# The "dirty" label is there to make the "cleanup scheduler" job not trigger
twice on the same slave before the"cleanup" job started cleaning it up.
# Since all slaves used by the real jobs will always be clean - there will no
longer be a need to run cleanup steps in the real jobs, thus saving time.
# If cleanup steps fail - the cleanup job will fail and the slave will not be
marked as "clean" so real jobs will never try to use it.
# To solve the "chicken and egg" issue, the cleanup job probably must be a
FreeStyle jobs and all the cleanup and setup code must be embedded into it by
JJB. This will probably require a newer version of JJB then what we have so
setting OVIRT-1983 as a blocker.
# There is an issue of how to make CI for this - if cleanup and setup steps are
removed from the normal STDCI jobs, they they will not be checked by the
"check-patch" job of the "jenkins repo". Here is a suggested scheme to solve
this:
## Have a way to "loan" slaves from the production jenkins to other Jenkins
instances - this could be done by having a job that starts up the Jenkins JNLP
client and tells it to connect to another Jenkins master.
## As part of the "check-patch" job for the 'jenkins' repo - start a Jenkins
master in a container - attach some production slaves to it and have it run
cleanup and setup steps on them
--
This message was sent by Atlassian Jira
(v1001.0.0-SNAPSHOT#100083)
_______________________________________________
Infra mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/infra