Skip to content

Commit 01221c7

Browse files
committed
github: simplify runner assignment to server-based tags
Follow up to the previous CI refactor by simplifying the complex workflow-specific runner matching. Use test_mode to directly assign runners to servers instead of pattern matching individual workflows. When using kdevops-ci mode, reduce the VM size to 2GB/2core so we have more server resources for testing more workloads. New test modes names are: kdevops-ci and linux-ci: kdevops-ci: Framework validation testing - Purpose: Validate that kdevops itself works correctly - Scope: Single lightweight test per workflow (1 VM, minimal resources) - Examples: blktests_nvme, xfs_reflink_4k, tmpfs_default - Use case: Push/PR triggers, quick validation, CI self-testing linux-ci: Comprehensive Linux kernel testing - Purpose: Full Linux kernel testing - Scope: Complete test suites with multiple VMs and extensive coverage - Examples: blktests (7 VMs), xfs (28 VMs), btrfs (19 VMs) - Use case: Scheduled runs, manual testing, thorough kernel validation Generated-by: Claude AI Signed-off-by: Daniel Gomez <[email protected]>
1 parent 3c443c2 commit 01221c7

File tree

5 files changed

+46
-13
lines changed

5 files changed

+46
-13
lines changed

.github/actions/setup/action.yml

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,10 @@ inputs:
2020
required: false
2121
type: string
2222
default: 'master'
23+
test_mode:
24+
required: false
25+
type: string
26+
default: 'linux-ci'
2327

2428
runs:
2529
using: "composite"
@@ -151,10 +155,21 @@ runs:
151155
echo "make $KDEVOPS_ARGS"
152156
153157
make $KDEVOPS_ARGS
158+
159+
# Configure VM size based on CI type
160+
VM_CONFIG_ARG=
161+
if [[ "${{ inputs.test_mode }}" == "kdevops-ci" ]]; then
162+
VM_CONFIG_ARG="defconfigs/configs/vm2g2c.config"
163+
echo "Using kdevops CI configuration (2GB/2core VMs)"
164+
else
165+
echo "Using Linux CI configuration (4GB/8core VMs)"
166+
fi
167+
154168
./scripts/kconfig/merge_config.sh \
155169
-n .config \
156170
defconfigs/configs/diy.config \
157-
defconfigs/configs/ci.config
171+
defconfigs/configs/ci.config \
172+
${VM_CONFIG_ARG}
158173
159174
- name: Run kdevops make
160175
working-directory: ${{ inputs.dir }}/kdevops

.github/workflows/main.yml

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,18 +23,22 @@ on:
2323
test_mode:
2424
description: 'Testing mode'
2525
required: false
26-
default: 'full-testing'
26+
default: 'linux-ci'
2727
type: string
2828
tests:
29-
description: 'Custom test to run (for kdevops-validation mode only)'
29+
description: 'Custom test to run (for kdevops-ci mode only)'
3030
required: false
3131
default: ''
3232
type: string
3333

3434
jobs:
3535
setup:
3636
name: Setup kdevops workspace
37-
runs-on: ${{ contains(inputs.ci_workflow, 'blktests') && fromJSON('["self-hosted", "Linux", "X64", "blktests"]') || contains(inputs.ci_workflow, 'tmpfs') && fromJSON('["self-hosted", "Linux", "X64", "tmpfs"]') || contains(inputs.ci_workflow, 'xfs') && fromJSON('["self-hosted", "Linux", "X64", "xfs"]') || contains(inputs.ci_workflow, 'btrfs') && fromJSON('["self-hosted", "Linux", "X64", "btrfs"]') || contains(inputs.ci_workflow, 'ext4') && fromJSON('["self-hosted", "Linux", "X64", "ext4"]') || contains(inputs.ci_workflow, 'selftests') && fromJSON('["self-hosted", "Linux", "X64", "selftests"]') || contains(inputs.ci_workflow, 'seltests') && fromJSON('["self-hosted", "Linux", "X64", "selftests"]') || contains(inputs.ci_workflow, 'modules') && fromJSON('["self-hosted", "Linux", "X64", "modules"]') || contains(inputs.ci_workflow, 'firmware') && fromJSON('["self-hosted", "Linux", "X64", "firmware"]') || contains(inputs.ci_workflow, 'mm') && fromJSON('["self-hosted", "Linux", "X64", "mm"]') || fromJSON('["self-hosted"]') }}
37+
runs-on: ${{
38+
inputs.test_mode == 'kdevops-ci'
39+
&& fromJSON('["self-hosted", "Linux", "X64", "kdevops-ci"]')
40+
|| fromJSON('["self-hosted", "Linux", "X64", "linux-ci"]')
41+
}}
3842
steps:
3943
- name: Checkout dkruces/kdevops
4044
uses: actions/checkout@v4
@@ -48,10 +52,15 @@ jobs:
4852
dir: ${{ inputs.ci_workflow }}
4953
kernel_ref: ${{ inputs.kernel_ref }}
5054
kernel_tree: ${{ inputs.kernel_tree }}
55+
test_mode: ${{ inputs.test_mode }}
5156

5257
test:
5358
name: Run kdevops ci-test
54-
runs-on: ${{ contains(inputs.ci_workflow, 'blktests') && fromJSON('["self-hosted", "Linux", "X64", "blktests"]') || contains(inputs.ci_workflow, 'tmpfs') && fromJSON('["self-hosted", "Linux", "X64", "tmpfs"]') || contains(inputs.ci_workflow, 'xfs') && fromJSON('["self-hosted", "Linux", "X64", "xfs"]') || contains(inputs.ci_workflow, 'btrfs') && fromJSON('["self-hosted", "Linux", "X64", "btrfs"]') || contains(inputs.ci_workflow, 'ext4') && fromJSON('["self-hosted", "Linux", "X64", "ext4"]') || contains(inputs.ci_workflow, 'selftests') && fromJSON('["self-hosted", "Linux", "X64", "selftests"]') || contains(inputs.ci_workflow, 'seltests') && fromJSON('["self-hosted", "Linux", "X64", "selftests"]') || contains(inputs.ci_workflow, 'modules') && fromJSON('["self-hosted", "Linux", "X64", "modules"]') || contains(inputs.ci_workflow, 'firmware') && fromJSON('["self-hosted", "Linux", "X64", "firmware"]') || contains(inputs.ci_workflow, 'mm') && fromJSON('["self-hosted", "Linux", "X64", "mm"]') || fromJSON('["self-hosted"]') }}
59+
runs-on: ${{
60+
inputs.test_mode == 'kdevops-ci'
61+
&& fromJSON('["self-hosted", "Linux", "X64", "kdevops-ci"]')
62+
|| fromJSON('["self-hosted", "Linux", "X64", "linux-ci"]')
63+
}}
5564
needs: [setup]
5665
timeout-minutes: 120
5766
steps:
@@ -65,7 +74,11 @@ jobs:
6574

6675
archive:
6776
name: Archive kdevops
68-
runs-on: ${{ contains(inputs.ci_workflow, 'blktests') && fromJSON('["self-hosted", "Linux", "X64", "blktests"]') || contains(inputs.ci_workflow, 'tmpfs') && fromJSON('["self-hosted", "Linux", "X64", "tmpfs"]') || contains(inputs.ci_workflow, 'xfs') && fromJSON('["self-hosted", "Linux", "X64", "xfs"]') || contains(inputs.ci_workflow, 'btrfs') && fromJSON('["self-hosted", "Linux", "X64", "btrfs"]') || contains(inputs.ci_workflow, 'ext4') && fromJSON('["self-hosted", "Linux", "X64", "ext4"]') || contains(inputs.ci_workflow, 'selftests') && fromJSON('["self-hosted", "Linux", "X64", "selftests"]') || contains(inputs.ci_workflow, 'seltests') && fromJSON('["self-hosted", "Linux", "X64", "selftests"]') || contains(inputs.ci_workflow, 'modules') && fromJSON('["self-hosted", "Linux", "X64", "modules"]') || contains(inputs.ci_workflow, 'firmware') && fromJSON('["self-hosted", "Linux", "X64", "firmware"]') || contains(inputs.ci_workflow, 'mm') && fromJSON('["self-hosted", "Linux", "X64", "mm"]') || fromJSON('["self-hosted"]') }}
77+
runs-on: ${{
78+
inputs.test_mode == 'kdevops-ci'
79+
&& fromJSON('["self-hosted", "Linux", "X64", "kdevops-ci"]')
80+
|| fromJSON('["self-hosted", "Linux", "X64", "linux-ci"]')
81+
}}
6982
needs: [setup, test]
7083
steps:
7184
- name: Start SSH Agent
@@ -87,7 +100,11 @@ jobs:
87100

88101
cleanup:
89102
name: Cleanup kdevops workspace
90-
runs-on: ${{ contains(inputs.ci_workflow, 'blktests') && fromJSON('["self-hosted", "Linux", "X64", "blktests"]') || contains(inputs.ci_workflow, 'tmpfs') && fromJSON('["self-hosted", "Linux", "X64", "tmpfs"]') || contains(inputs.ci_workflow, 'xfs') && fromJSON('["self-hosted", "Linux", "X64", "xfs"]') || contains(inputs.ci_workflow, 'btrfs') && fromJSON('["self-hosted", "Linux", "X64", "btrfs"]') || contains(inputs.ci_workflow, 'ext4') && fromJSON('["self-hosted", "Linux", "X64", "ext4"]') || contains(inputs.ci_workflow, 'selftests') && fromJSON('["self-hosted", "Linux", "X64", "selftests"]') || contains(inputs.ci_workflow, 'seltests') && fromJSON('["self-hosted", "Linux", "X64", "selftests"]') || contains(inputs.ci_workflow, 'modules') && fromJSON('["self-hosted", "Linux", "X64", "modules"]') || contains(inputs.ci_workflow, 'firmware') && fromJSON('["self-hosted", "Linux", "X64", "firmware"]') || contains(inputs.ci_workflow, 'mm') && fromJSON('["self-hosted", "Linux", "X64", "mm"]') || fromJSON('["self-hosted"]') }}
103+
runs-on: ${{
104+
inputs.test_mode == 'kdevops-ci'
105+
&& fromJSON('["self-hosted", "Linux", "X64", "kdevops-ci"]')
106+
|| fromJSON('["self-hosted", "Linux", "X64", "linux-ci"]')
107+
}}
91108
needs: [setup, test, archive]
92109
if: always()
93110
steps:

.github/workflows/manual.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -73,13 +73,13 @@ on:
7373
test_mode:
7474
description: 'Testing mode'
7575
required: false
76-
default: 'full-testing'
76+
default: 'linux-ci'
7777
type: choice
7878
options:
79-
- 'full-testing' # Complete test suite
80-
- 'kdevops-validation' # Single test for framework validation
79+
- 'linux-ci' # Complete test suite
80+
- 'kdevops-ci' # Single test for framework validation
8181
tests:
82-
description: 'Custom test to run (for kdevops-validation mode only)'
82+
description: 'Custom test to run (for kdevops-ci mode only)'
8383
required: false
8484
type: string
8585
default: ''

.github/workflows/push.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,5 +25,5 @@ jobs:
2525
ci_workflow: ${{ matrix.ci_workflow }}
2626
kernel_ref: 'v6.15'
2727
kernel_tree: 'linux'
28-
test_mode: 'kdevops-validation'
28+
test_mode: 'kdevops-ci'
2929
tests: ''

.github/workflows/schedule.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ jobs:
3636
"${{ github.workspace }}/scripts/github_output.sh" kernel_tree "$kernel_tree"
3737
3838
schedule:
39-
name: Scheduled kdevops CI
39+
name: Scheduled Linux CI
4040
needs: [check_ref]
4141
uses: ./.github/workflows/main.yml
4242
secrets: inherit
@@ -52,3 +52,4 @@ jobs:
5252
ci_workflow: ${{ matrix.ci_workflow }}
5353
kernel_ref: ${{ needs.check_ref.outputs.kernel_ref }}
5454
kernel_tree: ${{ needs.check_ref.outputs.kernel_tree }}
55+
test_mode: 'linux-ci'

0 commit comments

Comments
 (0)