Conversation
This file move is required as part of the CircleCI 2.0 migration process.
As the filtered branches having been moved closer to the build step in the CircleCI config file, having two Jinja `if`-clauses no longer makes sense. So this groups them together with the CircleCI skip fallback test. Also this is done such that the CircleCI config file should not change due to this difference in the template.
| command: docker pull condaforge/linux-anvil | ||
| - run: | ||
| # Run, test and (if we have a BINSTAR_TOKEN) upload the distributions. | ||
| command: ./ci_support/run_docker_build.sh |
There was a problem hiding this comment.
It would be nice to check how the cache works in this new version. So we could place this command in a section which could be cached and need fewer changes to use ccache.
There was a problem hiding this comment.
The cache is much more flexible and it seems we can choose exactly when to save and restore caches: https://circleci.com/docs/2.0/caching/
There was a problem hiding this comment.
We should resurrect the package caching work you did in this context. There are many pure Python or metapackages now floating around that have huge lists of dependencies that slow down the test phase due to downloading. Having a package cache there will certainly help the CIs cope with our ever increasing number of feedstocks.
There was a problem hiding this comment.
Sure, we should definitely revisit this. I can take a look after you merge this.
|
So a couple things to consider that I could use feedback on. First we could move the Second technically CircleCI 2.0 is beta. That said, the closed beta started on Nov 7 (last year). Also it looks like they opened the beta up on Mar 17. Assuming a similar time range for ending beta, I would expect this to be official by sometime in July (i.e. next month). Presumably some time after that CircleCI 1.0 is going to be phased out. Given the number of users who have already tried out the beta and time elapsed (not to mention our slow rate of adoption for things like this), I don't think this is risky and it is something we are going to need to do anyways. Combined with better features for caching and matrix builds, this seems very desirable to adopt soon. That said, it would still be good to get feedback from others on this. Given both of these changes can be seen as breaking, I'd be ok marking this as |
|
Would appreciate if @conda-forge/core could please take a look at this. Also feedback on the items noted above would be very helpful. Thanks in advance. |
For CircleCI matrix support, we will need to construct multiple build steps for different matrix parameters. So it makes more sense to include `build` inside the Jinja conditional instead of outside. This will facilitate making a clean `for`-loop within the last part of the conditional.
62548b3 to
d41df0a
Compare
|
Also a CircleCI matrix implementation based off of this can be seen in PR ( #532 ) with links to example re-renderings. |
I would prefer to not hide run_docker_build.sh under
Given the amount of time since it entered beta it seems pretty safe to make those changes now. |
|
Yeah, I think I agree on both points. Though the Any thoughts on the other scripts in |
|
As @gqmelo noted elsewhere, it does seem that CircleCI 2.0 is not correctly grouping pull requests. Have opened a discussion issue on this point. I remember having similar issues on CircleCI 1.0 before when they made changes to pull requests, but it didn't affect anything beyond how things were grouped. Since the build number always increases and is unique to the repo build not how it was created, this issue ends up only being a UI one. Nevertheless it is worth noting. ref: https://discuss.circleci.com/t/circleci-2-0-incorrectly-groups-pull/13505 |
Yeah, no problem. This is already necessary when trying to reproduce osx and windows builds. It would be better to have a script for each platform to build all packages locally (like the current run_docker_build.sh), but I know we would probably have to duplicate code as the matrices are on CI config files.
Well, the other seems very specific to CircleCI and something one would rarely want to run locally. So I would be fine with moving them. |
Not to digress, but to mention this brief. Have been wanting to do something like this for a while. If we go for setting |
Yeah, if the scripts are going to install packages on the root env it would be better to have a separate miniconda installation. But we could have separate scripts for configuring miniconda and installing needed packages and other scripts to build all packages for the given plataform. Something like:
|
|
Friendly nudge @conda-forge/core. 😉 |
|
Should add that CircleCI 2.0 is officially released. So no longer in beta. |
|
Given CircleCI 2.0 is no longer in beta, this is well tested, and has sat for a while to get feedback, going to go ahead and merge it to clear it from the list. |
|
Thanks! |
Fixes #527
Closes conda-forge/pyelftools-feedstock#14
Closes conda-forge/gnureadline-feedstock#8
Closes conda-forge/rank_filter-feedstock#26
Upgrades to new CircleCI 2.0 by borrowing from this migration guide, the reference spec, and a bunch of examples. This should make it easier to explore matrix builds in CircleCI and provide us access to all the other latest features.
Test cases for the Linux build and non-Linux build can be seen. Note that CircleCI still doesn't build in the non-Linux case (and if it does it just exits quietly). Also despite looking like a big overhaul, the behavior in the CircleCI 2.0 case is basically the same. Though this will change when matrix builds are considered.
In the upgrade, we make sure to clean out the old
circle.ymlfile too.