CI: enhance FreeBSD staging tests#2372
Conversation
|
These workflows have been tested at |
| - 14.3 | ||
| - "15.0" | ||
| - "14.3" | ||
| - "13.5" |
There was a problem hiding this comment.
October commit 99fca3a noted that "FreeBSD 13[.4] packages are unreliably packaged, causing version mismatches that lead to CI test failures". If we do not know of any specific FreeBSD v13.5 policy/practices changes, then perhaps we should not go back to testing on that "unreliably packaged" FreeBSD flavor?
| - "13.5" |
There was a problem hiding this comment.
In practice, it's showing to be working.
I have tweaked the build instructions, I think that's what's making the difference.
Unlike before, this version of the test does not attempt to update all software packages on the FreeBSD VM; this might be the deciding factor
There was a problem hiding this comment.
Sounds good! Please record your justification for this reversal in the PR description, mentioning commit 99fca3a.
| - amd64 | ||
| # - arm64 # too slow as of 2026-02 | ||
| # - riscv64 # not working as of 2026-02 | ||
| runs-on: ${{ matrix.platform != 'arm64' && 'ubuntu-24.04' || 'ubuntu-24.04-arm' }} |
There was a problem hiding this comment.
Since arm64 is commented out from matrix.platform, can this runs-on configuration be simplified?
| runs-on: ${{ matrix.platform != 'arm64' && 'ubuntu-24.04' || 'ubuntu-24.04-arm' }} | |
| runs-on: ${{ 'ubuntu-24.04' }} |
There was a problem hiding this comment.
I'd leave it in if possible at all.
Hopefully in a not too far future arm64 will not go through slow software emulation and we can use it; everything is ready to add it back with minimal work
There was a problem hiding this comment.
I am not violently against adding matrix.platform code in this PR, even though there is only one platform for now, provided
- this PR adds
matrix.platformeverywhere it will be needed (i.e. we do not add half-working code), and - we leave a comment explaining what is going on. For example:
platform:
- amd64
# Our configuration is ready to support multiple platforms,
# and we expect to enable at least one of these candidates,
# but they are currently disabled for the reasons stated below.
# - arm64 # takes more than XXX hours as of 2026-02
# - riscv64 # broken (XXX) as of 2026-02... with those two XXX placeholders filled in, of course.
| export CC='ccache cc' | ||
| export CXX='ccache c++' | ||
| cd squid | ||
| exec ./test-builds.sh layer-00-default layer-02-maximus |
There was a problem hiding this comment.
This elimination of two(?) layers has not been disclosed in PR description. Please either disclose-and-justify this change in PR description or undo it.
There was a problem hiding this comment.
added to the description
There was a problem hiding this comment.
Alex: Please either disclose-and-justify this change in PR description or undo it.
Francesco: added to the description
Updated PR description: Restrict testing to the default and maximus test layers
The above is "disclose". Please justify this change (or undo it). This PR is introducing special/unusual layer selection logic and implicitly calls the new logic "enhancement". It is not clear (to me) why it does that. This PR should justify this change. It currently does not. I may or may not agree with the proposed justification or suggest further changes in line with that justification, of course, but the next step is on your side.
N.B. linux-distros test three layers, including layer-01-minimal. If you want to reduce the number of tested layers, FreeBSD could do that too, using "speed up tests and mimic what we do for linux-distros" justification.
|
|
||
| freebsd: | ||
| strategy: | ||
| fail-fast: false |
There was a problem hiding this comment.
We do not use that setting in other similar cases. Remove for consistency sake?
| fail-fast: false |
There was a problem hiding this comment.
This change request was not acknowledged or addressed.
.github/workflows/slow.yaml
Outdated
| with: | ||
| repository: squid-cache/squid | ||
| path: squid | ||
| ref: ${{ inputs.branch }} |
There was a problem hiding this comment.
Other "Checkout Sources" sections do not have these with details. Can we not add them (and undo the squid path changes elsewhere in this PR that probably were triggered by this change)?
There was a problem hiding this comment.
artifact of the code coming from a different repository. reverting and trying out
|
Test-run of the updated workflow: https://github.com/kinkie/squid/actions/runs/21858341109 |
rousskov
left a comment
There was a problem hiding this comment.
Thank you for advancing this PR.
| - 14.3 | ||
| - "15.0" | ||
| - "14.3" | ||
| - "13.5" |
There was a problem hiding this comment.
Sounds good! Please record your justification for this reversal in the PR description, mentioning commit 99fca3a.
| - amd64 | ||
| # - arm64 # too slow as of 2026-02 | ||
| # - riscv64 # not working as of 2026-02 | ||
| runs-on: ${{ matrix.platform != 'arm64' && 'ubuntu-24.04' || 'ubuntu-24.04-arm' }} |
There was a problem hiding this comment.
I am not violently against adding matrix.platform code in this PR, even though there is only one platform for now, provided
- this PR adds
matrix.platformeverywhere it will be needed (i.e. we do not add half-working code), and - we leave a comment explaining what is going on. For example:
platform:
- amd64
# Our configuration is ready to support multiple platforms,
# and we expect to enable at least one of these candidates,
# but they are currently disabled for the reasons stated below.
# - arm64 # takes more than XXX hours as of 2026-02
# - riscv64 # broken (XXX) as of 2026-02... with those two XXX placeholders filled in, of course.
| export CC='ccache cc' | ||
| export CXX='ccache c++' | ||
| cd squid | ||
| exec ./test-builds.sh layer-00-default layer-02-maximus |
There was a problem hiding this comment.
Alex: Please either disclose-and-justify this change in PR description or undo it.
Francesco: added to the description
Updated PR description: Restrict testing to the default and maximus test layers
The above is "disclose". Please justify this change (or undo it). This PR is introducing special/unusual layer selection logic and implicitly calls the new logic "enhancement". It is not clear (to me) why it does that. This PR should justify this change. It currently does not. I may or may not agree with the proposed justification or suggest further changes in line with that justification, of course, but the next step is on your side.
N.B. linux-distros test three layers, including layer-01-minimal. If you want to reduce the number of tested layers, FreeBSD could do that too, using "speed up tests and mimic what we do for linux-distros" justification.
| automake \ | ||
| ccache \ | ||
| cppunit \ | ||
| git-tiny \ |
There was a problem hiding this comment.
Does our test-build.sh require git, directly or indirectly? I failed to quickly find such a dependency, but it is easy to miss. Or does this PR needs to add git-tiny for some other reason?
| - name: prep ccache | ||
| uses: hendrikmuhs/ccache-action@v1 | ||
| with: | ||
| key: ${{ github.job }}-${{ matrix.osversion }}-${{ matrix.platform }} |
There was a problem hiding this comment.
Please do not introduce a new/different way to name and configure ccache step OR justify introducing it.
Here are the two existing ccache steps:
- name: Setup ccache
uses: hendrikmuhs/ccache-action@v1.2.19
with:
verbose: 2 # default 0
key: ${{ matrix.os }}-${{ matrix.compiler.CC }}-${{ matrix.layer.nick }}
max-size: "250MB"
evict-old-files: "28d"
--
- name: Setup ccache
uses: hendrikmuhs/ccache-action@v1.2.19
with:
verbose: 2 # default 0
key: ${{ matrix.os }}-${{ matrix.compiler.CC }}-${{ matrix.layer.nick }}
max-size: "250MB"
evict-old-files: "28d"FreeBSD configuration may need a different key template because we are not testing multiple compilers here, and we test multiple layers inside one step. Please remove or reduce other differences as much as possible.
|
|
||
| runs-on: ubuntu-24.04 | ||
| name: freebsd(${{ matrix.osversion }}) | ||
| name: freebsd(${{ matrix.osversion }}, ${{ matrix.platform }}) |
There was a problem hiding this comment.
We do not use a space when naming linux-distros jobs:
| name: freebsd(${{ matrix.osversion }}, ${{ matrix.platform }}) | |
| name: freebsd(${{ matrix.osversion }},${{ matrix.platform }}) |
| - amd64 | ||
| # - arm64 # too slow as of 2026-02 | ||
| # - riscv64 # not working as of 2026-02 | ||
| runs-on: ${{ matrix.platform != 'arm64' && 'ubuntu-24.04' || 'ubuntu-24.04-arm' }} |
There was a problem hiding this comment.
GitHub documentation says that Quotation marks are not required around simple strings like self-hosted, but they are required for expressions like "${{ inputs.chosen-os }}". We already go against that recommendation in quick.yaml, but I suggest following it here by adding quotes.
I do not insist on this change.
|
|
||
| freebsd: | ||
| strategy: | ||
| fail-fast: false |
There was a problem hiding this comment.
This change request was not acknowledged or addressed.
| ./test-builds.sh | ||
| export CC='ccache cc' | ||
| export CXX='ccache c++' | ||
| exec ./test-builds.sh layer-00-default layer-02-maximus |
There was a problem hiding this comment.
If possible, please remove exec because we do not use that in similar workflow contexts.
| ccache --set-config=compression=true | ||
|
|
||
| run: | | ||
| set -e |
There was a problem hiding this comment.
If possible, please remove set -e because it is probably the default for Linux runners, we do not use that setting in similar workflow contexts, and none of the prep "export" commands can fail AFAICT.
| set -e |
Cover all FreeBSD and OpenBSD versions supported
by these projects.
Fully rely on packages, no ports.
Enable ccache
Restrict testing to the default and maximus test layers