Skip to content

CI: enhance FreeBSD staging tests#2372

Open
kinkie wants to merge 6 commits intosquid-cache:masterfrom
kinkie:enhance-openbsd-freebsd-staging-test
Open

CI: enhance FreeBSD staging tests#2372
kinkie wants to merge 6 commits intosquid-cache:masterfrom
kinkie:enhance-openbsd-freebsd-staging-test

Conversation

@kinkie
Copy link
Contributor

@kinkie kinkie commented Feb 9, 2026

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

@kinkie
Copy link
Contributor Author

kinkie commented Feb 9, 2026

- 14.3
- "15.0"
- "14.3"
- "13.5"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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?

Suggested change
- "13.5"

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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' }}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since arm64 is commented out from matrix.platform, can this runs-on configuration be simplified?

Suggested change
runs-on: ${{ matrix.platform != 'arm64' && 'ubuntu-24.04' || 'ubuntu-24.04-arm' }}
runs-on: ${{ 'ubuntu-24.04' }}

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.platform everywhere 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
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

added to the description

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We do not use that setting in other similar cases. Remove for consistency sake?

Suggested change
fail-fast: false

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This change request was not acknowledged or addressed.

Comment on lines 163 to 166
with:
repository: squid-cache/squid
path: squid
ref: ${{ inputs.branch }}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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)?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

artifact of the code coming from a different repository. reverting and trying out

@rousskov rousskov added the S-waiting-for-author author action is expected (and usually required) label Feb 9, 2026
@kinkie kinkie changed the title CI: enhance FreeBSD and OpenBSD staging tests CI: enhance FreeBSD staging tests Feb 10, 2026
@kinkie
Copy link
Contributor Author

kinkie commented Feb 10, 2026

Test-run of the updated workflow: https://github.com/kinkie/squid/actions/runs/21858341109

@kinkie kinkie added S-waiting-for-reviewer ready for review: Set this when requesting a (re)review using GitHub PR Reviewers box and removed S-waiting-for-author author action is expected (and usually required) labels Feb 10, 2026
@kinkie kinkie requested a review from rousskov February 10, 2026 10:26
Copy link
Contributor

@rousskov rousskov left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for advancing this PR.

- 14.3
- "15.0"
- "14.3"
- "13.5"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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' }}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.platform everywhere 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
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 \
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 }}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 }})
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We do not use a space when naming linux-distros jobs:

Suggested change
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' }}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If possible, please remove exec because we do not use that in similar workflow contexts.

ccache --set-config=compression=true

run: |
set -e
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Suggested change
set -e

@rousskov rousskov added S-waiting-for-author author action is expected (and usually required) and removed S-waiting-for-reviewer ready for review: Set this when requesting a (re)review using GitHub PR Reviewers box labels Feb 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

S-waiting-for-author author action is expected (and usually required)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants