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

Test build with Travis CI #1044

Closed
nyh opened this issue Jun 18, 2019 · 4 comments
Closed

Test build with Travis CI #1044

nyh opened this issue Jun 18, 2019 · 4 comments

Comments

@nyh
Copy link
Contributor

nyh commented Jun 18, 2019

Travis-CI offers free CI (builds, tests, etc.) services to open-source projects. I opened an OSv page there:

https://travis-ci.org/cloudius-systems/osv

By adding a properly-formatted travis.yml project (see explanation in https://docs.travis-ci.com/user/tutorial/) we could easily ask Travis to automatically try to build OSv after every commit. Even more interestingly, we can ask it to build on several different Linux distributions, which can help us make sure that OSv still builds properly on older distros which the developers no longer have or test.

In the long run, it would be nice for these automated build to also do "make check" (i.e., run the tests), but these will be very slow because Travis doesn't support nested virtualization so everything will be run in qemu's emulator. But OSv's build itself should be quick it enough (it only minimally uses qemu to build the image - this will be slower than usual but probably not prohibitively slow).

@nyh
Copy link
Contributor Author

nyh commented Aug 4, 2019

Another option to consider is circleci - https://circleci.com/, which allows to use docker. In Seastar we switched from travis to circleci: scylladb/seastar@34b8eda.

@PabstMatthew
Copy link
Contributor

PabstMatthew commented Nov 20, 2019

Hi,

A couple of peers and I from the University of Texas at Austin are interested in contributing to OSv, and we thought a good place to start would be implementing some basic CI infrastructure (#1044). A couple of us have experience with CI/DevOps activities, so it shouldn't be too difficult.

We have a few concerns though:

  • The Dockerfile is missing make, so we'd have to add that dependency to run the build scripts
  • When we try to run scripts/build check with the latest commit (cccc7d4035f8c81e263340df1ba4c5db305714a1), tracing_smoke_test fails on the tcpdump section
  • The testing script fails immediately if any test fails, rather than collecting the output of all tests

Discussion at: (https://groups.google.com/d/msg/osv-dev/dqca0wjU2Lo/qApxTAmFBQAJ)

@wkozaczuk
Copy link
Collaborator

wkozaczuk commented Nov 20, 2019

Ideally, we would want to make a new process repeatable. By that I mean we should have an ability to create test images/packages independently from running them. To achieve we might have 2 docker files - one to build and another one to run the tests.

Also, the test results should be collected and published somewhere. To achieve this we could use capstan. The test packages could be uploaded to github release assets unless there is a better idea.

Recently I have pushed the number of shell and python scripts aiming to help test a variety of workloads/apps on OSv. These also illustrate how capstan can be used above. Potentially we could reuse some of these scripts from build/run docker file. For more information about automated testing framework please read this.

wkozaczuk pushed a commit that referenced this issue Dec 6, 2019
After this patch, subsequent commits to the osv GitHub Repo should
trigger a build at https://travis-ci.org/cloudius-systems/osv.

At the moment, the build consists of building the Ubuntu Docker image
and building osv. This can easily be expanded upon by adding new entries
to the .travis.yml. Addtionally, this could also be changed to not use
the Docker image, if desired.

Future expansion of this functionality is detailed here:
https://github.com/cloudius-systems/osv/wiki/Automated-Testing-Framework

The goal would be to build and test various apps, to ensure the change
doesn't make any major regressions.

Refs #1044

Signed-off-by: Mason Davis <mason.davis@utexas.edu>
Message-Id: <20191203190247.507858-1-mason.davis@utexas.edu>
wkozaczuk added a commit that referenced this issue Mar 9, 2020
This patch sets up OSv travis CI pipeline to build and publish kernel
as well as couple of capstan packages for every push to the main
OSv repo.

To make it possible, we use an open source project - ci-release-publisher -
that provides python and shell scripts to automate building and publishing of build
artifacts to github repo as part of Travis build chain. For more details
please read https://github.com/nurupo/ci-release-publisher#ci-release-publisher.
Please note that OSv setup follows "Publishing to a different repository" approach.

In high-level everytime new commit is pushed to cloudius-systems/osv repo,
travis would execute logic defined in .travis.yml that:
- builds OSv docker builder image as defined in docker/Dockerfile.builder
- runs OSv build in docker container to build kernel and unit tests
- publishes kernel and unit tests in form or capstan mpm file into new
  repo - https://github.com/osvunikernel/osv-nightly-releases/releases.
Eventually we might tweak the setup and publish artifacts once a day if there
was a commit pushed.

Note that .travis.yml delegates to the scripts defined in .travis/cirp that
futher delegate to python scripts that are part of ci-release-publisher module.

Lastly this patch adds useful python-based script github_releases_util.py
aimed to help list daily releases and artifacts, push, downloads and delete artifacts.

Completes #1044

Signed-off-by: Waldemar Kozaczuk <jwkozaczuk@gmail.com>
@wkozaczuk
Copy link
Collaborator

Completed with 7305d0f

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

3 participants