-
-
Notifications
You must be signed in to change notification settings - Fork 6.7k
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
Improve Builds with CircleCI 2.0 Setup #344
Comments
@philsturgeon: this sounds really nice. You seems to know CircleCI very well, are you ready to help? For example we have some check scripts like:
Would it make sense to run those tests as small steps at the beginning? Have you some pointers how this should be defined? |
@philsturgeon Looks like that's the right way to do it in CircleCI 2.0. Can you please submit a PR with the enhancement? |
Thanks for the vote of confidence. I genuinely would love to help you folks out, but my open-source time is completely full with speccy, JSON Schema, OpenAPI TSC calls, openapi.tools, standards.rest, we-call, and faraday-nethttp2. Whilst CircleCI 2.0 makes workflows easy, it does not seem easy to me (as an outsider, fresh to the project) how to run a single test suite for a single language with the way you have things setup. This change is less about CircleCI and more about refactoring how your CI code, expectations, etc is layed out. I also don't know which language needs which setup steps, so this would be a trial and error nightmare. If I knew:
then I would be able to sneak it in amongst all that other stuff, but at that point you'd be half way to writing the workflow yourself. :) |
UPDATE: I've submitted #608 to run 2 jobs testing Java8 and Java7 in parallel. I tried with the below:
but since the executor we used is "machine" (ref: https://circleci.com/docs/2.0/executor-types/), we cannot do the above. (We used "docker" executor before but ran into network issues) |
For the moment because we want to run docker (to start the petstore server), it seems that we are forced to use "machine". We might think about changing this also, it would be nice to have access to the workflow features described in this issue. For example it would be nice to have one workflow step per languages/projects/framework being tested... |
The recent #333 was a good direct port of CircleCI 1.0 to 2.0, but it has not taken advantage of worklflows just yet, or much of the functionality offered.
A Bigger Thing
It's tough to tell which service is doing which language from looking just at the various CI config files, but there is a list here:
The goal surely would be to get everything into one CI system, and this can easily be done with workflows. A good first step would be to roll Travis into CircleCI as a new workflow.
All of the slowness from these CI builds are down to having all of the "cache" logic for all languages done together, then all of the install steps done together, then all of the test steps done together... serial is slower than parrelllel.
You need to tweak the logic here, to either make a job for each language that does each step, or to split the "dependencies" into parrallel jobs, and "build" into parrallel jobs, etc., and the final test into multiple jobs.
One trivial thing
Multiple docker images can be referenced, so we can pull in the swagger petstore, and set env variables on it like this:
That would cut down on these sort of commands, and the sleeps and trickyness that comes with it.
The text was updated successfully, but these errors were encountered: