emabee / flexi_logger

A flexible logger for rust programs that can write to stderr, stdout, and/or to log files
Apache License 2.0
307 stars 50 forks source link

ci: refactor and add more checks/combinations #92

Closed dallenng closed 3 years ago

dallenng commented 3 years ago

actions-rs/clippy-check display a beautiful summary of warnings/errors on PR.

If there is something missing or you don't want in CI, I can make the changes.

HEnquist commented 3 years ago

These are a lot of jobs, not a bit excessive? I count 13 jobs in total. The test jobs run 9 combinations, and in each one it runs the test suite three times with different sets of features. How long does all this actually take? I know github provides the compute resources for free, but I don't like using up more than needed.

dallenng commented 3 years ago

Yes, that's a lot of jobs, I based the config on the qualify script of the repo. Most of the jobs should run in parallel but I don't know how many can run in parallel.

I could reduce the number of build/test jobs by removing nightly and 1.46.0 for Windows and Mac, and keeping those toolchains only on Linux.

I could also reduce the length of the jobs by only using the "all-features" set but I don't know if it would miss some testing.

emabee commented 3 years ago

The big improvement with the central jobs is that they run on all three main platforms. The code has few platform-specific parts, which are rarely touched. This time I happened to touch them, and broke them without noticing, also because I'm currently not able to test these locally.

I use the qualify script regularly, the additional github jobs thus could focus on:

Prio 1a: Compile all features without errors and warnings on all platforms with the current stable Prio 1b: Test the same Prio 2: Compile with MSRV Prio 3: Compile with nightly Prio 4: Check various feature selections on linux

For cost-saving, we could focus on prio 1 and 2.

dallenng commented 3 years ago

I updated my branch by keeping only the "all-features" combination per job, and I removed nightly from the toolchains matrix. This shrinks the number of jobs from 13 to 10, and greatly reduce the length of the lint and build/test jobs.