Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
253 changes: 0 additions & 253 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -92,256 +92,3 @@ jobs:
name: ${{ matrix.tag }}-intgcheck-valgrind
path: |
./sssd/ci-build-debug/*.valgrind.log

system:
if: github.event_name == 'push' || !contains(github.event.pull_request.labels.*.name, 'Accepted')
needs: [prepare]
strategy:
fail-fast: false
matrix:
tag: ${{ fromJson(needs.prepare.outputs.matrix).multihost }}
runs-on: ubuntu-26.04
permissions:
contents: read
steps:
- uses: actions/setup-python@v7
with:
python-version: '3.x'

- name: Checkout sssd repository
uses: actions/checkout@v7
with:
path: sssd

- name: Install and load kernel module for passkey testing
shell: bash
run: |
set -ex -o pipefail

sudo apt-get update
sudo apt-get install -y linux-modules-$(uname -r)

sudo modprobe vhci-hcd

- name: Setup containers
uses: SSSD/sssd-ci-containers/actions/setup@master
with:
path: sssd-ci-containers
tag: ${{ matrix.tag }}
override: |
services:
client:
image: ${REGISTRY}/ci-client-devel:${TAG}
shm_size: 4G
tmpfs:
- /dev/shm
volumes:
- ../sssd:/sssd:rw
ipa:
image: ${REGISTRY}/ci-ipa-devel:${TAG}
shm_size: 4G
tmpfs:
- /dev/shm
volumes:
- ../sssd:/sssd:rw

- name: Build SSSD on the client and IPA
uses: SSSD/sssd-ci-containers/actions/exec@master
with:
log-file: build.log
working-directory: /sssd
where: |
client
ipa
script: |
#!/bin/bash
set -ex

./contrib/ci/run --deps-only
autoreconf -if

mkdir -p /dev/shm/sssd
pushd /dev/shm/sssd
/sssd/configure --enable-silent-rules
make rpms

- name: Install SSSD on the client and IPA
uses: SSSD/sssd-ci-containers/actions/exec@master
with:
log-file: install.log
user: root
where: |
client
ipa
script: |
#!/bin/bash
set -ex

# Avoid error 'Lower version of database is expected!' for locally built installed rpms
systemctl stop sssd
rm -f /var/lib/sss/db/*

dnf install -y /dev/shm/sssd/rpmbuild/RPMS/*/*.rpm
rm -fr /dev/shm/sssd

# We need to reenable sssd-kcm since it was disabled by removing sssd not not enabled again
systemctl enable --now sssd-kcm.socket

- name: Restart SSSD on IPA server
uses: SSSD/sssd-ci-containers/actions/exec@master
with:
user: root
where: ipa
script: |
#!/bin/bash
set -ex

systemctl restart sssd || systemctl status sssd

- name: Patch the SSH configuration
uses: SSSD/sssd-ci-containers/actions/exec@master
with:
user: root
script: |
#!/bin/bash
test -x /usr/bin/sss_ssh_knownhosts && \
sed -e 's/GlobalKnownHostsFile/#GlobalKnownHostsFile/' \
-e 's/ProxyCommand \/usr\/bin\/sss_ssh_knownhostsproxy -p %p %h/KnownHostsCommand \/usr\/bin\/sss_ssh_knownhosts %H/' \
-i /etc/ssh/ssh_config.d/04-ipa.conf

- name: Install system tests dependencies
shell: bash
working-directory: ./sssd/src/tests/system
run: |
set -ex

sudo apt-get update

# Install dependencies for python-ldap
sudo apt-get install -y libsasl2-dev python3-dev libldap2-dev libssl-dev libssh-dev

# Virtualenv
pip3 install virtualenv
python3 -m venv .venv
source .venv/bin/activate

# Install system tests requirements
pip3 install -r ./requirements.txt

# Install yq to parse yaml files
sudo wget -qO /usr/local/bin/yq https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64
sudo chmod a+x /usr/local/bin/yq

- name: Remove ad from mhc.yaml
shell: bash
working-directory: ./sssd/src/tests/system
run: |
yq -i 'del(.domains[0].hosts.[] | select(.role == "ad"))' mhc.yaml

- name: Get changed tests
shell: bash {0}
env:
PR_ID: ${{ github.event.pull_request.number }}
GH_TOKEN: ${{ github.token }}
working-directory: sssd
id: select-tests
run: |
set -e

# Check if non-test files were changed or not run inside PR
FILES=`gh pr diff "$PR_ID" --name-only 2>&1 || exit 0`

if echo "$FILES" | grep 'no pull requests found'; then
echo "Script not running against PR event. Will run all tests."
echo "SELECT_TESTS=" >> "$GITHUB_OUTPUT"
exit 0
elif echo "$FILES" | grep -v 'src/tests/system/tests'; then
echo "Non-test files were changed. Will run all tests."
echo "SELECT_TESTS=" >> "$GITHUB_OUTPUT"
exit 0
fi

DIFF=`gh pr diff "$PR_ID"`

# Find if any non-test function was modified, in that case we need to
# run all tests as we do not know where the function is used
if echo "$DIFF" | grep -P '^(@@.+|\+|-)\s*def (?!test_)'; then
echo "Non-test function was modified. Will run all tests."
echo "SELECT_TESTS=" >> "$GITHUB_OUTPUT"
exit 0
fi

# Find all tests that were added
ADDED=`echo "$DIFF" | grep -P "^\+\s*def test_" | sed -E 's/.+def (test_[^(]+).+/\1/'`

# Find all tests that are used as tokens in diff
MODIFIED=`echo "$DIFF" | grep -E "^@@.+def test_" | sed -E 's/.+def (test_[^(]+).+/\1/'`

# Combine and sort
TESTS=`echo -e "$ADDED\n$MODIFIED" | sort | uniq`

echo "Following tests were added or modified (or token is present in diff):"
echo "$TESTS"

ARGS=""
if [ ! -z "$TESTS" ]; then
FILTER=`echo "$TESTS" | xargs | sed 's/ / or /g'`
ARGS="-k \"$FILTER\""
fi

echo "SELECT_TESTS=$ARGS" >> "$GITHUB_OUTPUT"

echo "Set SELECT_TESTS as GitHub Output:"
grep SELECT_TESTS "$GITHUB_OUTPUT"

- name: Check polarion metadata
shell: bash
working-directory: ./sssd/src/tests/system
run: |
# Run pytest in collect only mode to quickly catch issues in Polarion metadata.
set -ex -o pipefail

mkdir -p $GITHUB_WORKSPACE/artifacts
source .venv/bin/activate
pytest \
--color=yes \
--mh-config=./mhc.yaml \
--mh-artifacts-dir=$GITHUB_WORKSPACE/artifacts \
--polarion-config=../polarion.yaml \
--output-polarion-testcase=$GITHUB_WORKSPACE/artifacts/testcase.xml \
${{ steps.select-tests.outputs.SELECT_TESTS }} \
--collect-only . |& tee $GITHUB_WORKSPACE/pytest-collect.log

- name: Run tests
shell: bash
working-directory: ./sssd/src/tests/system
run: |
set -ex -o pipefail

mkdir -p $GITHUB_WORKSPACE/artifacts
source .venv/bin/activate
pytest \
--durations=0 \
--color=yes \
--show-capture=no \
--mh-config=./mhc.yaml \
--mh-artifacts-dir=$GITHUB_WORKSPACE/artifacts \
--polarion-config=../polarion.yaml \
--output-polarion-testcase=$GITHUB_WORKSPACE/artifacts/testcase.xml \
--output-polarion-testrun=$GITHUB_WORKSPACE/artifacts/testrun.xml \
${{ steps.select-tests.outputs.SELECT_TESTS }} \
-vvv . |& tee $GITHUB_WORKSPACE/pytest.log

- name: Upload artifacts
if: always()
uses: actions/upload-artifact@v7
with:
if-no-files-found: ignore
name: ${{ matrix.tag }}-system
path: |
sssd/ci-install-deps.log
artifacts
build.log
install.log
pytest.log
pytest-collect.log
28 changes: 20 additions & 8 deletions .packit.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -32,27 +32,39 @@ jobs:
trigger: commit
packages:
- upstream
targets:
targets: &copr_targets
- fedora-all
- centos-stream-10
sync_test_job_statuses_with_builds: False

# Produce COPR build on each pull request
- job: copr_build
trigger: pull_request
packages:
- upstream
targets:
- fedora-all
- centos-stream-10
targets: *copr_targets
sync_test_job_statuses_with_builds: False

# Run TMT tests after COPR builds complete, always on a Fedora-latest
# Testing Farm guest regardless of which target the build was for.
- job: tests
trigger: commit
packages:
- upstream
targets: *copr_targets
skip_install: True
tf_extra_params: &tests_tf_extra_params
environments:
- os:
compose: Fedora-latest

# Run TMT tests after COPR builds complete
- job: tests
trigger: pull_request
packages:
- upstream
targets:
- fedora-all
- centos-stream-10
skip_install: True
targets: *copr_targets
tf_extra_params: *tests_tf_extra_params

# Create Fedora pull request on release
- job: propose_downstream
Expand Down
Loading
Loading