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

Add CI for gitian-builder repo? #153

Open
josephbisch opened this issue Aug 17, 2017 · 11 comments
Open

Add CI for gitian-builder repo? #153

josephbisch opened this issue Aug 17, 2017 · 11 comments

Comments

@josephbisch
Copy link
Collaborator

Currently it is a pain to test PRs locally with all the various possible host-guest combinations. Even just considering the popular ones (Debian Jessie and Stretch hosts with Ubuntu as a guest), it can be difficult. Plus building with LXC vs KVM. Sometimes a contributor may just test with one, because that is what they use, and not properly test with the other.

Should we consider CI that will do a Gitian build of a small test project? At least with the more popular configurations? I don't think Travis CI would work for this, but maybe there is some other service that would?

Thoughts?

@devrandom
Copy link
Owner

That would be ideal. I am up for handling any service fees (e.g. AWS).

@josephbisch
Copy link
Collaborator Author

I'm still learning AWS, but I guess having SNS (based on a PR) trigger Lambda to launch an EC2 instance would be most cost effective. Like this article: https://aws.amazon.com/blogs/compute/dynamic-github-actions-with-aws-lambda/.

So then the EC2 instance(s) can be up for only as long as they are necessary. And of course add rate limiting and limit the number of instances running at any one time.

So I guess we wouldn't even need something like Jenkins. The AWS infrastructure would handle launching builds as necessary in that case.

Is that what you were thinking of?

@devrandom
Copy link
Owner

Yes, although having to integrate it with github might be a pain. I wonder if there's an off-the-shelf solution.

@josephbisch
Copy link
Collaborator Author

I found 2 possible solutions for this.

LambCI is interesting, because it just uses Lambda without launching any EC2 instances, however it isn't sufficient because of the 5 minute limitation Lambda imposes, among other limitations. The base VM creation and build probably would take longer than 5 minutes. However they also have a version that uses ECS (https://github.com/lambci/ecs) that might work for us. I'm not sure though, looks like ECS uses Docker and I don't know how that will play with KVM for Gitian.

The other one is this thing. It doesn't look like it is standalone from Buildkite though. Buildkite seems to cost money, but their pricing page mentions something about being free for open source projects.

So I couldn't find anything standalone that just uses EC2.

@josephbisch
Copy link
Collaborator Author

It looks like CodePipeline supports GitHub as a source, but I am not sure if the build results can be sent to GitHub. Plus it looks like it would require leaving a Jenkins instance up and running on EC2, which would be inefficient.

At this point, LambCI with ECS looks like the best solution to me. With privileged containers on ECS, we should be able to do what we need to do wrt KVM and LXC usage.

I can go ahead getting LambCI set up and make sure it does fit our requirements if you want. Unless you wanted to put it under your AWS account for billing purposes and since LambCI needs access to an API key to access the repo for publishing status updates.

@devrandom
Copy link
Owner

I'm happy to cover the costs. Also, I think I can create a specific API key for this and send it to you. Or if you want, you can get started with your account and switch to mine later. Up to you.

@josephbisch
Copy link
Collaborator Author

Why don't you create the API key and send it to me then. It doesn't look like there is much advantage to starting with my account and then switching later.

@josephbisch
Copy link
Collaborator Author

ping @devrandom

Looks pretty simple to setup LambCI, since they provide CloudFormation templates. Should essentially involve supplying a GitHub API key when creating the CloudFormation stack and then adding a script for the build.

@devrandom
Copy link
Owner

Looking into it now.

@devrandom
Copy link
Owner

Sent, let me know if you got it.

@josephbisch
Copy link
Collaborator Author

josephbisch commented Aug 24, 2017 via email

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

2 participants