Commit Graph

76 Commits

Author SHA1 Message Date
Ilya Shipitsin 8a1aabb133 CI: modernize macos builds to macos-15
macos-15 support was announced few months ago: https://github.com/github/roadmap/issues/986
2024-10-21 07:54:38 +02:00
Ilya Shipitsin 50cf89ad5c CI: bump development builds explicitely to Ubuntu 24.04
Initially we agreed to split builds into "latest" for development branch
and fixed 22.04 for stable branches. It got broken when "latest" label migrated
from ubuntu-22 to ubuntu-24 ... because of build cache. Cache key is built using
runner label, it was not prepared to use the same "latest" cache from ubuntu 22
on ubuntu 24. To make things clear, let's stick explicitely to ubuntu 24.
2024-10-21 07:54:35 +02:00
William Lallemand 11e13175d4 CI: github: upgrade aws-lc to 1.29.0
Upgrade aws-lc to 1.29.0 on the push CI.
2024-06-14 11:37:11 +02:00
William Lallemand 935b3bd1b7 Revert "CI: github: upgrade aws-lc to 1.29.0"
This reverts commit 6e986e7493.
2024-06-13 17:14:58 +02:00
William Lallemand 6e986e7493 CI: github: upgrade aws-lc to 1.29.0
Upgrade aws-lc to 1.29.0 on the push CI.
2024-06-13 17:11:04 +02:00
Ilia Shipitsin 09db70d021 CI: use USE_PCRE2 instead of USE_PCRE
USE_PCRE2 is recommended, I guess USE_PCRE is left unintentionally
2024-05-29 22:37:26 +02:00
William Lallemand 40cd5cc0e2 CI: github: upgrade the WolfSSL job to 5.7.0
WolfSSL 5.70 was released in March 2024,  let's upgrade our CI job to
this version.
2024-05-28 19:26:52 +02:00
Ilya Shipitsin 76f56a39be CI: modernize macos matrix
let's stick to macos-13 for stable branches and macos-14 for development branches.
since macos-14 is available for Apple Silicon, some modifications are required
for VTest (should be ported to VTest later)

news: https://github.blog/changelog/2024-01-30-github-actions-macos-14-sonoma-is-now-available/
2024-04-19 17:37:24 +02:00
Willy Tarreau ac73a23454 BUILD: makefile: also drop DEBUG_CFLAGS
This one is often used as a gateway to inject regular CFLAGS, even though
not designed for this. It's now ignored, but any attempt at setting it
reports a warning suggesting to use CFLAGS or ARCH_FLAGS instead.
2024-04-11 17:33:28 +02:00
Willy Tarreau 88c151f9ca BUILD: makefile: drop the ARCH variable and better document ARCH_FLAGS
ARCH_FLAGS was always present and is documented as being fed to both
CC and LD during the build. This is meant for options that need to be
consistent between the two stages such as -pg, -flto, -fsanitize=address,
-m64, -g etc. Its doc was lacking a bit of clarity though, and it was
not enumerated in the makefile's variables list.

ARCH however was only documented as affecting ARCH_FLAGS, and was just
never used as the only two really usable and supported ARCH_FLAGS options
were -m32 and -m64. In addition it was even written in the makefile that
it was CPU that was affecting the ARCH_FLAGS. Let's just drop ARCH and
improve the documentation on ARCH_FLAGS. Again, if ARCH is set, a warning
is emitted explaining how to proceed.

ARCH_FLAGS is now preset to -g so that we finally have a correct place
to deal with such debugging options that need to be passed to both
stages. The fedora and musl CI workflows were updated to also use it
instead of sticking to duplicate DEBUG_CFLAGS+LDFLAGS.

It's also worth noting that BUILD_ARCH was being passed to the build
process and never used anywhere in the code, so its removal will not
be noticed.
2024-04-11 17:33:28 +02:00
Willy Tarreau 8194499bec BUILD: makefile: move -O2 from CPU_CFLAGS to OPT_CFLAGS
CPU_CFLAGS is meant to set the CPU-specific options (-mcpu, -march etc).
The fact that it also includes the optimization level is annoying because
one cannot be set without replacing the other. Let's move the optimization
level to a new independent OPT_CFLAGS that is added early to the list, so
that other CFLAGS (including CPU_CFLAGS) can continue to override it if
necessary.
2024-04-11 17:25:45 +02:00
William Lallemand bb25ee7b26 CI: github: add -DDEBUG_LIST to the default builds
Add the -DDEBUG_LIST flag which allow to check if a list element was
removed twice.
2024-03-13 09:01:11 +01:00
Ilya Shipitsin 7b881003b1 CI: github: abandon asan matrix.py helper
that helper was useful in days when we beleived that gcc and clang
require different flags. those days are gone.
2024-02-07 11:05:28 +01:00
William Lallemand 8a7c0360f3 CI: github: update wolfSSL to 5.6.6
Update wolfSSL to 5.6.6
2024-01-12 17:48:22 +01:00
Ilya Shipitsin e6d0b87f7f CI: use semantic version compare for determing "latest" OpenSSL
currently "openssl-3.2.0-beta1" wins over "openssl-3.2.0" due to
string comparision. let's switch to semantic version compare
2024-01-02 10:23:40 +01:00
William Lallemand 1a19e4e7af CI: github: switch to wolfssl git-c4b77ad for new PR
The "dynamic-certs-n-ciphers" PR was just merged, lets build the wolfssl
git instead of the 5.6.4 version, so we could test the feature.
2023-12-08 12:08:22 +01:00
William Lallemand 20726b43aa CI: github: update wolfSSL to 5.6.4
Update wolfSSL to the 5.6.4 released version.
2023-11-03 18:50:45 +01:00
William Lallemand cc743b698f CI: github: add awslc 1.16.0 to the push CI
Add a awslc 1.16.0 to the push CI. Since this is a fixed version it
shouldn't cause problems.
2023-10-11 11:38:27 +02:00
William Lallemand 5fa7bf207e CI: github: update wolfssl to git revision d83f2fa
WolfSSL 5.6.3 does not pass all the haproxy reg-tests since some fixes
are still unreleased in the master branch.

Build wolfSSL with a recent git revision to have passing reg-tests.
2023-10-11 11:25:00 +02:00
William Lallemand 160615e574 CI: github: add a wolfssl entry to the CI
Add a build with wolfssl 5.6.3 to the github CI.
2023-10-11 11:24:40 +02:00
Andrew Hopkins b2a7840a28 CI: Update matrix.py so all code is contained in functions.
Refactor matrix.py so all the logic is contained inside either
helper functions or a new main function. Run the new main function
by default. This lets other GitHub actions use functions in the
python code without generating the whole matrix.
2023-09-06 13:41:36 +02:00
Andrew Hopkins 4f77690366 CI: add support to matrix.py to determine the latest AWS-LC release
Refactor the existing OpenSSL tag parsing logic to share some of GitHub
tag logic. OpenSSL and AWS-LC don't follow the same naming convention so
each library has it's own sorting logic.
2023-09-06 13:41:36 +02:00
Ilya Shipitsin ddedefcaaa CI: add naming convention documentation
branches "haproxy-" stand for stable branches, otherwise development
2023-07-17 15:56:52 +02:00
Ilya Shipitsin ed79a27a91 CI: more granular failure on generating build matrix
when some api endpoints used for determine latest OpenSSL, LibreSSL
are unavailable, fail only those builds, not entire matrix
2023-05-08 14:05:44 +02:00
Ilia Shipitsin 156c4b3439 CI: switch to Fastly CDN to download LibreSSL
OpenBSD ftp is down, let us switch to mirror
2023-04-26 18:41:03 +02:00
Tim Duesterhus 081091187e CI: Reformat `matrix.py` using `black`
The initial version of matrix.py was formatted using `black` [1], but with all
the later changes, the formatting diverged quite a bit. This patch reformats
the script using black, fixing the indentation of some statements and
shortening overlong lines.

[1] https://github.com/psf/black
2023-01-03 16:28:34 +01:00
Tim Duesterhus e327e41430 CI: Explicitly check environment variable against `None` in matrix.py
For consistency with `GITHUB_OUTPUT` at the bottom.
2023-01-03 16:28:34 +01:00
Tim Duesterhus 96e03e1a89 CI: Unify the `GITHUB_TOKEN` name across matrix.py and vtest.yml
This makes naming a little clearer in matrix.py, because the name matches the
name of the actual secret.
2023-01-03 16:28:34 +01:00
Tim Duesterhus fd7931e7f3 CI: Use proper `if` blocks instead of conditional expressions in matrix.py
For complex expressions, such as the ones modified, the condition expression is
much less readable, especially with the actual condition in the middle of the
"then" and "else" part.
2023-01-03 16:28:34 +01:00
Tim Duesterhus fcc21be922 CI: Add in-memory cache for the latest OpenSSL/LibreSSL
These functions were previously called once per compiler. Add the `lru_cache`
decorator to only perform one HTTP request each.
2023-01-03 16:28:34 +01:00
Tim Duesterhus 3c9b6f6394 CI: Improve headline in matrix.py
Since 4a04cd35ae (CI: github: split ssl lib
selection based on git branch) the branch, instead of the workflow type is
passed. The headline should reflect that.
2023-01-03 16:28:34 +01:00
Ilya Shipitsin 6fbc35f473 CI: github: enable github api authentication for OpenSSL tags read
github api throttles requests with no auth, thus we can enable
GITHUB_API_TOKEN env variable. if not set, current behaviour is kept
2022-12-22 17:36:32 +01:00
Ilya Shipitsin f5994fc692 CI: github: split matrix for development and stable branches
ML ref: https://www.mail-archive.com/haproxy@formilux.org/msg42934.html

we agreed to use "latest" images for development branches and fixed
images for stable branches

Can be backported to 2.6.
2022-12-14 15:29:42 +01:00
Ilya Shipitsin 6dedeb70da CI: github: remove redundant ASAN loop
it was there because we only ran ASAN for clang, now no need to separate loop

Can be backported to 2.6.
2022-12-14 15:29:20 +01:00
Ilya Shipitsin 4a04cd35ae CI: github: split ssl lib selection based on git branch
when *SSL_VERSION="latest" behaviour was introduced, it seems to be fine
for development branches, but too intrusive for stable branches.

let us limit "latest" semantic only for development builds, if branch name
contains "haproxy-" it is supposed to be stable branch, no latest openssl
should be taken

[wla: must be backported as far as 2.6]
Signed-off-by: William Lallemand <wlallemand@haproxy.org>
2022-12-12 16:20:48 +01:00
William Lallemand 393e4e4dd1 CI: github: reintroduce openssl 1.1.1
OpenSSL 1.1.1 is not tested anymore since github updated "ubuntu-latest"
to 22.04, let's reintroduce this version.
2022-12-12 08:52:03 +01:00
Ilya Shipitsin 6397c7c55f CI: enable QUIC for LibreSSL builds
since LibreSSL-3.6.x supports QUIC, let us enable it
2022-11-07 07:49:11 +01:00
Ilya Shipitsin 70b2c72687 CI: switch to the "latest" LibreSSL
LibreSSL-3.6.0 had some regression, it was fixed in 3.6.1, let us
switch back to the latest LibreSSL available
2022-11-07 07:49:07 +01:00
Tim Duesterhus 8a03bf4052 CI: Replace the deprecated `::set-output` command by writing to $GITHUB_OUTPUT in matrix.py
As announced in

https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/

the `::set-output` command is deprecated, because processes during the workflow
execution might output untrusted information that might include the
`::set-output` command, thus allowing these untrusted information to hijack the
build.

The replacement is writing to the file indicated by the `$GITHUB_OUTPUT`
environment variable.
2022-10-14 19:50:34 +02:00
Ilya Shipitsin b65fd66666 CI: SSL: temporarily stick to LibreSSL=3.5.3
recently released 3.6.0 introduced some regression which must be
resolved first, let us use 3.5.3 notation instead of "latest"
2022-10-13 08:53:27 +02:00
Ilya Shipitsin 14711bdc9a CI: SSL: use proper version generating when "latest" semantic is used
both "OPENSSL_VERSION=latest" and "LIBRESSL_VERSION=latest" processing
introduced errors when build-ssl.sh script was invoked. that error
in turn led to skipping custom openssl build and haproxy was linked against
stock openssl, i.e. openssl-1.1.1
2022-10-13 08:53:11 +02:00
Ilya Shipitsin cfba1f93af CI: re-enable gcc asan builds
for some unclear reasons asan builds were limited to clang only. let us
enable them for gcc as well
2022-07-04 17:28:58 +02:00
Ilya Shipitsin 7b893c2c6b CI: determine actual OpenSSL version dynamically
this change introduce "OPENSSL_VERSION=latest" semantic, which scans
https://api.github.com/repos/openssl/openssl/tags and detects latest release.
2022-05-20 23:26:48 +02:00
Ilya Shipitsin 94cd779a4f CI: determine actual LibreSSL version dynamically
this change introduce "LIBRESSL_VERSION=latest" semantic, which scans
http://ftp.openbsd.org/pub/OpenBSD/LibreSSL/ and detects latest release.

LIBRESSL_VERSION=2.9.2 is removed from the matrix.
2022-05-14 17:30:15 +02:00
Ilya Shipitsin c89dec3dc8 CI: github actions: update LibreSSL to 3.5.2
LibreSSL-3.5.2 was released on Apr 23nd 2022, let us switch to it
2022-04-30 14:12:51 +02:00
William Lallemand c24ac4339c CI: github actions: disable -Wno-deprecated
The deprecrated code is now disabled by default, so we can build with
quictls and openssl 3.0 without this option.
2022-04-11 19:05:03 +02:00
Ilya Shipitsin 6e7440b918 CI: github actions: update OpenSSL to 3.0.2 2022-03-31 17:00:22 +02:00
Ilya Shipitsin 2ec39ea653 CI: github actions: switch to LibreSSL-3.5.1 2022-03-18 13:48:42 +01:00
Ilya Shipitsin b9e3fb7315 CI: github actions: use cache for OpenTracing
this caches OpenTracing libs between builds, should save couple of minutes
for each build.
2022-01-13 13:37:34 +01:00
Ilya Shipitsin 874c907a2e CI: github actions: update OpenSSL to 3.0.1
OpenSSL-3.0.1 was released on 14 Dec 2021, let's switch to it
2022-01-03 14:42:12 +01:00