Hi List,

this is a kind-of follow-up for my previous email from July:
https://www.mail-archive.com/haproxy@formilux.org/msg38032.html.

You might or might not have noticed that Travis became a bit slow in the
last months and a few days ago they announced a new pricing model,
limiting minutes even for Open Source projects:
https://blog.travis-ci.com/2020-11-02-travis-ci-new-billing

Travis was great to get started with CI for HAProxy and definitely
helped to catch quite a few bugs, but its future appears to be a bit
unclear by now.

Due to this I worked with Ilya in the last days to clean up my patch and
fix some of the limitations. Willy pushed it this morning after Ilya was
happy with it. I learned quite a bit about the details of ASAN and SSL,
but Ilya is the expert there :-)

Besides better performance GitHub Actions improves the user experience
with regard to maintenance and integration within GitHub.

I'd like to give a short run down of the changes to get you up to speed
with the new workflow.

1. Test results are directly visible on GitHub.

Most notably each entry within the GitHub Actions build matrix creates
an entry within the status dropdown at the commit. There is no need to
leave GitHub to see which build configuration exactly failed (e.g. only
a specific SSL library). With Travis there was a binary Yes / No for all
Travis tests.

(see build_status.png)

2. Automated extraction of information from the build log.

GitHub Actions support so called "problem matchers". They are usually
used to annotate specific source code lines within a pull request. I
(ab)used them to parse out the specific reg-tests that failed. The
definition of the parser can be found here:
https://github.com/haproxy/haproxy/blob/master/.github/vtest.json

You can find the failing tests in the overview page for a specific
action run in the "Annotations" action:
https://github.com/haproxy/haproxy/actions/runs/355551522

(see annotations.png)

3. Output grouping in the build log.

GitHub Actions allows to easily group the output of the whole test and
build run, while Travis only had a long log file.

The output is now grouped by the step within the process (e.g. compile
VTest or compile HAProxy) and also by a logical subgroup (e.g. a
specific reg-test).

As an example you can easily view the output of a single reg-test
without needing to search the start and end of the relevant output.

To do so you go into the logs for a specific job, click "Show test
results" and then click the the Test case you are interested in:

https://github.com/haproxy/haproxy/runs/1378860942?check_suite_focus=true#step:14:125

(see output_group.png)

4. Cleaner build configuration.

I took care to make the GitHub Actions configuration as maintainable as
possible, by splitting everything into logical steps and generating the
build matrix automatically instead of hardcoding all combinations. I've
put comments for non-obvious stuff so that you don't have to search the
GitHub documentation to understand it.

Find all the details in the commit:
https://github.com/haproxy/haproxy/commit/288c0772e6565cf42cb07b354b9c3fd7edaf5459

-----

There might be a few more adjustments in the next days to fix any
upcoming issues (it's going to be interesting once the actual failures
are fixed and everything is green). After this email you should be able
to find your way around the new stuff, though.

Travis is probably slowly going away for the important tests. It will
still how the non-amd64 architectures for the foreseeable future,
because GitHub Actions does not support those to the best of my
knowledge. Travis also drives the Coverity scans, but those should be
possible to migrate easyish.

Let me (or Ilya) know if you have any questions or if you notice any
issues with it. Personally I'm super happy with how it turned out :-)

Best regards
Tim Düsterhus

Reply via email to