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

Set up continous integration #81

Closed
zbraniecki opened this issue May 8, 2020 · 12 comments · Fixed by #83
Closed

Set up continous integration #81

zbraniecki opened this issue May 8, 2020 · 12 comments · Fixed by #83
Assignees
Labels
C-test-infra Component: Integration test infrastructure T-core Type: Required functionality
Milestone

Comments

@zbraniecki
Copy link
Member

The way I run CI for my projects is via Travis.
I have an account there, connected my project to it and set up a .travis.yml file.

Here's the view of fluent-rs CI: https://travis-ci.org/github/projectfluent/fluent-rs

I'm not sure what other options exist beyond Travis and if we want to use it. @echeran ?

@zbraniecki zbraniecki added T-enhancement Type: Nice-to-have but not required R-needs-more-info Resolution: Unclear or cannot be reproduced C-test-infra Component: Integration test infrastructure T-task Type: Tracking thread for a non-code task labels May 8, 2020
@sffc
Copy link
Member

sffc commented May 9, 2020

I've heard (don't exactly remember where) that for a free CI solution, GitHub Actions is compatible with Travis and should be used for newer projects.

For a paid solution, we can do anything that GCP supports.

@sffc sffc added T-core Type: Required functionality and removed R-needs-more-info Resolution: Unclear or cannot be reproduced T-enhancement Type: Nice-to-have but not required T-task Type: Tracking thread for a non-code task labels May 9, 2020
@sffc
Copy link
Member

sffc commented May 9, 2020

Explanation of labels:

"R-needs-more-info" is a resolution for closed issues. Maybe we should have a similar label for open issues, like "discuss".

For the type, I think "T-core" is most appropriate here, since CI is a core feature of the project.

@zbraniecki
Copy link
Member Author

I've never used github actions, but would be open to! @echeran do you want to try setting this up?

@echeran
Copy link
Contributor

echeran commented May 12, 2020

Yeah, let's try out Travis for starters. It seems like an easy and prevalent solution for open source, and may integrate with fancier things like Coveralls like you were mentioning. We can iterate from there.

@sffc
Copy link
Member

sffc commented May 12, 2020

Here's where Node.js moved from Travis to GitHub Actions:

nodejs/node#32450

A quick Google search finds a number of other people jumping on this bandwagon:

https://www.google.com/search?q=travis+vs+github+actions

The original motivation is that Travis CI was acquired, and there was speculation that the new owners intend to "milk" Travis CI and discontinue feature development. Here is a discussion on this subject and the new owner's official response to that speculation:

https://travis-ci.community/t/after-idera-future-development-and-support-plans/2474

@sffc
Copy link
Member

sffc commented May 12, 2020

To be clear, I have no strong opinion between Travis CI and GitHub Actions. I like Travis CI and would be okay if we used it. I'm just providing some context of a trend I've seen.

@srl295

@srl295
Copy link
Member

srl295 commented May 12, 2020

I have nothing against travis. (i.e. no reason not to use it.) In fact, it's what I use extensively internally, and I did a lot of the tooling for setting up icu and cldr's travis config. The travis-ci.org can get backed up and take a while to start queues, but I think that's a lot better than it used to be.

Github actions have some advantages, I think:

  • better integration (unsurprisingly) in the UI
  • I like the separate workflow concept: parallel things can be in separate action files, not all in one .travis.yml
  • modularity, being able to import from other actions. This means fewer helper-scripts checked into the main repo and/or waiting for core support for something.

OTOH if, say, fluent-rs is already using travis, there may be some advantage to getting up and running copying what's already been setup.

https://github.com/projectfluent/fluent-rs/blob/master/.travis.yml looks nicely done. So I'd say: I'd lean towards actions, but in the end go for expediency. If @zbraniecki is implementing and wants to use travis, no reason not to

one thing to consider is how the monorepo structure will look with the build. Just have a list of components and build them? Have a parallel build? I don't know what build times look like here.

@echeran
Copy link
Contributor

echeran commented May 12, 2020

Hmm, in that case, maybe this is a good opportunity to try out Github Actions, seeing that the fluent-rs Travis config exists as a good backup option in the worst case. I can try this out on my personal fork.

In the meantime, do we need CI set up for the main ICU4X right now? If so, we can use the Travis setup for expediency to have something going for now. Otherwise, we can wait a little.

@nciric
Copy link
Contributor

nciric commented May 12, 2020 via email

@zbraniecki
Copy link
Member Author

Yeah, I'm down to try github actions. Let me try to set them up today for my personal fork and if that works, I'll file a PR here.

@zbraniecki
Copy link
Member Author

one thing to consider is how the monorepo structure will look with the build.

For travis I just have one file per monorepo, see https://github.com/zbraniecki/unic-locale/blob/master/.travis.yml

@echeran
Copy link
Contributor

echeran commented May 12, 2020

@zbraniecki take a look at my WIP in #83 as a starting point for your exploration, lmk what you think

@sffc sffc added this to the 2020 Q2 milestone Jun 17, 2020
@echeran echeran linked a pull request Jun 25, 2020 that will close this issue
@echeran echeran closed this as completed Jun 25, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
C-test-infra Component: Integration test infrastructure T-core Type: Required functionality
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants