Try out CircleCI.#21751
Conversation
|
No promises or anything, but I do have some comments about questions about what circle can do and our travis usage. We use travis's |
|
|
||
| base: &base | ||
| environment: | ||
| - workerCount: 3 |
There was a problem hiding this comment.
Also, this number is tailored for maximal speed on travis. Set this to the maximum number of concurrent threads circleci will allow and actually benefit from the parallelism of (we had to measure travis with a bunch of different numbers before we landed on 3 - on a local machine we default to the number of logical processors available, which is usually optimal).
There was a problem hiding this comment.
Makes sense. I'll take a look later today.
|
Sure - so regarding Cron, CircleCI 2.0 does have this feature, we call it scheduled builds. If you can provide me more information about how you're going about that as well as the cron syntax you're using, I can update my PR with the CircleCI equivalent. Regarding caching, CircleCI 1.0 would have automatically cached If you did want to use cache, the new cache works on setting a |
|
This code is the place where we change our behavior for a cron build - we inspect an environment variable, as might be expected. (Otherwise we expect to be run same as a normal build) |
a83bbbe to
655980d
Compare
|
@weswigham Hey so my new commit addresses your comments from yesterday. CronI added the config for workerCountI did some research. Here's a comparison of CircleCI build times based on
So this tells me that a CachingNothing with regard to npm/Yarn packages are being cached at all in my PR. Again, all of these builds can be found here: https://circleci.com/gh/felicianotech/TypeScript/tree/circleci Please let me know if there's any further questions or comments. |
|
@FelicianoTech Is there some way we could get the custom log folds we had on travis back into the circle output (travis parsed the console output for some special identifiers to create folded sections with durations)? We've been using travis-fold and it's facilities or custom formatted strings to clean up/compact the output the way we like. TBH it's the only thing I can think of that's missing. |
|
In short, no. Travis CI's log folding feature we don't have an equivalent to. The closest thing I can think of, is in the UI we automatically "fold" the "Steps" that are defined in the CircleCI config file. We could separate I believe the Personally, I have written a CircleCI Chrome extension that works pretty well and part of my goals for that is to test new UI ideas for CircleCI.com and GitHub.com. I've opened an Issue to investigate adding fold support via the extension in the future: FelicianoTech/pointless#26 |
Not custom commands, just specific sentinel text surrounding the desired fold; that's why you can have multiple folds in a single command's output (as we do). |
|
Ah okay. Well we don't have an alternative to travis-fold. The rest of the features we do and with that the decreased build time. |
|
🎉 we're going to give this a shot! Thanks a ton for the PR Ricardo 😃 |
|
I'm having trouble adding it to the repo 😕. I think this might be a Microsoft-wide permissions issue... Figuring it out with Wesley offline. |
|
That's great news @DanielRosenwasser. Here's what needs to be done now:
|
|
Hey @FelicianoTech, we reached out to Microsoft's GitHub admins and have CircleCI running on master! Problem: we're not seeing how to enable this for our PRs within Apps & Services for our repo's settings. Any idea if this is another permissions issue? |
|
It's all done on CircleCI.com. Add the project, then go to settings. |
|
@weswigham Right now builds will only run for branches listed in lines 5-8 of the config: That would need to be loosened if you'd like other branches to also run. |
|
@FelicianoTech that whitelist also applies to forks? We want to build all PR-associated code (which is typically in a fork, but not always), plus |
|
Yes. That specifies branches, regardless of where they come from. It might make more sense to just build all branches then? Or maybe just specify what not to build? |
|
But then random branches we make on the repo that don't have open PRs would get builds. And swapping to only branches that have open PRs could miss building a (likely unintentional) direct push to |
|
@FelicianoTech This is the best 'sales pitch' I've ever seen 👏 |


P.S. The sign in link on https://cla.opensource.microsoft.com/ is white text on a white background so it was hard to find.
I can see that this repo is being build with multiple CI providers in mind. I created a config for CircleCI 2.0 and wanted to demo that it brings with it reduced build times.
Here's my fork on CircleCI: https://circleci.com/workflow-run/a2a9cad4-53d9-4238-a78c-3f20d6ff03a9
CircleCI is free just like Travis CI for something like TypeScript and clearly has better performance. Something to consider. Also, this PR shouldn't be merged as is. There's a
circlecibranch mentioned in the config that I put there for my testing purposes. Depending on your maintenance schedule, we could probably use regex for the release branches. If there's any questions on additional customization, please let me know.Sidenote, you can see from this table, regardless of the provider, that Node.js has more or less been building faster with each new major release. That's encouraging.
cc @DanielRosenwasser