Skip to content

test macOS abort in CI #249

test macOS abort in CI

test macOS abort in CI #249

Workflow file for this run

name: Passenger CI tests
env:
FORCE_COLOR: 1
RUST_LOG_STYLE: always
DEFAULT_RUBY_VERSION: 3.1
BUNDLE_CLEAN: true
USE_ASAN: true
on:
push: {}
pull_request: {}
jobs:
# cxx-linux:
# name: C++ tests on Linux
# runs-on: ubuntu-24.04
# timeout-minutes: 30
# env:
# EXTRA_CFLAGS: '-fdiagnostics-color'
# EXTRA_CXXFLAGS: '-fdiagnostics-color'
# SCCACHE_AZURE_BLOB_CONTAINER: ${{ vars.SCCACHE_AZURE_BLOB_CONTAINER }}
# SCCACHE_AZURE_KEY_PREFIX: sccache/cxx-ubuntu
# steps:
# - uses: actions/checkout@v4
# with:
# submodules: true
# - uses: ruby/setup-ruby@v1
# with:
# ruby-version: ${{ env.DEFAULT_RUBY_VERSION }}
# bundler-cache: true
# - name: Setup bundle gem path
# run: ./dev/ci/setup-bundle-gem-path
# - name: Setup sccache
# run: ./dev/ci/setup-sccache
# timeout-minutes: 1
# env:
# ARCH_AND_OS: x86_64-unknown-linux-musl
# SCCACHE_AZURE_CONNECTION_STRING: ${{ secrets.AZURE_CI_STORAGE_CONNECTION_STRING }}
# - name: Setup library dependencies
# run: >
# sudo apt update &&
# sudo apt install -y libcurl4-openssl-dev
# - name: Setup misc
# run: |
# set -x
# sudo chmod 755 "$HOME"
# cp test/config.json.github-ci-linux test/config.json
# - name: Build C++ tests
# run: bundle exec drake -j4 test:cxx:build
# - name: Run C++ tests
# run: >
# sudo env
# PATH="$PATH"
# GEM_PATH="$GEM_PATH"
# ../buildout/test/cxx/main
# working-directory: test
# - name: Archive logs
# uses: actions/upload-artifact@v4
# with:
# name: cxx-test-logs-macos
# path: 'buildout/testlogs/*'
# if: '!cancelled()'
# - name: Teardown sccache
# run: ./dev/ci/teardown-sccache
# if: '!cancelled()'
cxx-macos:
name: C++ tests on macOS
runs-on: macos-14
timeout-minutes: 30
env:
EXTRA_CFLAGS: '-I/opt/homebrew/opt/openssl@3/include -fcolor-diagnostics'
EXTRA_CXXFLAGS: '-I/opt/homebrew/opt/openssl@3/include -fcolor-diagnostics'
SCCACHE_AZURE_BLOB_CONTAINER: ${{ vars.SCCACHE_AZURE_BLOB_CONTAINER }}
SCCACHE_AZURE_KEY_PREFIX: sccache/cxx-macos-14-arm
steps:
- uses: actions/checkout@v4
with:
submodules: true
- uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ env.DEFAULT_RUBY_VERSION }}
bundler-cache: true
- name: Setup bundle gem path
run: ./dev/ci/setup-bundle-gem-path
- name: Setup sccache
run: ./dev/ci/setup-sccache
timeout-minutes: 1
env:
ARCH_AND_OS: aarch64-apple-darwin
SCCACHE_AZURE_CONNECTION_STRING: ${{ secrets.AZURE_CI_STORAGE_CONNECTION_STRING }}
- name: Setup dependencies
run: brew install coreutils
- name: Setup misc
run: |
sudo chmod 755 "$HOME"
sed "s|_USER_|$(whoami)|" test/config.json.github-ci-macos > test/config.json
- name: Build C++ tests
run: bundle exec drake -j4 test:cxx:build
- name: Run C++ tests
# The AbortHandler doesn't work so well on Github's macOS runners:
# - crash-watch invocation freezes the runner, so we disable this.
# - resuming the parent process after SIGSTOP doesn't work, so we force kill the parent.
# - force killing the parent may not work, so we enforce a low timeout to prevent
# the test from haging for a long time. We enforce this primarily using the 'timeout'
# command from coreutils instead of Github Actions' timeout, because the latter
# could put the entire job in the "skipped" state and refuse to show logs.
timeout-minutes: 11
run: >
sudo env
PATH="$PATH"
GEM_PATH="$GEM_PATH"
PASSENGER_DUMP_WITH_CRASH_WATCH=false
PASSENGER_FORCE_TERMINATE_ON_ABORT=true
gtimeout --signal KILL --verbose 30
../buildout/test/cxx/main
working-directory: test
- name: Archive logs
uses: actions/upload-artifact@v4
with:
name: cxx-test-logs-macos
path: 'buildout/testlogs/*'
if: '!cancelled()'
- name: Teardown sccache
run: ./dev/ci/teardown-sccache
if: '!cancelled()'
# apache2:
# name: "Apache2 tests on ${{ matrix.name }}"
# strategy:
# fail-fast: false
# matrix:
# include:
# - name: Linux
# os: ubuntu-24.04
# config_file: test/config.json.github-ci-linux
# extra_cflags: '-fdiagnostics-color'
# address_sanitizer: true
# sccache_arch_and_os: x86_64-unknown-linux-musl
# sccache_azure_key_prefix: sccache/cxx-ubuntu-24.04-x86_64
# - name: macOS
# os: macos-14
# config_file: test/config.json.github-ci-macos
# extra_cflags: '-I/opt/homebrew/opt/openssl@3/include -fcolor-diagnostics'
# # Using AddressSanitizer on dynamically loaded modules (like Apache modules)
# # requires loading Apache with the AddressSanitizer runtime using DYLD_INSERT_LIBRARIES.
# # That in turn requires disabling SIP, which is not possible on Github Actions.
# address_sanitizer: false
# sccache_arch_and_os: aarch64-apple-darwin
# sccache_azure_key_prefix: sccache/cxx-macos-14-arm
# runs-on: ${{ matrix.os }}
# env:
# EXTRA_CFLAGS: ${{ matrix.extra_cflags }}
# EXTRA_CXXFLAGS: ${{ matrix.extra_cflags }}
# USE_ASAN: ${{ matrix.address_sanitizer }}
# SCCACHE_AZURE_BLOB_CONTAINER: ${{ vars.SCCACHE_AZURE_BLOB_CONTAINER }}
# SCCACHE_AZURE_KEY_PREFIX: ${{ matrix.sccache_azure_key_prefix }}
# SCCACHE_CACHE_MULTIARCH: true
# steps:
# - uses: actions/checkout@v4
# with:
# submodules: true
# - uses: ruby/setup-ruby@v1
# with:
# ruby-version: ${{ env.DEFAULT_RUBY_VERSION }}
# bundler-cache: true
# - uses: actions/setup-node@v4
# with:
# node-version: 18
# cache: npm
# - name: Setup bundle gem path
# run: ./dev/ci/setup-bundle-gem-path
# - name: Setup misc
# run: |
# sudo chmod 755 "$HOME"
# sed "s|_USER_|$(whoami)|; s|_SOURCE_ROOT_|$(pwd)|" ${{ matrix.config_file }} > test/config.json
# - name: Setup Linux dependencies
# run: >
# sudo apt update &&
# sudo apt install -y libcurl4-openssl-dev apache2-dev libapr1-dev libaprutil1-dev
# if: matrix.name == 'Linux'
# - name: Setup macOS code signing
# run: |
# exec 2>&1
# set -x
# echo "$OPENSSL_CONFIG" > cert_config.cnf
# openssl req -new -newkey rsa:2048 -nodes -keyout github-ci.key -out github-ci.csr -config cert_config.cnf
# openssl x509 -req -in github-ci.csr -signkey github-ci.key -out github-ci.crt -days 3650 -extensions req_ext -extfile cert_config.cnf
# sudo security authorizationdb write com.apple.trust-settings.admin allow
# security create-keychain -p mypassword mykeychain.keychain
# security set-keychain-settings -lut 21600 mykeychain.keychain
# security unlock-keychain -p mypassword mykeychain.keychain
# security import github-ci.key -k mykeychain.keychain -A
# security set-key-partition-list -S apple-tool:,apple: -k mypassword mykeychain.keychain
# security add-trusted-cert -d -r trustRoot -k mykeychain.keychain github-ci.crt
# security list-keychain -d user -s mykeychain.keychain
# if: matrix.name == 'macOS'
# env:
# OPENSSL_CONFIG: |
# [ req ]
# default_bits = 2048
# prompt = no
# default_md = sha256
# distinguished_name = req_distinguished_name
# req_extensions = req_ext
# [ req_distinguished_name ]
# CN = Github CI
# [ req_ext ]
# keyUsage = critical, digitalSignature, keyEncipherment
# extendedKeyUsage = codeSigning
# - name: Setup hosts entries
# run: |
# echo 127.0.0.1 passenger.test | sudo tee -a /etc/hosts
# echo 127.0.0.1 1.passenger.test 2.passenger.test 3.passenger.test | sudo tee -a /etc/hosts
# echo 127.0.0.1 4.passenger.test 5.passenger.test 6.passenger.test | sudo tee -a /etc/hosts
# echo 127.0.0.1 7.passenger.test 8.passenger.test 9.passenger.test | sudo tee -a /etc/hosts
# - run: npm ci
# - name: Setup sccache
# run: ./dev/ci/setup-sccache
# timeout-minutes: 1
# env:
# ARCH_AND_OS: ${{ matrix.sccache_arch_and_os }}
# SCCACHE_AZURE_CONNECTION_STRING: ${{ secrets.AZURE_CI_STORAGE_CONNECTION_STRING }}
# - name: Test module installation as normal user
# run: ./bin/passenger-install-apache2-module --auto --force-colors
# - name: Teardown sccache
# run: ./dev/ci/teardown-sccache
# if: '!cancelled()'
# - name: Setup sccache as root
# run: ./dev/ci/setup-sccache
# timeout-minutes: 1
# env:
# SUDO: true
# ARCH_AND_OS: ${{ matrix.sccache_arch_and_os }}
# SCCACHE_AZURE_CONNECTION_STRING: ${{ secrets.AZURE_CI_STORAGE_CONNECTION_STRING }}
# - name: Test module installation as root
# run: sudo -E ./bin/passenger-install-apache2-module --auto --force-colors --no-compile
# - name: Teardown sccache as root
# run: ./dev/ci/teardown-sccache
# if: '!cancelled()'
# env:
# SUDO: true
# - name: Integration tests
# run: bundle exec rake test:integration:apache2
# - name: Archive logs
# uses: actions/upload-artifact@v4
# with:
# name: apache-test-logs-${{ matrix.os }}
# path: 'buildout/testlogs/*'
# nginx:
# name: "Nginx tests on ${{ matrix.name }}"
# strategy:
# fail-fast: false
# matrix:
# include:
# - name: Linux
# os: ubuntu-24.04
# config_file: test/config.json.github-ci-linux
# extra_cflags: '-fdiagnostics-color'
# sccache_arch_and_os: x86_64-unknown-linux-musl
# sccache_azure_key_prefix: sccache/cxx-ubuntu-24.04-x86_64
# - name: macOS
# os: macos-14
# config_file: test/config.json.github-ci-macos
# extra_cflags: '-I/opt/homebrew/opt/openssl@3/include -fcolor-diagnostics'
# sccache_arch_and_os: aarch64-apple-darwin
# sccache_azure_key_prefix: sccache/cxx-macos-14-arm
# runs-on: ${{ matrix.os }}
# env:
# EXTRA_CFLAGS: ${{ matrix.extra_cflags }}
# EXTRA_CXXFLAGS: ${{ matrix.extra_cflags }}
# SCCACHE_AZURE_BLOB_CONTAINER: ${{ vars.SCCACHE_AZURE_BLOB_CONTAINER }}
# SCCACHE_AZURE_KEY_PREFIX: ${{ matrix.sccache_azure_key_prefix }}
# steps:
# - uses: actions/checkout@v4
# with:
# submodules: true
# - uses: ruby/setup-ruby@v1
# with:
# ruby-version: ${{ env.DEFAULT_RUBY_VERSION }}
# bundler-cache: true
# - uses: actions/setup-node@v4
# with:
# node-version: 18
# cache: npm
# - name: Setup bundle gem path
# run: ./dev/ci/setup-bundle-gem-path
# - name: Setup sccache
# run: ./dev/ci/setup-sccache
# timeout-minutes: 1
# env:
# ARCH_AND_OS: ${{ matrix.sccache_arch_and_os }}
# SCCACHE_AZURE_CONNECTION_STRING: ${{ secrets.AZURE_CI_STORAGE_CONNECTION_STRING }}
# - name: Setup misc
# run: |
# sudo chmod 755 "$HOME"
# sed "s|_USER_|$(whoami)|" ${{ matrix.config_file }} > test/config.json
# - name: Setup Linux dependencies
# run: >
# sudo apt update &&
# sudo apt install -y libcurl4-openssl-dev
# if: matrix.name == 'Linux'
# - name: Setup hosts entries
# run: |
# echo 127.0.0.1 passenger.test | sudo tee -a /etc/hosts
# echo 127.0.0.1 1.passenger.test 2.passenger.test 3.passenger.test | sudo tee -a /etc/hosts
# echo 127.0.0.1 4.passenger.test 5.passenger.test 6.passenger.test | sudo tee -a /etc/hosts
# echo 127.0.0.1 7.passenger.test 8.passenger.test 9.passenger.test | sudo tee -a /etc/hosts
# - run: npm ci
# - name: Test installation
# run: ./bin/passenger-install-nginx-module --auto --force-colors --prefix=/tmp/nginx --auto-download
# - name: Integration tests
# run: bundle exec rake test:integration:nginx
# - name: Archive logs
# uses: actions/upload-artifact@v4
# with:
# name: nginx-test-logs-${{ matrix.os }}
# path: 'buildout/testlogs/*'
# - name: Teardown sccache
# run: ./dev/ci/teardown-sccache
# if: '!cancelled()'
# nginx_dynamic:
# name: "Nginx dynamic module tests on ${{ matrix.name }}"
# strategy:
# fail-fast: false
# matrix:
# include:
# - name: Linux
# os: ubuntu-24.04
# extra_cflags: '-fdiagnostics-color'
# sccache_arch_and_os: x86_64-unknown-linux-musl
# sccache_azure_key_prefix: sccache/cxx-ubuntu-24.04-x86_64
# - name: macOS
# os: macos-14
# extra_cflags: '-I/opt/homebrew/opt/openssl@3/include -fcolor-diagnostics'
# sccache_arch_and_os: aarch64-apple-darwin
# sccache_azure_key_prefix: sccache/cxx-macos-14-arm
# runs-on: ${{ matrix.os }}
# env:
# EXTRA_CFLAGS: ${{ matrix.extra_cflags }}
# EXTRA_CXXFLAGS: ${{ matrix.extra_cflags }}
# SCCACHE_AZURE_BLOB_CONTAINER: ${{ vars.SCCACHE_AZURE_BLOB_CONTAINER }}
# SCCACHE_AZURE_KEY_PREFIX: ${{ matrix.sccache_azure_key_prefix }}
# steps:
# - uses: actions/checkout@v4
# with:
# submodules: true
# - uses: ruby/setup-ruby@v1
# with:
# ruby-version: ${{ env.DEFAULT_RUBY_VERSION }}
# bundler-cache: true
# - name: Setup bundle gem path
# run: ./dev/ci/setup-bundle-gem-path
# - name: Setup sccache
# run: ./dev/ci/setup-sccache
# timeout-minutes: 1
# env:
# ARCH_AND_OS: ${{ matrix.sccache_arch_and_os }}
# SCCACHE_AZURE_CONNECTION_STRING: ${{ secrets.AZURE_CI_STORAGE_CONNECTION_STRING }}
# - name: Setup Linux dependencies
# run: >
# sudo apt update &&
# sudo apt install -y libcurl4-openssl-dev
# if: matrix.name == 'Linux'
# - name: Setup parameters
# run: |
# TEST_DYNAMIC_WITH_NGINX_VERSION=$(ruby -r "./src/ruby_supportlib/phusion_passenger.rb" -e 'puts PhusionPassenger::PREFERRED_NGINX_VERSION')
# NGINX_ADDON_DIR=$(./bin/passenger-config --nginx-addon-dir)
# echo "TEST_DYNAMIC_WITH_NGINX_VERSION=$TEST_DYNAMIC_WITH_NGINX_VERSION" >> "$GITHUB_ENV"
# echo "NGINX_ADDON_DIR=$NGINX_ADDON_DIR" >> "$GITHUB_ENV"
# - name: Compile module
# run: bundle exec drake -j4 nginx:as_dynamic_module
# - name: Download Nginx source
# run: curl -sSLO "https://www.nginx.org/download/nginx-$TEST_DYNAMIC_WITH_NGINX_VERSION.tar.gz"
# - name: Extract Nginx source
# run: tar -xzf "nginx-$TEST_DYNAMIC_WITH_NGINX_VERSION.tar.gz"
# - name: Configure Nginx source
# run: ./configure --with-cc-opt='-Wno-error' --add-dynamic-module="$NGINX_ADDON_DIR"
# working-directory: "nginx-${{ env.TEST_DYNAMIC_WITH_NGINX_VERSION }}"
# - name: Compile Nginx with dynamic module
# run: make -j4
# working-directory: "nginx-${{ env.TEST_DYNAMIC_WITH_NGINX_VERSION }}"
# - name: Teardown sccache
# run: ./dev/ci/teardown-sccache
# if: '!cancelled()'
# standalone:
# name: "Passenger Standalone tests on ${{ matrix.name }}"
# strategy:
# fail-fast: false
# matrix:
# include:
# - name: Linux
# os: ubuntu-24.04
# extra_cflags: '-fdiagnostics-color'
# sccache_arch_and_os: x86_64-unknown-linux-musl
# sccache_azure_key_prefix: sccache/cxx-ubuntu-24.04-x86_64
# - name: macOS
# os: macos-14
# extra_cflags: '-I/opt/homebrew/opt/openssl@3/include -fcolor-diagnostics'
# sccache_arch_and_os: aarch64-apple-darwin
# sccache_azure_key_prefix: sccache/cxx-macos-14-arm
# runs-on: ${{ matrix.os }}
# env:
# EXTRA_CFLAGS: ${{ matrix.extra_cflags }}
# EXTRA_CXXFLAGS: ${{ matrix.extra_cflags }}
# SCCACHE_AZURE_BLOB_CONTAINER: ${{ vars.SCCACHE_AZURE_BLOB_CONTAINER }}
# SCCACHE_AZURE_KEY_PREFIX: ${{ matrix.sccache_azure_key_prefix }}
# steps:
# - uses: actions/checkout@v4
# with:
# submodules: true
# - uses: ruby/setup-ruby@v1
# with:
# ruby-version: ${{ env.DEFAULT_RUBY_VERSION }}
# bundler-cache: true
# - name: Setup bundle gem path
# run: ./dev/ci/setup-bundle-gem-path
# - name: Setup sccache
# run: ./dev/ci/setup-sccache
# timeout-minutes: 1
# env:
# ARCH_AND_OS: ${{ matrix.sccache_arch_and_os }}
# SCCACHE_AZURE_CONNECTION_STRING: ${{ secrets.AZURE_CI_STORAGE_CONNECTION_STRING }}
# - name: Setup Linux dependencies
# run: >
# sudo apt update &&
# sudo apt install -y libcurl4-openssl-dev
# if: matrix.name == 'Linux'
# - name: Compile prerequisites
# run: bundle exec drake -j4 nginx
# - name: Integration test
# run: bundle exec drake -j4 test:integration:standalone
# - name: Teardown sccache
# run: ./dev/ci/teardown-sccache
# if: '!cancelled()'
# ruby:
# name: "Ruby tests on ${{ matrix.name }}"
# strategy:
# fail-fast: false
# matrix:
# include:
# - name: Linux
# os: ubuntu-24.04
# config_file: test/config.json.github-ci-linux
# extra_cflags: '-fdiagnostics-color'
# sccache_arch_and_os: x86_64-unknown-linux-musl
# sccache_azure_key_prefix: sccache/cxx-ubuntu-24.04-x86_64
# - name: macOS
# os: macos-14
# config_file: test/config.json.github-ci-macos
# extra_cflags: '-I/opt/homebrew/opt/openssl@3/include -fcolor-diagnostics'
# sccache_arch_and_os: aarch64-apple-darwin
# sccache_azure_key_prefix: sccache/cxx-macos-14-arm
# runs-on: ${{ matrix.os }}
# env:
# EXTRA_CFLAGS: ${{ matrix.extra_cflags }}
# EXTRA_CXXFLAGS: ${{ matrix.extra_cflags }}
# SCCACHE_AZURE_BLOB_CONTAINER: ${{ vars.SCCACHE_AZURE_BLOB_CONTAINER }}
# SCCACHE_AZURE_KEY_PREFIX: ${{ matrix.sccache_azure_key_prefix }}
# steps:
# - uses: actions/checkout@v4
# with:
# submodules: true
# - uses: ruby/setup-ruby@v1
# with:
# ruby-version: ${{ env.DEFAULT_RUBY_VERSION }}
# bundler-cache: true
# - name: Setup bundle gem path
# run: ./dev/ci/setup-bundle-gem-path
# - name: Setup sccache
# run: ./dev/ci/setup-sccache
# timeout-minutes: 1
# env:
# ARCH_AND_OS: ${{ matrix.sccache_arch_and_os }}
# SCCACHE_AZURE_CONNECTION_STRING: ${{ secrets.AZURE_CI_STORAGE_CONNECTION_STRING }}
# - name: Setup misc
# run: |
# sudo chmod 755 "$HOME"
# sed "s|_USER_|$(whoami)|" ${{ matrix.config_file }} > test/config.json
# - name: Setup Linux dependencies
# run: >
# sudo apt update &&
# sudo apt install -y libcurl4-openssl-dev
# if: matrix.name == 'Linux'
# - name: Compile
# run: bundle exec drake -j4 agent
# - name: Test
# run: bundle exec rake test:ruby
# - name: Teardown sccache
# run: ./dev/ci/teardown-sccache
# if: '!cancelled()'
# nodejs:
# name: "Node.js tests on ${{ matrix.name }}"
# strategy:
# fail-fast: false
# matrix:
# include:
# - name: Linux
# os: ubuntu-24.04
# - name: macOS
# os: macos-14
# runs-on: ${{ matrix.os }}
# steps:
# - uses: actions/checkout@v4
# with:
# submodules: true
# - uses: ruby/setup-ruby@v1
# with:
# ruby-version: ${{ env.DEFAULT_RUBY_VERSION }}
# bundler-cache: true
# - uses: actions/setup-node@v4
# with:
# node-version: 18
# cache: npm
# - name: Setup bundle gem path
# run: ./dev/ci/setup-bundle-gem-path
# - run: npm ci
# - name: Test
# run: bundle exec rake test:node
# homebrew_packaging:
# name: Homebrew packaging tests
# runs-on: macos-14
# steps:
# - uses: actions/checkout@v4
# with:
# submodules: true
# - uses: ruby/setup-ruby@v1
# with:
# ruby-version: ${{ env.DEFAULT_RUBY_VERSION }}
# bundler-cache: true
# - name: Setup bundle gem path
# run: ./dev/ci/setup-bundle-gem-path
# - name: Create tarball
# run: bundle exec rake package:set_official package:tarball
# - name: Check whether formula is up-to-date
# run: >
# ./packaging/homebrew/verify-oss-formula-uptodate
# -c homebrew-core.git
# -r upstream
# - name: Modify formula
# run: >
# ./packaging/homebrew/modify-formula
# --passenger-dir .
# --formula packaging/homebrew/Formula/passenger.rb
# --tarball pkg/*.tar.gz
# --output pkg/passenger.rb
# - name: Test formula
# run: >
# ./packaging/homebrew/test-formula
# -p .
# -f pkg/passenger.rb
# -t pkg/*.tar.gz
# source_packaging:
# name: Source packaging tests
# runs-on: ubuntu-24.04
# steps:
# - uses: actions/checkout@v4
# with:
# submodules: true
# - uses: ruby/setup-ruby@v1
# with:
# ruby-version: ${{ env.DEFAULT_RUBY_VERSION }}
# bundler-cache: true
# - name: Setup bundle gem path
# run: ./dev/ci/setup-bundle-gem-path
# - name: Test
# run: bundle exec rake test:source_packaging