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

Create a CI setup for the image build #21

Closed
hferentschik opened this issue Oct 17, 2016 · 7 comments
Closed

Create a CI setup for the image build #21

hferentschik opened this issue Oct 17, 2016 · 7 comments

Comments

@hferentschik
Copy link
Member

We should create a CI setup for building and smoke testing the image build. The build should create the image and then sanity check that is bootable (file, isoinfo). It would be great if we could test the ISO using docker-machine to create a VM, but that would most likely require nested virtualization.

The actual ISO building could probably be done on TravisCI using its docker service.

@hferentschik hferentschik added this to the POC milestone Oct 17, 2016
@hferentschik
Copy link
Member Author

Actually it might more sense to go to CentOS CI right away, since there we will get nested virtualization and we have most of the required setup already as part of vagrant-service-manager - https://github.com/projectatomic/vagrant-service-manager/tree/master/.ci

@LalatenduMohanty
Copy link
Member

Actually it might more sense to go to CentOS CI right away, since there we will get nested virtualization

+1.

@hferentschik
Copy link
Member Author

Ok, just we are on the same line, this is what I have in mind:

  • CI environment is CentOS CI
    • We already have permissions there, so we should be just able to create a new job
    • We can get the basic setup from vagrant-service-manager
  • Provision (installation of required software, eg livecd-creator) is via Ansible
  • We check in the Jenkins job config, see https://github.com/projectatomic/vagrant-service-manager/blob/master/.ci/jenkins-execute-script.py.
    • This is atm not automatically picked up, but at least we have the config under version control
  • The Jenkins jobs will call make iso && make test && make install where:
    • make install is building the ISO
    • make test is running smoke tests against the ISO, potentially driven by Avocado
    • make install rsyncs the ISO into the project persistent store for downstream consumption. I think the space each project gets is limited, so we need to come up with some sort of rolling deployment
  • The build tool for this project is make. Everything needs to go through the Makefile

@hferentschik
Copy link
Member Author

Also, I'd start with getting the basic build running (just getting make iso to work) and take it from there.

@coolbrg
Copy link
Contributor

coolbrg commented Dec 12, 2016

@hferentschik I have the similar approach in my mind too.

The Jenkins jobs will call make iso && make test && make install where:

I think that it is make iso and make test only
where

  • make iso build the ISO in build/iso
  • make test runs the test script through avocado which contains
    • booting of ISO
    • run few docker-machine commands against the VM to test ISO is working

I am not getting what make install will do.

@hferentschik
Copy link
Member Author

I am not getting what make install will do.

We want to archive the ISO (maybe not on each build, but definitely nightlies). All build related disappears after completion when the machine is put back to the pool. You need to make sure that artifacts you want to keep gets copied - https://wiki.centos.org/QaWiki/CI/GettingStarted#head-a46ee49e8818ef9b50225c4e9d429f7a079758d2

So call it install or copy or upload, but the intend is to be able after a successful test and build to copy the artifact (ISO) to http://artifacts.ci.centos.org. The copy should be a bit smart and it would be nice if we could control how many or for how long we keep the artifacts. For example, if we upload on each build, it probably does not make sense to have more than the latest three.

Last but not least, the generated directory structure on the file server needs to allow us to map the artifact to a build.

@hferentschik
Copy link
Member Author

Basic CI setup is there. I am closing this for now. I am going to create a follow up issue for archiving built ISO.

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

3 participants