Skip to content

Updating test matrix (#363) #639

Updating test matrix (#363)

Updating test matrix (#363) #639

Workflow file for this run

name: Confirm tests run successfully
on:
push:
branches:
- main
pull_request:
jobs:
build:
name: Verify tests pass
runs-on: ubuntu-latest
timeout-minutes: 30
strategy:
fail-fast: false
matrix:
container_image:
- docker.io/library/alpine:latest
- docker.io/library/alpine:edge
- quay.io/centos/centos:stream9
- quay.io/centos/centos:stream10-development
- registry.fedoraproject.org/fedora:39
- registry.fedoraproject.org/fedora:40
- registry.fedoraproject.org/fedora:rawhide
- registry.access.redhat.com/ubi8
- registry.access.redhat.com/ubi9
dotnet_version:
- "6.0"
- "8.0"
exclude:
- container_image: registry.fedoraproject.org/fedora:rawhide
dotnet_version: "6.0"
- container_image: quay.io/centos/centos:stream10-development
dotnet_version: "6.0"
include:
- container_image: registry.fedoraproject.org/fedora:40
dotnet_version: "9.0"
- container_image: registry.fedoraproject.org/fedora:rawhide
dotnet_version: "9.0"
- container_image: quay.io/centos/centos:stream10-development
dotnet_version: "9.0"
container:
image: ${{ matrix.container_image }}
options: --security-opt seccomp=unconfined
steps:
- uses: actions/checkout@v4
- name: Install .NET ${{ matrix.dotnet_version }}
# .NET 9 is a preview and requires 'copr' for installation.
# .NET 9 introduced the 'dotnet-sdk-aot' package
# .NET 8 introduced the 'dbg' packages
# '/etc/os-release' will also match the grep fedora for Fedora derived systems, such as CentOS.
timeout-minutes: 10
run: |
set -euo pipefail
cat /etc/os-release
if [[ ${{ matrix.dotnet_version }} == 9.* ]]; then
dnf install 'dnf-command(copr)' -y
if grep centos /etc/os-release; then
dnf copr enable @dotnet-sig/dotnet-preview centos-stream-10-x86_64 -y
else
dnf copr enable @dotnet-sig/dotnet-preview -y
fi
dnf install -y dotnet-sdk-aot-${{ matrix.dotnet_version }}
fi
if grep fedora /etc/os-release; then
dnf install -y dotnet-sdk-${{ matrix.dotnet_version }}
if [[ ! ${{ matrix.dotnet_version }} == *6* ]]; then
dnf install -y \
dotnet-sdk-dbg-${{ matrix.dotnet_version }} \
dotnet-runtime-dbg-${{ matrix.dotnet_version }} \
aspnetcore-runtime-dbg-${{ matrix.dotnet_version }}
fi
elif grep alpine /etc/os-release; then
if grep edge /etc/os-release; then
echo "https://dl-cdn.alpinelinux.org/alpine/edge/testing" >> /etc/apk/repositories
fi
apk add dotnet-sdk-${{ matrix.dotnet_version }} dotnet-doc
if [[ ! ${{ matrix.dotnet_version }} == *6* ]]; then
apk add \
dotnet-sdk-dbg-${{ matrix.dotnet_version }} \
dotnet-runtime-dbg-${{ matrix.dotnet_version }} \
aspnetcore-runtime-dbg-${{ matrix.dotnet_version }}
fi
fi
- name: Install Test dependencies
timeout-minutes: 5
run: |
if grep fedora /etc/os-release ; then
dnf install -y python3 wget $(grep '^Dependencies(dnf): ' README.md | cut -d: -f2-) --skip-broken
elif grep alpine /etc/os-release; then
apk add python3 wget curl $(grep '^Dependencies(apk): ' README.md | cut -d: -f2-)
echo -e '[PostgreSQL]\nDescription=PostgreSQL Unicode\nDriver=/usr/lib/psqlodbcw.so\nUsageCount=1' > /etc/odbcinst.ini
fi
- name: Download test runner
run: |
set -euo pipefail
wget --no-verbose https://github.com/redhat-developer/dotnet-bunny/releases/latest/download/turkey.tar.gz
tar xf turkey.tar.gz
- name: Run tests
run: |
set -euo pipefail
### This is very questionable, but making our CI fail because distro
### .NET versions are out of date doesn't sound nice.
rm -rf release-version-sane
### HACK: Filter tests that can't pass in Containers
rm -rf debugging-sos-lldb* createdump-aspnet cgroup-limit
### HACK: RID parsing is broken on alpine:edge, so these tests fail
if [[ ${{ matrix.container_image }} == *'alpine:edge'* ]] ; then
rm -rf system-data-odbc
fi
### HACK: UBI 8 is missing bash-completion, postgres, and strace packages for tests
if [[ ${{ matrix.container_image }} == *ubi8* ]] ; then
rm -rf bash-completion system-data-odbc telemetry-is-off-by-default
fi
### HACK: UBI 9 is missing postsgres and strace package for tests
if [[ ${{ matrix.container_image }} == *ubi9* ]] ; then
rm -rf system-data-odbc telemetry-is-off-by-default
fi
dotnet turkey/Turkey.dll -v --timeout 600
- name: Show Logs
if: ${{ always() }}
run: |
set -euo pipefail
find -iname '*.log' -exec echo {} \; -exec cat {} \;