From efce544418971b064d9fc8183a6caa582c54559b Mon Sep 17 00:00:00 2001 From: Viktor Szakats Date: Sat, 20 Jul 2024 13:31:45 +0200 Subject: [PATCH] GHA/non-native: improve, migrate x86_64 FreeBSD with tests from Cirrus CI - run tests via `make test-ci` instead of `make check` with autotools. - add `x86_64` job for FreeBSD, with tests. It matches the existing Cirrus CI job, with these differences: - finishes 3x faster (thanks to parallel tests enabled). - librtmp is not enabled because it's slated for removal by FreeBSD. (already past the removal deadline, thought the package still installs.) - DICT and TELNET servers fail to start. Couldn't figure out why. It means skipping test 1450 and 1452. - it runs more tests, e.g. websockets and ip6-localhost. - no `pkg update -f`. - it misses the `CRYPTOGRAPHY_DONT_BUILD_RUST=1`, `pkg delete curl`, `chmod 777`, `sudo -u nobody` and `sysctl net.inet.tcp.blackhole` tricks. The latter is the default in these runners, the others did not affect results. - set `-j0` for tests in the NetBSD job. Flaky otherwise. Closes #14244 --- .azure-pipelines.yml | 2 - .cirrus.yml | 87 --------------------------- .github/labeler.yml | 1 - .github/workflows/awslc.yml | 2 - .github/workflows/codeql-analysis.yml | 2 - .github/workflows/curl-for-win.yml | 2 - .github/workflows/fuzz.yml | 2 - .github/workflows/http3-linux.yml | 2 - .github/workflows/linux-old.yml | 2 - .github/workflows/linux.yml | 2 - .github/workflows/linux32.yml | 2 - .github/workflows/macos.yml | 2 - .github/workflows/non-native.yml | 35 ++++++++--- .github/workflows/torture.yml | 2 - .github/workflows/windows.yml | 2 - .github/workflows/wolfssl.yml | 2 - appveyor.yml | 1 - tests/CI.md | 9 +-- 18 files changed, 26 insertions(+), 133 deletions(-) delete mode 100644 .cirrus.yml diff --git a/.azure-pipelines.yml b/.azure-pipelines.yml index 08744e15d0..96c36933e6 100644 --- a/.azure-pipelines.yml +++ b/.azure-pipelines.yml @@ -34,7 +34,6 @@ trigger: paths: exclude: - '.circleci/*' - - '.cirrus.yml' - '.github/*' - '.github/workflows/*' - 'appveyor.*' @@ -48,7 +47,6 @@ pr: paths: exclude: - '.circleci/*' - - '.cirrus.yml' - '.github/*' - '.github/workflows/*' - 'appveyor.*' diff --git a/.cirrus.yml b/.cirrus.yml deleted file mode 100644 index 6336ff6269..0000000000 --- a/.cirrus.yml +++ /dev/null @@ -1,87 +0,0 @@ -#*************************************************************************** -# _ _ ____ _ -# Project ___| | | | _ \| | -# / __| | | | |_) | | -# | (__| |_| | _ <| |___ -# \___|\___/|_| \_\_____| -# -# Copyright (C) Daniel Stenberg, , et al. -# -# This software is licensed as described in the file COPYING, which -# you should have received as part of this distribution. The terms -# are also available at https://curl.se/docs/copyright.html. -# -# You may opt to use, copy, modify, merge, publish, distribute and/or sell -# copies of the Software, and permit persons to whom the Software is -# furnished to do so, under the terms of the COPYING file. -# -# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY -# KIND, either express or implied. -# -# SPDX-License-Identifier: curl -# -########################################################################### -# https://cirrus-ci.com/github/curl/curl -# -# Cirrus CI configuration: -# https://cirrus-ci.org/guide/writing-tasks/ -# Used/remaining credits (must be logged in): -# https://cirrus-ci.com/settings/github/curl - -freebsd_task: - skip: "changesIncludeOnly( - '**/CMakeLists.txt', - '.azure-pipelines.yml', - '.circleci/**', - '.github/**', - 'appveyor.*', - 'CMake/**', - 'packages/**', - 'plan9/**', - 'projects/**', - 'winbuild/**' - )" - - name: FreeBSD - - matrix: - - name: FreeBSD 14.0 - freebsd_instance: - image_family: freebsd-14-0 - memory: 1600M - - env: - CIRRUS_CLONE_DEPTH: 10 - CRYPTOGRAPHY_DONT_BUILD_RUST: 1 - MAKEFLAGS: -j 3 - - pkginstall_script: - - pkg update -f - - pkg install -y autoconf automake libtool pkgconf brotli openldap26-client heimdal libpsl libssh2 libidn2 librtmp libnghttp2 nghttp2 stunnel py311-openssl py311-impacket py311-cryptography libpsl - - pkg delete -y curl - configure_script: - - autoreconf -fi - # Building with the address sanitizer is causing unexplainable test issues due to timeouts - # - case `uname -r` in - # 12.2*) - # export CC=clang; - # export CFLAGS="-fsanitize=address,undefined,signed-integer-overflow -fno-sanitize-recover=undefined,integer -Wformat -Werror=format-security -Werror=array-bounds -g"; - # export CXXFLAGS="-fsanitize=address,undefined -fno-sanitize-recover=undefined,integer -Wformat -Werror=format-security -Werror=array-bounds -g"; - # export LDFLAGS="-fsanitize=address,undefined -fno-sanitize-recover=undefined,integer" ;; - # esac - - ./configure --prefix="${HOME}"/install --disable-dependency-tracking --enable-debug --with-openssl --with-libssh2 --with-brotli --with-gssapi --with-libidn2 --enable-manual --enable-ldap --enable-ldaps --with-librtmp --with-libpsl --with-nghttp2 || { tail -300 config.log; false; } - compile_script: - - make V=1 && make V=1 examples && cd tests && make V=1 - test_script: - # blackhole? - - sysctl net.inet.tcp.blackhole - # make sure we don't run blackhole != 0 - - sudo sysctl net.inet.tcp.blackhole=0 - # Some tests won't run if run as root so run them as another user. - # Make directories world writable so the test step can write wherever it needs. - - find . -type d -exec chmod 777 {} \; - # The OpenSSH server instance for the testsuite cannot be started on FreeBSD, - # therefore the SFTP and SCP tests are disabled right away from the beginning. - - sudo -u nobody make V=1 TFLAGS="-n !SFTP !SCP" test-ci - install_script: - - make V=1 install diff --git a/.github/labeler.yml b/.github/labeler.yml index 7f98b8ffab..43d42808f3 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -44,7 +44,6 @@ CI: - any-glob-to-any-file: - '.azure-pipelines.yml' - '.circleci/**' - - '.cirrus.yml' - '.github/**' - 'appveyor.*' - 'scripts/ci*' diff --git a/.github/workflows/awslc.yml b/.github/workflows/awslc.yml index 4921200ec9..a45ef7d65f 100644 --- a/.github/workflows/awslc.yml +++ b/.github/workflows/awslc.yml @@ -13,7 +13,6 @@ on: - '**/*.md' - '.azure-pipelines.yml' - '.circleci/**' - - '.cirrus.yml' - 'appveyor.*' - 'packages/**' - 'plan9/**' @@ -26,7 +25,6 @@ on: - '**/*.md' - '.azure-pipelines.yml' - '.circleci/**' - - '.cirrus.yml' - 'appveyor.*' - 'packages/**' - 'plan9/**' diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index eb9851893e..f0e109f81e 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -13,7 +13,6 @@ on: - '**/*.md' - '.azure-pipelines.yml' - '.circleci/**' - - '.cirrus.yml' - 'appveyor.*' - 'docs/**' - 'packages/**' @@ -28,7 +27,6 @@ on: - '**/*.md' - '.azure-pipelines.yml' - '.circleci/**' - - '.cirrus.yml' - 'appveyor.*' - 'docs/**' - 'packages/**' diff --git a/.github/workflows/curl-for-win.yml b/.github/workflows/curl-for-win.yml index d6c4f83bca..87927278c4 100644 --- a/.github/workflows/curl-for-win.yml +++ b/.github/workflows/curl-for-win.yml @@ -13,7 +13,6 @@ on: - '**/*.md' - '.azure-pipelines.yml' - '.circleci/**' - - '.cirrus.yml' - 'appveyor.*' - 'packages/**' - 'plan9/**' @@ -26,7 +25,6 @@ on: - '**/*.md' - '.azure-pipelines.yml' - '.circleci/**' - - '.cirrus.yml' - 'appveyor.*' - 'packages/**' - 'plan9/**' diff --git a/.github/workflows/fuzz.yml b/.github/workflows/fuzz.yml index 247a1c0abe..20774292b6 100644 --- a/.github/workflows/fuzz.yml +++ b/.github/workflows/fuzz.yml @@ -14,7 +14,6 @@ on: - '**/CMakeLists.txt' - '.azure-pipelines.yml' - '.circleci/**' - - '.cirrus.yml' - 'appveyor.*' - 'CMake/**' - 'packages/**' @@ -30,7 +29,6 @@ on: - '**/CMakeLists.txt' - '.azure-pipelines.yml' - '.circleci/**' - - '.cirrus.yml' - 'appveyor.*' - 'CMake/**' - 'packages/**' diff --git a/.github/workflows/http3-linux.yml b/.github/workflows/http3-linux.yml index d38561e9eb..618f3769c3 100644 --- a/.github/workflows/http3-linux.yml +++ b/.github/workflows/http3-linux.yml @@ -14,7 +14,6 @@ on: - '**/CMakeLists.txt' - '.azure-pipelines.yml' - '.circleci/**' - - '.cirrus.yml' - 'appveyor.*' - 'CMake/**' - 'packages/**' @@ -29,7 +28,6 @@ on: - '**/CMakeLists.txt' - '.azure-pipelines.yml' - '.circleci/**' - - '.cirrus.yml' - 'appveyor.*' - 'CMake/**' - 'packages/**' diff --git a/.github/workflows/linux-old.yml b/.github/workflows/linux-old.yml index f143a5ea34..ecb5968f47 100644 --- a/.github/workflows/linux-old.yml +++ b/.github/workflows/linux-old.yml @@ -27,7 +27,6 @@ on: - '**/*.md' - '.azure-pipelines.yml' - '.circleci/**' - - '.cirrus.yml' - 'appveyor.*' - 'packages/**' - 'plan9/**' @@ -40,7 +39,6 @@ on: - '**/*.md' - '.azure-pipelines.yml' - '.circleci/**' - - '.cirrus.yml' - 'appveyor.*' - 'packages/**' - 'plan9/**' diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 140a531a7f..bde8fb60aa 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -13,7 +13,6 @@ on: - '**/*.md' - '.azure-pipelines.yml' - '.circleci/**' - - '.cirrus.yml' - 'appveyor.*' - 'packages/**' - 'plan9/**' @@ -26,7 +25,6 @@ on: - '**/*.md' - '.azure-pipelines.yml' - '.circleci/**' - - '.cirrus.yml' - 'appveyor.*' - 'packages/**' - 'plan9/**' diff --git a/.github/workflows/linux32.yml b/.github/workflows/linux32.yml index 7500f2c8d4..eb7cb8ac87 100644 --- a/.github/workflows/linux32.yml +++ b/.github/workflows/linux32.yml @@ -14,7 +14,6 @@ on: - '**/CMakeLists.txt' - '.azure-pipelines.yml' - '.circleci/**' - - '.cirrus.yml' - 'appveyor.*' - 'CMake/**' - 'packages/**' @@ -29,7 +28,6 @@ on: - '**/CMakeLists.txt' - '.azure-pipelines.yml' - '.circleci/**' - - '.cirrus.yml' - 'appveyor.*' - 'CMake/**' - 'packages/**' diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index 947ee2b491..c5e8e4535f 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -13,7 +13,6 @@ on: - '**/*.md' - '.azure-pipelines.yml' - '.circleci/**' - - '.cirrus.yml' - 'appveyor.*' - 'packages/**' - 'plan9/**' @@ -26,7 +25,6 @@ on: - '**/*.md' - '.azure-pipelines.yml' - '.circleci/**' - - '.cirrus.yml' - 'appveyor.*' - 'packages/**' - 'plan9/**' diff --git a/.github/workflows/non-native.yml b/.github/workflows/non-native.yml index 94dd301b95..95a6d466fa 100644 --- a/.github/workflows/non-native.yml +++ b/.github/workflows/non-native.yml @@ -13,7 +13,6 @@ on: - '**/*.md' - '.azure-pipelines.yml' - '.circleci/**' - - '.cirrus.yml' - 'appveyor.*' - 'packages/**' - 'plan9/**' @@ -26,7 +25,6 @@ on: - '**/*.md' - '.azure-pipelines.yml' - '.circleci/**' - - '.cirrus.yml' - 'appveyor.*' - 'packages/**' - 'plan9/**' @@ -71,6 +69,7 @@ jobs: bld/src/curl --disable --version if [ '${{ matrix.arch }}' = 'x86_64' ]; then # Slow on emulated CPU cmake --build bld --config Debug --parallel 3 --target testdeps + export TFLAGS='-j0' # flakies: ~389 ~392 ~TFTP and more cmake --build bld --config Debug --target test-ci fi @@ -116,6 +115,7 @@ jobs: strategy: matrix: include: + - { build: 'autotools', arch: 'x86_64', compiler: 'clang' } - { build: 'autotools', arch: 'arm64', compiler: 'clang' } - { build: 'cmake' , arch: 'arm64', compiler: 'clang' } fail-fast: false @@ -130,7 +130,13 @@ jobs: architecture: ${{ matrix.arch }} run: | # https://ports.freebsd.org/ - sudo pkg install -y autoconf automake libtool pkgconf brotli openldap26-client libidn2 libnghttp2 nghttp2 stunnel py39-openssl py39-impacket py39-cryptography + pkgs='autoconf automake libtool pkgconf brotli openldap26-client libidn2 libnghttp2 nghttp2 stunnel' + if [ '${{ matrix.arch }}' = 'x86_64' ]; then + pkgs="${pkgs} py311-openssl py311-impacket py311-cryptography" + else + pkgs="${pkgs} py39-openssl py39-impacket py39-cryptography" + fi + sudo pkg install -y ${pkgs} autoreconf -fi export CC='${{ matrix.compiler }}' mkdir bld && cd bld && ../configure --enable-debug --enable-warnings --enable-werror \ @@ -143,8 +149,10 @@ jobs: src/curl --disable --version make -j3 examples if [ '${{ matrix.arch }}' = 'x86_64' ]; then # Slow on emulated CPU - export TFLAGS='-j12' - make check V=1 + make -j3 -C tests + # The OpenSSH server instance for the testsuite cannot be started on FreeBSD, + # therefore the SFTP and SCP tests are disabled right away from the beginning. + make test-ci V=1 TFLAGS='-j12 !SFTP !SCP' fi - name: 'cmake' @@ -156,7 +164,13 @@ jobs: architecture: ${{ matrix.arch }} run: | # https://ports.freebsd.org/ - sudo pkg install -y cmake pkgconf brotli openldap26-client libidn2 libnghttp2 nghttp2 stunnel py39-openssl py39-impacket py39-cryptography + pkgs='cmake pkgconf brotli openldap26-client libidn2 libnghttp2 nghttp2 stunnel' + if [ '${{ matrix.arch }}' = 'x86_64' ]; then + pkgs="${pkgs} py311-openssl py311-impacket py311-cryptography" + else + pkgs="${pkgs} py39-openssl py39-impacket py39-cryptography" + fi + sudo pkg install -y ${pkgs} cmake -B bld \ '-DCMAKE_C_COMPILER=${{ matrix.compiler }}' \ -DCMAKE_UNITY_BUILD=ON \ @@ -171,8 +185,9 @@ jobs: bld/src/curl --disable --version if [ '${{ matrix.arch }}' = 'x86_64' ]; then # Slow on emulated CPU cmake --build bld --config Debug --parallel 3 --target testdeps - export TFLAGS='-j12' - cmake --build bld --config Debug --target test-ci + # The OpenSSH server instance for the testsuite cannot be started on FreeBSD, + # therefore the SFTP and SCP tests are disabled right away from the beginning. + make test-ci V=1 TFLAGS='-j12 !SFTP !SCP' fi omnios: @@ -198,5 +213,5 @@ jobs: gmake -j3 install src/curl --disable --version gmake -j3 examples - export TFLAGS='-j12 ~MQTT ~FTP' - gmake check V=1 + gmake -j3 -C tests + gmake test-ci V=1 TFLAGS='-j12 ~MQTT ~FTP' diff --git a/.github/workflows/torture.yml b/.github/workflows/torture.yml index 51755cd89b..10bd34ce9c 100644 --- a/.github/workflows/torture.yml +++ b/.github/workflows/torture.yml @@ -14,7 +14,6 @@ on: - '**/CMakeLists.txt' - '.azure-pipelines.yml' - '.circleci/**' - - '.cirrus.yml' - 'appveyor.*' - 'CMake/**' - 'packages/**' @@ -29,7 +28,6 @@ on: - '**/CMakeLists.txt' - '.azure-pipelines.yml' - '.circleci/**' - - '.cirrus.yml' - 'appveyor.*' - 'CMake/**' - 'packages/**' diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 0e5d5ca095..fc314c49ee 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -13,7 +13,6 @@ on: - '**/*.md' - '.azure-pipelines.yml' - '.circleci/**' - - '.cirrus.yml' - 'appveyor.*' - 'packages/**' - 'plan9/**' @@ -26,7 +25,6 @@ on: - '**/*.md' - '.azure-pipelines.yml' - '.circleci/**' - - '.cirrus.yml' - 'appveyor.*' - 'packages/**' - 'plan9/**' diff --git a/.github/workflows/wolfssl.yml b/.github/workflows/wolfssl.yml index a8c5c04ebe..c4156497e2 100644 --- a/.github/workflows/wolfssl.yml +++ b/.github/workflows/wolfssl.yml @@ -14,7 +14,6 @@ on: - '**/CMakeLists.txt' - '.azure-pipelines.yml' - '.circleci/**' - - '.cirrus.yml' - 'appveyor.*' - 'CMake/**' - 'packages/**' @@ -29,7 +28,6 @@ on: - '**/CMakeLists.txt' - '.azure-pipelines.yml' - '.circleci/**' - - '.cirrus.yml' - 'appveyor.*' - 'CMake/**' - 'packages/**' diff --git a/appveyor.yml b/appveyor.yml index 381d672869..bc0cb4a152 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -207,7 +207,6 @@ skip_commits: files: - '.azure-pipelines.yml' - '.circleci/*' - - '.cirrus.yml' - '.github/**/*' - 'packages/**/*' - 'plan9/**/*' diff --git a/tests/CI.md b/tests/CI.md index 0d3d1108ef..1f60682f65 100644 --- a/tests/CI.md +++ b/tests/CI.md @@ -107,11 +107,4 @@ admins/group members can be added on request. ### Cirrus CI -Cirrus CI runs a basic test suite on FreeBSD and Windows. This is configured in -`.cirrus.yml`. - -You can [view the full list of CI jobs on Cirrus CI's -website](https://cirrus-ci.com/github/curl/curl). - -`@bagder` has access to edit the "Project Settings" on that page. Additional -admins/group members can be added on request. +Not used anymore. -- 2.47.3