Re: [PATCH 3/3] ci: add macOS jobs to GitLab CI
- From
- Phillip Wood <phillip.wood123@gmail.com>
- Date
- Jan 16, 2024, 14:58 UTC
- Message-ID
- <61115e68-3d63-4e08-85f7-ae6650f3724e@gmail.com>
- In-Reply-To
- <d196cfd9d01fe3b52c75a1e4e0aca9f67567ab43.1705318985.git.ps@pks.im>
Hi Patrick
On 15/01/2024 11:45, Patrick Steinhardt wrote:
> Add two macOS-based jobs to GitLab CI, one for Clang and one for GCC.
This doesn't match whats in the rest of the commit message where you explain why there is no gcc job. The patch itself looks good to me and it is nice that we'll now be testing on arm64 with the GitLab runners.
Show 9 quoted lines
> This matches equivalent jobs we have for GitHub Workflows, except that > we use macOS 14 instead of macOS 13. > > Note that one test marked as `test_must_fail` is surprisingly passing: > > t7815-grep-binary.sh (Wstat: 0 Tests: 22 Failed: 0) > TODO passed: 12 > > This seems to boil down to an unexpected difference in how regcomp(1)
nit: regcomp(3)?
Best Wishes
Phillip
Show 79 quoted lines
> works when matching NUL bytes. Cross-checking with the respective GitHub > job shows though that this is not an issue unique to the GitLab CI job > as it passes in the same way there. > > Further note that we do not include the equivalent for the "osx-gcc" job > that we use with GitHub Workflows. This is because the runner for macOS > on GitLab is running on Apple M1 machines and thus uses the "arm64" > architecture. GCC does not support this platform yet. > > Signed-off-by: Patrick Steinhardt <ps@pks.im> > --- > .gitlab-ci.yml | 26 +++++++++++++++++++++++++- > ci/lib.sh | 9 ++++++++- > 2 files changed, 33 insertions(+), 2 deletions(-) > > diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml > index 793243421c..9748970798 100644 > --- a/.gitlab-ci.yml > +++ b/.gitlab-ci.yml > @@ -7,7 +7,7 @@ workflow: > - if: $CI_COMMIT_TAG > - if: $CI_COMMIT_REF_PROTECTED == "true" > > -test: > +test:linux: > image: $image > before_script: > - ./ci/install-docker-dependencies.sh > @@ -52,6 +52,30 @@ test: > - t/failed-test-artifacts > when: on_failure > > +test:osx: > + image: $image > + tags: > + - saas-macos-medium-m1 > + before_script: > + - ./ci/install-dependencies.sh > + script: > + - ./ci/run-build-and-tests.sh > + after_script: > + - | > + if test "$CI_JOB_STATUS" != 'success' > + then > + ./ci/print-test-failures.sh > + fi > + parallel: > + matrix: > + - jobname: osx-clang > + image: macos-13-xcode-14 > + CC: clang > + artifacts: > + paths: > + - t/failed-test-artifacts > + when: on_failure > + > static-analysis: > image: ubuntu:22.04 > variables: > diff --git a/ci/lib.sh b/ci/lib.sh > index f631206a44..d5dd2f2697 100755 > --- a/ci/lib.sh > +++ b/ci/lib.sh > @@ -252,7 +252,14 @@ then > CI_COMMIT="$CI_COMMIT_SHA" > case "$CI_JOB_IMAGE" in > macos-*) > - CI_OS_NAME=osx;; > + # GitLab CI has Python installed via multiple package managers, > + # most notably via asdf and Homebrew. Ensure that our builds > + # pick up the Homebrew one by prepending it to our PATH as the > + # asdf one breaks tests. > + export PATH="$(brew --prefix)/bin:$PATH" > + > + CI_OS_NAME=osx > + ;; > alpine:*|fedora:*|ubuntu:*) > CI_OS_NAME=linux;; > *)