Skip to content

Commit

Permalink
CI: Move more to GitHub actions including Containers (c-ares#842)
Browse files Browse the repository at this point in the history
GitHub actions supports running tests on various docker containers, move
Ubuntu 20.04 and Alpine tests to containers. Also move iOS testing to
GitHub actions since that runs on MacOS which is supported.

This should take additional load off of Cirrus-CI which consumes credits
like crazy. This leaves only FreeBSD and Linux ARM testing on Cirrus-CI.

Authored-By: Brad House (@bradh352)
  • Loading branch information
bradh352 authored Aug 1, 2024
1 parent 5f04286 commit d693951
Show file tree
Hide file tree
Showing 16 changed files with 292 additions and 66 deletions.
61 changes: 0 additions & 61 deletions .cirrus.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,28 +8,6 @@ env:

task:
matrix:
- name: "Alpine amd64"
env:
DIST: "ALPINE"
LC_ALL: "C"
SCAN_BUILD: "scan-build"
MAKE: "make"
BUILD_ASAN: "yes"
BUILD_UBSAN: "yes"
BUILD_VALGRIND: "yes"
BUILD_ANALYZE: "yes"
TEST_DEBUGGER: "gdb"
TEST_SYMBOL_VISIBILITY: "yes"
container:
image: alpine:latest
- name: "Ubuntu OLD amd64"
env:
DIST: "UBUNTU"
LC_ALL: "C"
MAKE: "make"
TEST_DEBUGGER: "gdb"
container:
image: ubuntu:20.04
- name: "Debian arm64"
env:
DIST: "DEBIAN-ARM"
Expand Down Expand Up @@ -58,16 +36,6 @@ task:
TEST_SYMBOL_VISIBILITY: "yes"
freebsd_instance:
image_family: freebsd-14-1
- name: "iOS"
env:
DIST: "iOS"
MAKE: "make"
CMAKE_FLAGS: "-DCMAKE_BUILD_TYPE=DEBUG -DCARES_STATIC=ON -DCARES_STATIC_PIC=ON -DCMAKE_OSX_DEPLOYMENT_TARGET=10.0 -DCMAKE_OSX_ARCHITECTURES=armv7;armv7s;arm64 -G Ninja"
CMAKE_TEST_FLAGS: "-DCARES_BUILD_TESTS=OFF"
CFLAGS: "-arch armv7 -arch armv7s -arch arm64 -miphoneos-version-min=10.0"
CONFIG_OPTS: "--host=arm-apple-darwin10 --disable-tests"
macos_instance:
image: ghcr.io/cirruslabs/macos-sonoma-xcode:latest
matrix:
- name: "CMAKE"
env:
Expand Down Expand Up @@ -118,23 +86,6 @@ task:
install_script:
- |
case "${DIST}" in
ALPINE)
apk add bash cmake samurai gtest-dev autoconf autoconf-archive automake libtool pkgconf make
case "${BUILD_TYPE}" in
asan|lsan|ubsan)
apk add clang17 compiler-rt lldb
;;
analyze)
apk add clang17 clang17-analyzer compiler-rt lldb
;;
valgrind)
apk add gcc g++ valgrind
;;
*)
apk add gcc g++ gdb
;;
esac
;;
UBUNTU|DEBIAN*)
export DEBIAN_FRONTEND=noninteractive && \
apt-get update && \
Expand Down Expand Up @@ -167,18 +118,6 @@ task:
;;
esac
;;
MACOS|iOS)
brew update
brew install ninja cmake googletest
case "${BUILD_TYPE}" in
asan|ubsan|lsan|analyze)
brew install llvm autoconf automake libtool make ninja
;;
autotools)
brew install autoconf automake libtool make
;;
esac
;;
esac
script:
Expand Down
96 changes: 96 additions & 0 deletions .github/workflows/alpine-latest.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
# Copyright (C) The c-ares project and its contributors
# SPDX-License-Identifier: MIT
name: Alpine (latest)
on:
push:
pull_request:

concurrency:
group: ${{ github.ref }}-alpine-latest
cancel-in-progress: true

env:
TEST_FILTER: "--gtest_filter=-*LiveSearchTXT*:*LiveSearchANY*"
CMAKE_FLAGS: "-DCMAKE_BUILD_TYPE=DEBUG -DCARES_STATIC=ON -DCARES_STATIC_PIC=ON -G Ninja"
MAKE: make

jobs:
build:
runs-on: ubuntu-latest
container:
image: alpine:latest
# Needed for TCP FastOpen
options: --privileged
name: "Alpine (latest)"
steps:
- name: Install packages
run: |
apk add bash cmake samurai gtest-dev autoconf autoconf-archive automake libtool pkgconf make clang17 clang17-analyzer compiler-rt lldb gcc g++ valgrind gdb sudo
- name: Checkout c-ares
uses: actions/checkout@v4
- name: "Make sure TCP FastOpen is enabled"
run: |
sudo sysctl -w net.ipv4.tcp_fastopen=3
- name: "CMake: build and test c-ares"
env:
BUILD_TYPE: CMAKE
CMAKE_TEST_FLAGS: "-DCARES_BUILD_TESTS=ON"
TEST_DEBUGGER: gdb
run: |
./ci/build.sh
./ci/test.sh
- name: "Autotools: build and test c-ares"
env:
BUILD_TYPE: autotools
TEST_DEBUGGER: gdb
run: |
./ci/build.sh
./ci/test.sh
- name: "CMake: UBSAN: build and test c-ares"
env:
BUILD_TYPE: "ubsan"
CC: "clang"
CXX: "clang++"
CMAKE_TEST_FLAGS: "-DCARES_BUILD_TESTS=ON"
CFLAGS: "-fsanitize=undefined -fno-sanitize-recover"
CXXFLAGS: "-fsanitize=undefined -fno-sanitize-recover"
LDFLAGS: "-fsanitize=undefined"
TEST_DEBUGGER: "none"
run: |
./ci/build.sh
./ci/test.sh
- name: "CMake: ASAN: build and test c-ares"
env:
BUILD_TYPE: "asan"
CC: "clang"
CXX: "clang++"
CMAKE_TEST_FLAGS: "-DCARES_BUILD_TESTS=ON"
CFLAGS: "-fsanitize=address"
CXXFLAGS: "-fsanitize=address"
LDFLAGS: "-fsanitize=address"
TEST_DEBUGGER: "none"
run: |
./ci/build.sh
./ci/test.sh
- name: "CMake: Static Analyzer: build c-ares"
env:
BUILD_TYPE: "analyze"
CC: "clang"
CXX: "clang++"
SCAN_WRAP: "scan-build -v --status-bugs"
CMAKE_TEST_FLAGS: "-DCARES_BUILD_TESTS=OFF"
TEST_DEBUGGER: "lldb"
run: |
./ci/build.sh
./ci/test.sh
- name: "Valgrind: build and test c-ares (no TCP FastOpen)"
env:
BUILD_TYPE: "valgrind"
TEST_WRAP: "valgrind --leak-check=full"
TEST_FILTER: "--gtest_filter=-*Container*:*LiveSearchANY*:*LiveSearchTXT*"
CMAKE_TEST_FLAGS: "-DCARES_BUILD_TESTS=ON"
TEST_DEBUGGER: none
run: |
sudo sysctl -w net.ipv4.tcp_fastopen=0
./ci/build.sh
./ci/test.sh
5 changes: 5 additions & 0 deletions .github/workflows/codespell.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,14 @@ on:
- 'src/**'
- 'include/**'

concurrency:
group: ${{ github.ref }}-codespell
cancel-in-progress: true

jobs:
codespell:
runs-on: ubuntu-latest
name: Codespell
steps:
- name: Checkout
uses: actions/checkout@v4
Expand Down
6 changes: 6 additions & 0 deletions .github/workflows/coverity.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,15 @@ on:
push:
branches: [ coverity_scan ]
workflow_dispatch:

concurrency:
group: ${{ github.ref }}-coverity
cancel-in-progress: true

jobs:
build:
runs-on: ubuntu-latest
name: Coverity
steps:
- name: Checkout Source
uses: actions/checkout@v4
Expand Down
5 changes: 5 additions & 0 deletions .github/workflows/djgpp.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,14 @@ on:
push:
pull_request:

concurrency:
group: ${{ github.ref }}-djgpp
cancel-in-progress: true

jobs:
build:
runs-on: windows-latest
name: DJGPP
steps:
- name: Install GNU Make
run: |
Expand Down
45 changes: 45 additions & 0 deletions .github/workflows/ios.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
# Copyright (C) The c-ares project and its contributors
# SPDX-License-Identifier: MIT
name: iOS
on:
push:
pull_request:

concurrency:
group: ${{ github.ref }}-ios
cancel-in-progress: true

env:
DIST: "iOS"
MAKE: "make"
CMAKE_FLAGS: "-DCMAKE_BUILD_TYPE=DEBUG -DCARES_STATIC=ON -DCARES_STATIC_PIC=ON -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_DEPLOYMENT_TARGET=10.0 -DCMAKE_OSX_ARCHITECTURES=armv7;armv7s;arm64 -G Ninja"
CMAKE_TEST_FLAGS: "-DCARES_BUILD_TESTS=OFF"

jobs:
build:
runs-on: macos-latest
name: "iOS"
steps:
- name: Install packages
run: brew install cmake googletest llvm autoconf automake libtool make ninja
- name: Checkout c-ares
uses: actions/checkout@v4
- name: "CMake: build and test c-ares"
env:
BUILD_TYPE: CMAKE
run: |
./ci/build.sh
- name: "Autotools: build and test c-ares"
env:
BUILD_TYPE: autotools
CFLAGS: "-arch armv7 -arch armv7s -arch arm64 -miphoneos-version-min=10.0"
CONFIG_OPTS: "--host=arm-apple-darwin10 --disable-tests"
run: |
./ci/build.sh
- name: "Cmake: Static Analyzer: build c-ares"
env:
BUILD_TYPE: "analyze"
CC: "clang"
SCAN_WRAP: "/opt/homebrew/opt/llvm/bin/scan-build-py -v --status-bugs"
run: |
./ci/build.sh
5 changes: 5 additions & 0 deletions .github/workflows/netbsd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,14 @@ on:
push:
pull_request:

concurrency:
group: ${{ github.ref }}-netbsd
cancel-in-progress: true

jobs:
test:
runs-on: ubuntu-latest
name: NetBSD
steps:
- uses: actions/checkout@v4

Expand Down
6 changes: 5 additions & 1 deletion .github/workflows/openbsd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,16 @@ on:
push:
pull_request:

concurrency:
group: ${{ github.ref }}-openbsd
cancel-in-progress: true

jobs:
test:
runs-on: ubuntu-latest
name: OpenBSD
steps:
- uses: actions/checkout@v4

- name: Test
uses: cross-platform-actions/[email protected]
env:
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/reuse.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ permissions: {}
jobs:
check:
runs-on: ubuntu-latest
name: REUSE compliance
steps:
- uses: actions/checkout@v4
- name: REUSE Compliance Check
Expand Down
4 changes: 4 additions & 0 deletions .github/workflows/solaris.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,10 @@ on:
push:
pull_request:

concurrency:
group: ${{ github.ref }}-solaris
cancel-in-progress: true

jobs:
test:
runs-on: ubuntu-latest
Expand Down
7 changes: 6 additions & 1 deletion .github/workflows/sonarcloud.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,17 @@ on:
- main
# pull_request:
# types: [opened, synchronize, reopened]

concurrency:
group: ${{ github.ref }}-sonarcloud
cancel-in-progress: true

jobs:
build:
name: Build and analyze
runs-on: ubuntu-latest
env:
BUILD_WRAPPER_OUT_DIR: build_wrapper_output_directory # Directory where build-wrapper output will be placed
name: "SonarCloud: Build and analyze"
steps:
- uses: actions/checkout@v4
with:
Expand Down
Loading

0 comments on commit d693951

Please sign in to comment.