Skip to content

Commit 1ff8e4c

Browse files
committed
normalize matrix.platform to meta/main format
1 parent b43826d commit 1ff8e4c

File tree

1 file changed

+34
-24
lines changed

1 file changed

+34
-24
lines changed

.github/workflows/tft.yml

Lines changed: 34 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -68,27 +68,8 @@ jobs:
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

Comments
 (0)