You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@arrow.apache.org by Andrew Lamb <al...@influxdata.com> on 2020/12/08 16:51:19 UTC
[Rust] Heads up -- change to the Rust CI system
I just wanted to give everyone a heads up that we have merged an overhaul
of the Rust CI system.
You can see more details and rationale on the PR:
https://github.com/apache/arrow/pull/8821 but I wanted to bring it to the
attention of a wider audience as the PR checks will look different for Rust
PRs.
Thanks to @Jorge Cardoso Leitão <jo...@gmail.com> for driving
this work
Andrew
Re: [Rust] Heads up -- change to the Rust CI system
Posted by Jorge Cardoso Leitão <jo...@gmail.com>.
Thanks Andrew,
To give a bit more context, It now looks as follows (this is from a PR adds
a new build to it, wasm32, taken from here
<https://github.com/apache/arrow/actions/runs/408710849>):
[image: Screenshot 2020-12-08 at 18.54.36.png]
The main consequences were:
* build time halved in both cache hits and misses
* reduced cache misses
* code coverage is now part of the build (only ran in cron-job)
* test of the c data interface against pyarrow is now part of the build
(only ran in cron-job)
* use only official rust docker images and stopped pulling and pushing
custom images
* easier to extend to variations of compiler flags, archs, compiler
version, etc.
The above was achieved through the following changes:
* jobs that share artifacts share a common parent job (a common "need") and
use github's cache action to share built artifacts
* any independent work is assigned its own job, for increased parallelism
(the reason for more jobs)
* stopped using docker images to store intermediary state via github cache
actions
* stopped using archery and docker-compose to drive the execution. Instead,
we run the official Rust docker images and use officially curated github
actions to prepare the environment.
The main build can be reproduced by a single command: docker run --rm -v
$(pwd)/rust:/rust -it rust /bin/bash -c "cd /rust && cargo build" (this is
notoriously slow on mac due to how docker volumes work).
There are 3 items that can be further improved / optimized:
* The integration test, that takes 20-30m, often re-builds entire artifacts
even when no changes are made. I proposed something on a separate mailing
thread to address this
* Travis build and other github jobs are often triggered by rust-specific
changes to `ci/` that do not affect them.
* The lint step (rustfmt) currently runs together with all other
implementations in a single job. It could be split off and run only to
changes on rust.
Best,
Jorge
On Tue, Dec 8, 2020 at 5:51 PM Andrew Lamb <al...@influxdata.com> wrote:
> I just wanted to give everyone a heads up that we have merged an overhaul
> of the Rust CI system.
>
> You can see more details and rationale on the PR:
> https://github.com/apache/arrow/pull/8821 but I wanted to bring it to the
> attention of a wider audience as the PR checks will look different for Rust
> PRs.
>
> Thanks to @Jorge Cardoso Leitão <jo...@gmail.com> for driving
> this work
>
> Andrew
>