Skip to content

CI: add kdevops actions from 2025-04-17 #3

CI: add kdevops actions from 2025-04-17

CI: add kdevops actions from 2025-04-17 #3

# SPDX-License-Identifier: GPL-2.0 OR copyleft-next-0.3.1
#
# Run kdevops filesystem testing.
name: Run fstests
# ----------------------------
# Supporting manual dispatches
# ----------------------------
#
# We want to enable the option for users to manuall customize their tests.
# This is supported in github through the "workflow_dispatch". In order to
# allow for that a repository must have a .github/workflows/*.yml with a
# workflow_dispatch the "Default branch" of the target kernel repository.
# Typically this is "master" or "main", you whatever it is, you need that
# brancht to have the github the .github/workflows/ with workflow_dispatch
# enabled as below.
#
# --------------------------
# Supporting auto-push tests
# --------------------------
#
# By default we disable the push option for the default branch, because this
# can trigger tests to run for all profiles. If the filesystem you want to test
# has 20 profiles then that means using 20 guests for a single push. It is
# best to then leave the discretion of *what* you want to test down to the
# user using the CI interface through the manual dispatch:
#
# https://github.com/linux-kdevops/kdevops/blob/main/docs/kernel-ci/linux-filesystems-kdevops-CI-testing.md
#
# If you want to enable automatic tests for all profiles for your filesystem
# though you can just remove the comments for push below, just be mindful of
# the resources you will use for all your pushes.
#
# We enable auto-push by default on ext4 as the number of profiles are small
# and the use case to test all profiles is more valuable than not.
#
on:
push:
branches:
- '**'
pull_request:
branches:
- '**'
workflow_dispatch: # Add this for manual triggering of the workflow
inputs:
defconfig:
description: "Select defconfig"
required: false
default: "all profiles"
type: choice
options:
- "all profiles"
- "ext4_1k"
- "ext4_2k"
- "ext4_4k"
- "ext4_bigalloc16k_4k"
- "ext4_bigalloc32k_4k"
- "ext4_bigalloc64k_4k"
- "ext4_bigalloc1024k_4k"
- "ext4_advanced_features"
soak:
description: "Select soak duration"
required: false
default: "No soak"
type: choice
options:
- "No soak"
- "Low - 30 minutes"
- "Mid - 1 hour"
- "High - 2.5 hours"
- "Pathological - 48 hours"
group:
description: "Which test group to use"
required: false
default: "auto"
type: choice
options:
- "auto"
- "all"
- "quick"
tests:
description: "Select additional test coverage"
required: false
default: "all"
type: choice
options:
- "all"
- "custom"
- "generic/001"
- "generic/002"
- "generic/003"
- "generic/004"
- "generic/005"
- "generic/006"
- "generic/007"
- "generic/008"
- "generic/009"
- "generic/010"
- "generic/011"
- "generic/012"
- "generic/013"
- "generic/014"
- "generic/015"
- "generic/016"
- "generic/017"
- "generic/018"
- "generic/019"
- "generic/020"
- "generic/021"
- "generic/022"
- "generic/023"
- "generic/024"
- "generic/025"
- "generic/026"
- "generic/027"
- "generic/028"
- "generic/029"
- "generic/030"
- "generic/031"
- "generic/032"
- "generic/033"
- "generic/034"
- "generic/035"
- "generic/036"
- "generic/037"
- "generic/038"
- "generic/039"
- "generic/040"
- "generic/041"
- "generic/042"
- "generic/043"
- "generic/044"
- "generic/045"
- "generic/046"
- "generic/047"
- "generic/048"
- "generic/049"
- "generic/050"
- "generic/051"
- "generic/052"
- "generic/053"
- "generic/054"
- "generic/055"
- "generic/056"
- "generic/057"
- "generic/058"
- "generic/059"
- "generic/060"
- "generic/061"
- "generic/062"
- "generic/063"
- "generic/064"
- "generic/065"
- "generic/066"
- "generic/067"
- "generic/068"
- "generic/069"
- "generic/070"
- "generic/071"
- "generic/072"
- "generic/073"
- "generic/074"
- "generic/075"
- "generic/076"
- "generic/077"
- "generic/078"
- "generic/079"
- "generic/080"
- "generic/081"
- "generic/082"
- "generic/083"
- "generic/084"
- "generic/085"
- "generic/086"
- "generic/087"
- "generic/088"
- "generic/089"
- "generic/090"
- "generic/091"
- "generic/092"
- "generic/093"
- "generic/094"
- "generic/095"
- "generic/096"
- "generic/097"
- "generic/098"
- "generic/099"
- "generic/100"
- "generic/101"
- "generic/102"
- "generic/103"
- "generic/104"
- "generic/105"
- "generic/106"
- "generic/107"
- "generic/108"
- "generic/109"
- "generic/110"
- "generic/111"
- "generic/112"
- "generic/113"
- "generic/114"
- "generic/115"
- "generic/116"
- "generic/117"
- "generic/118"
- "generic/119"
- "generic/120"
- "generic/121"
- "generic/122"
- "generic/123"
- "generic/124"
- "generic/125"
- "generic/126"
- "generic/127"
- "generic/128"
- "generic/129"
- "generic/130"
- "generic/131"
- "generic/132"
- "generic/133"
- "generic/134"
- "generic/135"
- "generic/136"
- "generic/137"
- "generic/138"
- "generic/139"
- "generic/140"
- "generic/141"
- "generic/142"
- "generic/143"
- "generic/144"
- "generic/145"
- "generic/146"
- "generic/147"
- "generic/148"
- "generic/149"
- "generic/150"
- "generic/151"
- "generic/152"
- "generic/153"
- "generic/154"
- "generic/155"
- "generic/156"
- "generic/157"
- "generic/158"
- "generic/159"
- "generic/160"
- "generic/161"
- "generic/162"
- "generic/163"
- "generic/164"
- "generic/165"
- "generic/166"
- "generic/167"
- "generic/168"
- "generic/169"
- "generic/170"
- "generic/171"
- "generic/172"
- "generic/173"
- "generic/174"
- "generic/175"
- "generic/176"
- "generic/177"
- "generic/178"
- "generic/179"
- "generic/180"
- "generic/181"
- "generic/182"
- "generic/183"
- "generic/184"
- "generic/185"
- "generic/186"
- "generic/187"
- "generic/188"
- "generic/189"
- "generic/190"
- "generic/191"
- "generic/192"
- "generic/193"
- "generic/194"
- "generic/195"
- "generic/196"
- "generic/197"
- "generic/198"
- "generic/199"
- "generic/200"
- "generic/201"
- "generic/202"
- "generic/203"
- "generic/204"
- "generic/205"
- "generic/206"
- "generic/207"
- "generic/208"
- "generic/209"
- "generic/210"
- "generic/211"
- "generic/212"
- "generic/213"
- "generic/214"
- "generic/215"
- "generic/216"
- "generic/217"
- "generic/218"
- "generic/219"
- "generic/220"
- "generic/221"
- "generic/222"
- "generic/223"
- "generic/224"
- "generic/225"
- "generic/226"
- "generic/227"
- "generic/228"
- "generic/229"
- "generic/230"
- "generic/231"
- "generic/232"
- "generic/233"
- "generic/234"
- "generic/235"
- "generic/236"
- "generic/237"
- "generic/238"
- "generic/239"
- "generic/240"
- "generic/241"
- "generic/242"
- "generic/243"
- "generic/244"
- "generic/245"
- "generic/246"
- "generic/247"
- "generic/248"
- "generic/249"
- "generic/250"
- "generic/251"
- "generic/252"
- "generic/253"
- "generic/254"
- "generic/255"
- "generic/256"
- "generic/257"
- "generic/258"
- "generic/259"
- "generic/260"
- "generic/261"
- "generic/262"
- "generic/263"
- "generic/264"
- "generic/265"
- "generic/266"
- "generic/267"
- "generic/268"
- "generic/269"
- "generic/270"
- "generic/271"
- "generic/272"
- "generic/273"
- "generic/274"
- "generic/275"
- "generic/276"
- "generic/277"
- "generic/278"
- "generic/279"
- "generic/280"
- "generic/281"
- "generic/282"
- "generic/283"
- "generic/284"
- "generic/285"
- "generic/286"
- "generic/287"
- "generic/288"
- "generic/289"
- "generic/290"
- "generic/291"
- "generic/292"
- "generic/293"
- "generic/294"
- "generic/295"
- "generic/296"
- "generic/297"
- "generic/298"
- "generic/299"
- "generic/300"
- "generic/301"
- "generic/302"
- "generic/303"
- "generic/304"
- "generic/305"
- "generic/306"
- "generic/307"
- "generic/308"
- "generic/309"
- "generic/310"
- "generic/311"
- "generic/312"
- "generic/313"
- "generic/314"
- "generic/315"
- "generic/316"
- "generic/317"
- "generic/318"
- "generic/319"
- "generic/320"
- "generic/321"
- "generic/322"
- "generic/323"
- "generic/324"
- "generic/325"
- "generic/326"
- "generic/327"
- "generic/328"
- "generic/329"
- "generic/330"
- "generic/331"
- "generic/332"
- "generic/333"
- "generic/334"
- "generic/335"
- "generic/336"
- "generic/337"
- "generic/338"
- "generic/339"
- "generic/340"
- "generic/341"
- "generic/342"
- "generic/343"
- "generic/344"
- "generic/345"
- "generic/346"
- "generic/347"
- "generic/348"
- "generic/349"
- "generic/350"
- "generic/351"
- "generic/352"
- "generic/353"
- "generic/354"
- "generic/355"
- "generic/356"
- "generic/357"
- "generic/358"
- "generic/359"
- "generic/360"
- "generic/361"
- "generic/362"
- "generic/363"
- "generic/364"
- "generic/371"
- "generic/372"
- "generic/373"
- "generic/374"
- "generic/375"
- "generic/376"
- "generic/377"
- "generic/378"
- "generic/379"
- "generic/380"
- "generic/381"
- "generic/382"
- "generic/383"
- "generic/384"
- "generic/385"
- "generic/386"
- "generic/387"
- "generic/388"
- "generic/389"
- "generic/390"
- "generic/391"
- "generic/392"
- "generic/393"
- "generic/394"
- "generic/395"
- "generic/396"
- "generic/397"
- "generic/398"
- "generic/399"
- "generic/400"
- "generic/401"
- "generic/402"
- "generic/403"
- "generic/404"
- "generic/405"
- "generic/406"
- "generic/407"
- "generic/408"
- "generic/409"
- "generic/410"
- "generic/411"
- "generic/412"
- "generic/413"
- "generic/414"
- "generic/415"
- "generic/416"
- "generic/417"
- "generic/418"
- "generic/419"
- "generic/420"
- "generic/421"
- "generic/422"
- "generic/423"
- "generic/424"
- "generic/425"
- "generic/426"
- "generic/427"
- "generic/428"
- "generic/429"
- "generic/430"
- "generic/431"
- "generic/432"
- "generic/433"
- "generic/434"
- "generic/435"
- "generic/436"
- "generic/437"
- "generic/438"
- "generic/439"
- "generic/440"
- "generic/441"
- "generic/442"
- "generic/443"
- "generic/444"
- "generic/445"
- "generic/446"
- "generic/447"
- "generic/448"
- "generic/449"
- "generic/450"
- "generic/451"
- "generic/452"
- "generic/453"
- "generic/454"
- "generic/455"
- "generic/456"
- "generic/457"
- "generic/458"
- "generic/459"
- "generic/460"
- "generic/461"
- "generic/462"
- "generic/463"
- "generic/464"
- "generic/465"
- "generic/466"
- "generic/467"
- "generic/468"
- "generic/469"
- "generic/470"
- "generic/471"
- "generic/472"
- "generic/473"
- "generic/474"
- "generic/475"
- "generic/476"
- "generic/477"
- "generic/478"
- "generic/479"
- "generic/480"
- "generic/481"
- "generic/482"
- "generic/483"
- "generic/484"
- "generic/485"
- "generic/486"
- "generic/487"
- "generic/488"
- "generic/489"
- "generic/490"
- "generic/491"
- "generic/492"
- "generic/493"
- "generic/494"
- "generic/495"
- "generic/496"
- "generic/497"
- "generic/498"
- "generic/499"
- "generic/500"
- "generic/501"
- "generic/502"
- "generic/503"
- "generic/504"
- "generic/505"
- "generic/506"
- "generic/507"
- "generic/508"
- "generic/509"
- "generic/510"
- "generic/511"
- "generic/512"
- "generic/513"
- "generic/514"
- "generic/515"
- "generic/516"
- "generic/517"
- "generic/518"
- "generic/519"
- "generic/520"
- "generic/521"
- "generic/522"
- "generic/523"
- "generic/524"
- "generic/525"
- "generic/526"
- "generic/527"
- "generic/528"
- "generic/529"
- "generic/530"
- "generic/531"
- "generic/532"
- "generic/533"
- "generic/534"
- "generic/535"
- "generic/536"
- "generic/537"
- "generic/538"
- "generic/539"
- "generic/540"
- "generic/541"
- "generic/542"
- "generic/543"
- "generic/544"
- "generic/545"
- "generic/546"
- "generic/547"
- "generic/548"
- "generic/549"
- "generic/550"
- "generic/551"
- "generic/552"
- "generic/553"
- "generic/554"
- "generic/555"
- "generic/556"
- "generic/557"
- "generic/558"
- "generic/559"
- "generic/560"
- "generic/561"
- "generic/562"
- "generic/563"
- "generic/564"
- "generic/565"
- "generic/566"
- "generic/567"
- "generic/568"
- "generic/569"
- "generic/570"
- "generic/571"
- "generic/572"
- "generic/573"
- "generic/574"
- "generic/575"
- "generic/576"
- "generic/577"
- "generic/578"
- "generic/579"
- "generic/580"
- "generic/581"
- "generic/582"
- "generic/583"
- "generic/584"
- "generic/585"
- "generic/586"
- "generic/587"
- "generic/588"
- "generic/589"
- "generic/590"
- "generic/591"
- "generic/592"
- "generic/593"
- "generic/594"
- "generic/595"
- "generic/596"
- "generic/597"
- "generic/598"
- "generic/599"
- "generic/600"
- "generic/601"
- "generic/602"
- "generic/603"
- "generic/604"
- "generic/605"
- "generic/606"
- "generic/607"
- "generic/608"
- "generic/609"
- "generic/610"
- "generic/611"
- "generic/612"
- "generic/613"
- "generic/614"
- "generic/615"
- "generic/616"
- "generic/617"
- "generic/618"
- "generic/619"
- "generic/620"
- "generic/621"
- "generic/622"
- "generic/623"
- "generic/624"
- "generic/625"
- "generic/626"
- "generic/627"
- "generic/628"
- "generic/629"
- "generic/630"
- "generic/631"
- "generic/632"
- "generic/633"
- "generic/634"
- "generic/635"
- "generic/636"
- "generic/637"
- "generic/638"
- "generic/639"
- "generic/640"
- "generic/641"
- "generic/642"
- "generic/643"
- "generic/644"
- "generic/645"
- "generic/646"
- "generic/647"
- "generic/648"
- "generic/649"
- "generic/650"
- "generic/651"
- "generic/652"
- "generic/653"
- "generic/654"
- "generic/655"
- "generic/656"
- "generic/657"
- "generic/658"
- "generic/659"
- "generic/660"
- "generic/661"
- "generic/662"
- "generic/663"
- "generic/664"
- "generic/665"
- "generic/666"
- "generic/667"
- "generic/668"
- "generic/669"
- "generic/670"
- "generic/671"
- "generic/672"
- "generic/673"
- "generic/674"
- "generic/675"
- "generic/676"
- "generic/677"
- "generic/678"
- "generic/679"
- "generic/680"
- "generic/681"
- "generic/682"
- "generic/683"
- "generic/684"
- "generic/685"
- "generic/686"
- "generic/687"
- "generic/688"
- "generic/689"
- "generic/690"
- "generic/691"
- "generic/692"
- "generic/693"
- "generic/694"
- "generic/695"
- "generic/696"
- "generic/697"
- "generic/698"
- "generic/699"
- "generic/700"
- "generic/701"
- "generic/702"
- "generic/703"
- "generic/704"
- "generic/705"
- "generic/706"
- "generic/707"
- "generic/708"
- "generic/709"
- "generic/710"
- "generic/711"
- "generic/712"
- "generic/713"
- "generic/714"
- "generic/715"
- "generic/716"
- "generic/717"
- "generic/718"
- "generic/719"
- "generic/720"
- "generic/721"
- "generic/722"
- "generic/723"
- "generic/724"
- "generic/725"
- "generic/726"
- "generic/727"
- "generic/728"
- "generic/729"
- "generic/730"
- "generic/731"
- "generic/732"
- "generic/733"
- "generic/734"
- "generic/735"
- "generic/736"
- "generic/737"
- "generic/738"
- "generic/739"
- "generic/740"
- "generic/741"
- "generic/742"
- "generic/743"
- "generic/744"
- "generic/745"
- "generic/746"
- "generic/747"
- "generic/748"
- "generic/749"
- "generic/750"
- "generic/751"
- "generic/752"
- "generic/753"
- "generic/754"
- "generic/755"
- "generic/756"
- "perf/001"
- "ext4/002"
- "ext4/003"
- "ext4/004"
- "ext4/005"
- "ext4/006"
- "ext4/007"
- "ext4/008"
- "ext4/009"
- "ext4/010"
- "ext4/011"
- "ext4/012"
- "ext4/013"
- "ext4/014"
- "ext4/015"
- "ext4/016"
- "ext4/017"
- "ext4/018"
- "ext4/019"
- "ext4/020"
- "ext4/021"
- "ext4/022"
- "ext4/023"
- "ext4/024"
- "ext4/025"
- "ext4/026"
- "ext4/027"
- "ext4/028"
- "ext4/029"
- "ext4/030"
- "ext4/031"
- "ext4/032"
- "ext4/033"
- "ext4/034"
- "ext4/035"
- "ext4/036"
- "ext4/037"
- "ext4/038"
- "ext4/039"
- "ext4/040"
- "ext4/041"
- "ext4/042"
- "ext4/043"
- "ext4/044"
- "ext4/045"
- "ext4/046"
- "ext4/047"
- "ext4/048"
- "ext4/049"
- "ext4/050"
- "ext4/051"
- "ext4/052"
- "ext4/053"
- "ext4/054"
- "ext4/055"
- "ext4/056"
- "ext4/057"
- "ext4/058"
- "ext4/059"
- "ext4/060"
- "ext4/271"
- "ext4/301"
- "ext4/302"
- "ext4/303"
- "ext4/304"
- "ext4/305"
- "ext4/306"
- "ext4/307"
- "ext4/308"
custom_tests:
description: "Enter custom test(s) (space or comma-separated: 'test1 test2' or 'test1,test2')"
required: false
type: string
default: ""
timeout_minutes:
description: "Timeout in minutes"
required: true
default: 43200 # 1 month
type: choice
options:
- 1440 # 1 day
- 2880 # 2 days
- 4320 # 3 days
- 5760 # 4 days
- 7200 # 5 days
jobs:
fstests_input_validation:
name: Process input parameters for fstests
runs-on: [self-hosted, Linux, X64]
timeout-minutes: ${{ fromJson(github.event.inputs.timeout_minutes || '7200') }}
outputs:
kdevops_test_timeout: ${{ steps.set_timeout.outputs.kdevops_test_timeout }}
group: ${{ steps.process_group.outputs.group }}
selected_tests: ${{ steps.process_tests.outputs.tests }}
kdevops_defconfig: ${{ steps.process_defconfig.outputs.defconfig }}
soak: ${{ steps.process_soak.outputs.soak }}
steps:
- name: Process timeout
id: set_timeout
run: |
MAX_TIMEOUT_ALLOWED_GITHUB_SELF_HOSTED="7200"
TIMEOUT="$MAX_TIMEOUT_ALLOWED_GITHUB_SELF_HOSTED"
# Note: Using curly braces for arithmetic comparison
REQUESTED_TIMEOUT="${{ fromJson((github.event.inputs && github.event.inputs.timeout_minutes) || '7200') }}"
if [[ -n "$REQUESTED_TIMEOUT" ]]; then
if [[ ${REQUESTED_TIMEOUT} -gt ${MAX_TIMEOUT_ALLOWED_GITHUB_SELF_HOSTED} ]]; then
echo "Requested timeout not allowed for github self-hosted runners."
echo "The max allowed today is $MAX_TIMEOUT_ALLOWED_GITHUB_SELF_HOSTED minutes, see:"
echo ""
echo "https://github.blog/changelog/2024-04-04-actions-jobs-executing-on-self-hosted-runners-will-now-timeout-in-5-days/"
echo ""
echo "We will use the max value"
else
TIMEOUT=$REQUESTED_TIMEOUT
fi
fi
echo "Setting timeout to $TIMEOUT minutes"
echo "kdevops_test_timeout=$TIMEOUT" >> $GITHUB_OUTPUT
- name: Process group selection
id: process_group
run: |
if [[ "${{ github.event.inputs.group }}" == "auto" ]] || [[ "${{ github.event.inputs.group }}" == "" ]]; then
echo "Default group: auto"
echo "group=auto" >> $GITHUB_OUTPUT
else
echo "group=${{ github.event.inputs.group }}" >> $GITHUB_OUTPUT
echo "Custom group selected: ${{ github.event.inputs.group }}"
fi
- name: Process test selection
id: process_tests
run: |
if [[ "${{ github.event.inputs.tests }}" == "custom" ]]; then
if [[ -n "${{ github.event.inputs.custom_tests }}" ]]; then
# Replace commas with spaces and collapse multiple spaces into single spaces
TESTS=$(echo "${{ github.event.inputs.custom_tests }}" | tr ',' ' ' | tr -s ' ')
# Trim leading and trailing whitespace
TESTS=$(echo "$TESTS" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')
echo "tests=$TESTS" >> $GITHUB_OUTPUT
echo "Custom tests selected: $TESTS"
else
echo "No custom tests provided, falling back to all"
echo "tests=all" >> $GITHUB_OUTPUT
fi
elif [[ "${{ github.event.inputs.tests }}" == "" ||
"${{ github.event.inputs.tests }}" == "all" ]]; then
echo "Automated test so no specific test requested"
echo "tests=all" >> $GITHUB_OUTPUT
else
echo "Custom test: ${{ github.event.inputs.tests }}"
echo "tests=${{ github.event.inputs.tests }}" >> $GITHUB_OUTPUT
fi
- name: Process defconfig
id: process_defconfig
run: |
KDEVOPS_DEFCONFIG=$(basename ${{ github.repository }})
if [[ "${{ github.event.inputs.defconfig }}" == "all profiles" ]] || [[ "${{ github.event.inputs.defconfig }}" == "" ]]; then
KDEVOPS_DEFCONFIG=$(basename ${{ github.repository }})
else
KDEVOPS_DEFCONFIG="${{ github.event.inputs.defconfig }}"
fi
echo "defconfig=$KDEVOPS_DEFCONFIG" >> $GITHUB_OUTPUT
- name: Process soak
id: process_soak
run: |
if [[ "${{ github.event.inputs.soak }}" == "No soak" ]] || [[ "${{ github.event.inputs.soak }}" == "" ]]; then
echo "Using default soak, that is, we don't soak"
echo "soak=nosoak" >> $GITHUB_OUTPUT
elif [[ "${{ github.event.inputs.soak }}" == "Low - 30 minutes" ]]; then
echo "soak=1800" >> $GITHUB_OUTPUT
elif [[ "${{ github.event.inputs.soak }}" == "Mid - 1 hour" ]]; then
echo "soak=3600" >> $GITHUB_OUTPUT
elif [[ "${{ github.event.inputs.soak }}" == "High - 2.5 hours" ]]; then
echo "soak=9900" >> $GITHUB_OUTPUT
elif [[ "${{ github.event.inputs.soak }}" == "Pathological - 48 hours" ]]; then
echo "soak=172800" >> $GITHUB_OUTPUT
else
echo "This custom soak option not supported: ${{ github.event.inputs.soak }}"
exit 1
fi
initialize_kdevops:
needs: fstests_input_validation
name: Initialize kdevops environment
uses: ./.github/workflows/kdevops-init.yml
with:
kdevops_defconfig: ${{ needs.fstests_input_validation.outputs.kdevops_defconfig }}
selected_tests: ${{ needs.fstests_input_validation.outputs.tests }}
soak: ${{ needs.fstests_input_validation.outputs.soak }}
group: ${{ needs.fstests_input_validation.outputs.group }}
secrets: inherit
run_kdevops_fstests:
needs: [fstests_input_validation, initialize_kdevops]
name: Run CI tests
runs-on: [self-hosted, Linux, X64]
timeout-minutes: 43200
steps:
- name: Run CI tests
run: |
cd kdevops
if [[ "${{ needs.fstests_input_validation.outputs.selected_tests }}" == "all" ]]; then
echo "Running all the tests ..."
nohup stdbuf -oL bash -c 'make ci-test' > ci.log 2>&1 &
else
echo "Running selective tests: ${{ needs.fstests_input_validation.outputs.selected_tests }}"
nohup stdbuf -oL bash -c 'make fstests-baseline TESTS="${{ needs.fstests_input_validation.outputs.selected_tests }}"' > ci.log 2>&1 &
fi
echo $! > ci.pid
CI_WATCHDOG="./scripts/workflows/fstests/fstests_watchdog.py hosts baseline"
while kill -0 $(cat ci.pid) 2> /dev/null; do
$CI_WATCHDOG || echo watchdog barfed
sleep 60
done
make fstests-show-results > ci.commit_extra
if ! grep -E "failures, [1-9]|errors, [1-9]" ci.commit_extra; then
echo "ok" > ci.result
fi
cleanup-kdevops:
needs: run_kdevops_fstests
if: always()
uses: ./.github/workflows/kdevops-cleanup.yml
secrets: inherit