6868 - name : Get supported platforms
6969 id : supported_platforms
7070 run : |
71- supported_platforms=""
7271 meta_main=meta/main.yml
73- # All Fedora are supported, add latest Fedora versions to supported_platforms
74- if yq '.galaxy_info.galaxy_tags[]' "$meta_main" | grep -qi fedora$; then
75- supported_platforms+=" Fedora-40"
76- supported_platforms+=" Fedora-41"
77- fi
78- # Specific Fedora versions supported
79- if yq '.galaxy_info.galaxy_tags[]' "$meta_main" | grep -qiP 'fedora\d+$'; then
80- for fedora_ver in $(yq '.galaxy_info.galaxy_tags[]' "$meta_main" | grep -iPo 'fedora\K(\d+$)'); do
81- supported_platforms+=" Fedora-$fedora_ver"
82- done
83- fi
84- if yq '.galaxy_info.galaxy_tags[]' "$meta_main" | grep -qi el7; then
85- supported_platforms+=" CentOS-7-latest"
86- fi
87- for ver in 8 9 10; do
88- if yq '.galaxy_info.galaxy_tags[]' "$meta_main" | grep -qi el"$ver"; then
89- supported_platforms+=" CentOS-Stream-$ver"
90- fi
91- done
72+ supported_platforms="$(yq '.galaxy_info.galaxy_tags[] | select(test("^el") or test("^fedora"))' "$meta_main" | xargs)"
9273 echo "supported_platforms=$supported_platforms" >> $GITHUB_OUTPUT
9374
9475 testing-farm :
@@ -138,9 +119,38 @@ jobs:
138119 echo "DATETIME=$DATETIME" >> $GITHUB_OUTPUT
139120 echo "ARTIFACTS_DIR=$ARTIFACTS_DIR" >> $GITHUB_OUTPUT
140121 echo "ARTIFACTS_URL=$ARTIFACTS_URL" >> $GITHUB_OUTPUT
122+ # convert matrix.platform to meta/main format and check if supported
123+ if [[ "${{ matrix.platform }}" =~ ^([a-zA-Z_-]+)-([0-9]+) ]]; then
124+ distro="${BASH_REMATCH[1]@L}"
125+ case "$distro" in
126+ centos*|rhel) distro=el ;;
127+ esac
128+ distro_ver="${distro}${BASH_REMATCH[2]}"
129+ platform_is_supported=false
130+ # first, look for exact platform version match
131+ for sv in ${{ needs.prepare_vars.outputs.supported_platforms }}; do
132+ if [ "$sv" = "$distro_ver" ]; then
133+ platform_is_supported=true
134+ break
135+ fi
136+ done
137+ # if no exact platform version match, look for platform only match
138+ if [ "$platform_is_supported" = false ]; then
139+ for sv in ${{ needs.prepare_vars.outputs.supported_platforms }}; do
140+ if [ "$sv" = "$distro" ]; then
141+ platform_is_supported=true
142+ break
143+ fi
144+ done
145+ fi
146+ echo platform_is_supported="$platform_is_supported" >> $GITHUB_OUTPUT
147+ else
148+ echo ERROR: The platform "${{ matrix.platform }}" could not be matched
149+ exit 1
150+ fi
141151
142152 - name : Set commit status as pending
143- if : contains(needs.prepare_vars .outputs.supported_platforms, matrix.platform)
153+ if : steps.set_vars .outputs.platform_is_supported == 'true'
144154 uses : myrotvorets/set-commit-status-action@master
145155 with :
146156 sha : ${{ needs.prepare_vars.outputs.head_sha }}
@@ -150,7 +160,7 @@ jobs:
150160 targetUrl : " "
151161
152162 - name : Set commit status as success with a description that platform is skipped
153- if : " !contains(needs.prepare_vars .outputs.supported_platforms, matrix.platform) "
163+ if : steps.set_vars .outputs.platform_is_supported == 'false'
154164 uses : myrotvorets/set-commit-status-action@master
155165 with :
156166 sha : ${{ needs.prepare_vars.outputs.head_sha }}
@@ -161,7 +171,7 @@ jobs:
161171
162172 - name : Run test in testing farm
163173 uses : sclorg/testing-farm-as-github-action@v3
164- if : contains(needs.prepare_vars .outputs.supported_platforms, matrix.platform)
174+ if : steps.set_vars .outputs.platform_is_supported == 'true'
165175 with :
166176 git_url : https://github.com/richm/linux-system-roles-tft-tests
167177 git_ref : image-mode
@@ -190,7 +200,7 @@ jobs:
190200
191201 - name : Set final commit status
192202 uses : myrotvorets/set-commit-status-action@master
193- if : always() && contains(needs.prepare_vars .outputs.supported_platforms, matrix.platform)
203+ if : always() && steps.set_vars .outputs.platform_is_supported == 'true'
194204 with :
195205 sha : ${{ needs.prepare_vars.outputs.head_sha }}
196206 status : ${{ job.status }}
0 commit comments