Skip to content

Commit 1e2f9c0

Browse files
authored
Merge pull request #135 from yuravk/devel-ng-0.22.0
CI: rework matrix, use separate job to prepare ELevation variants
2 parents 45492d2 + 364b5d2 commit 1e2f9c0

1 file changed

Lines changed: 96 additions & 82 deletions

File tree

.github/workflows/elevate.yml

Lines changed: 96 additions & 82 deletions
Original file line numberDiff line numberDiff line change
@@ -74,51 +74,84 @@ on:
7474
- all
7575

7676
jobs:
77+
set-variants-matrix:
78+
name: Set variants matrix
79+
runs-on: ubuntu-24.04
80+
outputs:
81+
matrix: ${{ steps.set-matrix.outputs.matrix }}
82+
steps:
83+
- name: Set matrix
84+
id: set-matrix
85+
run: |
86+
# ELevate matrix is json array of string elements like:
87+
# ["centos 7 to almalinux 8", "almalinux 8 to almalinux 9", ...]
88+
matrix=
89+
90+
# AlmaLinux variants
91+
if [ "${{ inputs.almalinux }}" = "true" ]; then
92+
if [ "${{ inputs.to8 }}" = "true" ]; then
93+
VARIANTS+=("centos 7 to almalinux 8")
94+
VARIANTS+=("scientific 7 to almalinux 8")
95+
fi
96+
if [ "${{ inputs.to9 }}" = "true" ]; then
97+
VARIANTS+=("almalinux 8 to almalinux 9")
98+
fi
99+
if [ "${{ inputs.to10 }}" = "true" ]; then
100+
# ELevation to AlmaLinux 10 is available for testing and NG repositories
101+
[[ "${{ inputs.repository }}" == *"testing"* || "${{ inputs.repository }}" == *"NG"* ]] && \
102+
VARIANTS+=("almalinux 9 to almalinux 10")
103+
# ELevation to AlmaLinux Kitten 10 is available for NG repository
104+
[[ "${{ inputs.repository }}" == *"NG"* ]] && \
105+
VARIANTS+=("almalinux 9 to almalinux-kitten 10")
106+
fi
107+
fi
108+
109+
# CentOS variants
110+
if [ "${{ inputs.centos }}" = "true" ]; then
111+
if [ "${{ inputs.to8 }}" = "true" ]; then
112+
VARIANTS+=("centos 7 to centos 8")
113+
fi
114+
if [ "${{ inputs.to9 }}" = "true" ]; then
115+
VARIANTS+=("centos 8 to centos 9")
116+
fi
117+
if [ "${{ inputs.to10 }}" = "true" ]; then
118+
# ELevation to CentOS Stream 10 is available for testing and NG repositories
119+
[[ "${{ inputs.repository }}" == *"testing"* || "${{ inputs.repository }}" == *"NG"* ]] && \
120+
VARIANTS+=("centos 9 to centos 10")
121+
fi
122+
fi
123+
124+
# Oracle Linux variants
125+
if [ "${{ inputs.oraclelinux }}" = "true" ]; then
126+
if [ "${{ inputs.to8 }}" = "true" ]; then
127+
VARIANTS+=("centos 7 to oraclelinux 8")
128+
fi
129+
fi
130+
131+
# Rocky Linux variants
132+
if [ "${{ inputs.rocky }}" = "true" ]; then
133+
if [ "${{ inputs.to8 }}" = "true" ]; then
134+
VARIANTS+=("centos 7 to rocky 8")
135+
fi
136+
if [ "${{ inputs.to9 }}" = "true" ]; then
137+
VARIANTS+=("rocky 8 to rocky 9")
138+
fi
139+
fi
140+
141+
[ ${#VARIANTS[@]} -ne 0 ] && matrix=$(printf '"%s",' "${VARIANTS[@]}")
142+
matrix=${matrix%,} # Remove the trailing comma
143+
echo matrix=$(jq -c <<< [${matrix}]) >> $GITHUB_OUTPUT
144+
77145
elevate:
78-
name: from ${{ matrix.scenario == '8' && (contains(matrix.distro, 'scientific') && 'scientific 7' || 'centos 7') || (format('{0} {1}', ( contains(matrix.distro, 'almalinux-kitten') && 'almalinux' || matrix.distro ), ( matrix.scenario == '9' && '8' || ( (matrix.distro != 'false' && matrix.scenario != '') && '9' || matrix.scenario) ) )) }} to ${{ contains(matrix.distro, 'scientific') && 'almalinux' || matrix.distro}} ${{ matrix.scenario }}
146+
name: ${{ matrix.VARIANT }}
79147
runs-on: ubuntu-24.04
148+
needs: [set-variants-matrix]
149+
# Skip the job if the matrix is empty
150+
if: ${{ needs.set-variants-matrix.outputs.matrix != '[]' }}
80151
strategy:
81152
fail-fast: false
82153
matrix:
83-
# Set distro+scenario+repository matrix based on boolean inputs.* with true value
84-
distro: ${{ fromJSON(format('["{0}", "{1}", "{2}", "{3}"]', ( inputs.almalinux && 'almalinux", "almalinux-kitten", "scientific' || 'false'), ( inputs.centos && 'centos' ), ( inputs.oraclelinux && 'oraclelinux' ), ( inputs.rocky && 'rocky' ) )) }}
85-
scenario: ${{ fromJSON(format('["{0}", "{1}", "{2}"]', ( inputs.to8 && '8' ), ( inputs.to9 && '9' ), ( inputs.to10 && '10' ) )) }}
86-
repository: ${{ fromJSON(format('["{0}"]', inputs.repository )) }}
87-
exclude:
88-
- distro: 'false'
89-
- scenario: 'false'
90-
- repository: 'false'
91-
# ELevation to 9 is not available for: oraclelinux, scientific
92-
- distro: 'oraclelinux'
93-
scenario: '9'
94-
- distro: 'scientific'
95-
scenario: '9'
96-
# ELevation to 10 is not available for: oraclelinux, scientific, rocky
97-
- distro: 'oraclelinux'
98-
scenario: '10'
99-
- distro: 'rocky'
100-
scenario: '10'
101-
- distro: 'scientific'
102-
scenario: '10'
103-
# For almalinux-kitten ELevation is available if 9 to 10
104-
- distro: 'almalinux-kitten'
105-
scenario: '8'
106-
- distro: 'almalinux-kitten'
107-
scenario: '9'
108-
# TODO: ELevate to 10: skip stable repositories
109-
- scenario: '10'
110-
repository: 'stable'
111-
- scenario: '10'
112-
repository: 'stable (ALBS product)'
113-
# TODO: ELevate to almalinux-kitten: skip all except 'NG (ALBS product)' repository
114-
- distro: 'almalinux-kitten'
115-
repository: 'stable'
116-
- distro: 'almalinux-kitten'
117-
repository: 'stable (ALBS product)'
118-
- distro: 'almalinux-kitten'
119-
repository: 'testing'
120-
- distro: 'almalinux-kitten'
121-
repository: 'testing (ALBS product)'
154+
VARIANT: ${{ fromJSON(needs.set-variants-matrix.outputs.matrix) }}
122155

123156
env:
124157
vm_serial_log: '/var/log/elevatevm_consoles/serial.log'
@@ -129,53 +162,33 @@ jobs:
129162

130163
- name: Prepare some environment variables
131164
run: |
132-
# Source and target systems
133-
case ${{ matrix.scenario }} in
134-
8)
135-
source_release=7
136-
source_distro=centos
137-
[ "${{ matrix.distro }}" = "scientific" ] && source_distro=scientific
138-
;;
139-
9)
140-
source_release=8
141-
source_distro=${{ matrix.distro }}
142-
;;
143-
10)
144-
source_release=9
145-
source_distro=${{ matrix.distro }}
146-
[ "${{ matrix.distro }}" = "almalinux-kitten" ] && source_distro=almalinux
147-
;;
148-
esac
149-
variant=el${source_release}toel${{ matrix.scenario }}
150-
target_distro=${{ matrix.distro }}
165+
# Read source and target systems
166+
read -r source_distro source_release to target_distro target_release <<<"${{ matrix.VARIANT }}"
151167
152168
# Target system release file, string and Vagrant image
153-
target_release_file=/etc/${{ matrix.distro }}-release
154-
case ${{ matrix.distro }} in
155-
almalinux|scientific )
169+
target_release_file=/etc/${target_distro}-release
170+
case ${target_distro} in
171+
almalinux)
156172
vm_box=almalinux/${source_release}
157-
target_distro=almalinux
158-
target_release_string="AlmaLinux release ${{ matrix.scenario }}"
159-
target_release_file=/etc/almalinux-release
173+
target_release_string="AlmaLinux release ${target_release}"
160174
;;
161175
almalinux-kitten )
162176
vm_box=almalinux/${source_release}
163-
target_distro=almalinux-kitten
164-
target_release_string="AlmaLinux Kitten release ${{ matrix.scenario }}"
177+
target_release_string="AlmaLinux Kitten release ${target_release}"
165178
target_release_file=/etc/almalinux-release
166179
;;
167180
centos )
168181
vm_box=eurolinux-vagrant/centos-stream-${source_release} # generic/centos8s
169-
target_release_string="CentOS Stream release ${{ matrix.scenario }}"
182+
target_release_string="CentOS Stream release ${target_release}"
170183
;;
171184
oraclelinux )
172185
vm_box=eurolinux-vagrant/oracle-linux-${source_release} # generic/oracle8
173-
target_release_string="Oracle Linux Server release ${{ matrix.scenario }}"
186+
target_release_string="Oracle Linux Server release ${target_release}"
174187
target_release_file=/etc/oracle-release
175188
;;
176189
rocky )
177190
vm_box=eurolinux-vagrant/rocky-${source_release} # generic/rocky8
178-
target_release_string="Rocky Linux release ${{ matrix.scenario }}"
191+
target_release_string="Rocky Linux release ${target_release}"
179192
;;
180193
esac
181194
if [ "${source_release}" = "7" ]; then
@@ -187,10 +200,11 @@ jobs:
187200
188201
echo "target_release_string=${target_release_string}" >> $GITHUB_ENV
189202
echo "target_release_file=${target_release_file}" >> $GITHUB_ENV
203+
echo "target_release=${target_release}" >> $GITHUB_ENV
204+
echo "target_distro=${target_distro}" >> $GITHUB_ENV
190205
echo "source_release=${source_release}" >> $GITHUB_ENV
191206
echo "source_distro=${source_distro}" >> $GITHUB_ENV
192-
echo "target_distro=${target_distro}" >> $GITHUB_ENV
193-
echo "variant_long=${source_distro}${source_release}-to-${target_distro}${{ matrix.scenario }}" >> $GITHUB_ENV
207+
echo "variant_long=${source_distro}${source_release}-to-${target_distro}${target_release}" >> $GITHUB_ENV
194208
195209
# Set Vagrant ENV variables, copy Vagrantfile
196210
echo "vm_box='${vm_box}'" > .env
@@ -199,7 +213,7 @@ jobs:
199213
cp -av ci/Vagrant/Vagrantfile ./
200214
201215
# Leapp packages
202-
leapp_pkgs="leapp leapp-upgrade-${variant}"
216+
leapp_pkgs="leapp leapp-upgrade-el${source_release}toel${target_release}"
203217
if [ "${{ inputs.leapp-data-git }}" = "false" ]; then
204218
leapp_pkgs="${leapp_pkgs} leapp-data-${target_distro}"
205219
fi
@@ -294,7 +308,7 @@ jobs:
294308
;;
295309
9)
296310
# TODO: workaround for CentOS Stream 9 SHA1 deprecated signature
297-
[ ${{ matrix.distro }} = "centos" ] && rpm -e gpg-pubkey-8483c65d-5ccc5b19 || true
311+
[ ${{ env.source_distro }} = "centos" ] && rpm -e gpg-pubkey-8483c65d-5ccc5b19 || true
298312
res=0
299313
;;
300314
esac
@@ -341,8 +355,8 @@ jobs:
341355
if [ "${vendor}" = "imunify" ]; then
342356
# TODO prepare/install the repository config instead of changing vendor's one
343357
sudo cp -av /etc/leapp/files/vendors.d/imunify.repo /etc/yum.repos.d/
344-
sudo sed -i "s/\/${{ matrix.scenario }}\//\/${source_release}\//g" /etc/yum.repos.d/imunify.repo
345-
sudo sed -i 's/cloudlinux${{ matrix.scenario }}-//g' /etc/yum.repos.d/imunify.repo
358+
sudo sed -i "s/\/${{ env.target_release }}\//\/${source_release}\//g" /etc/yum.repos.d/imunify.repo
359+
sudo sed -i 's/cloudlinux${{ env.target_release }}-//g' /etc/yum.repos.d/imunify.repo
346360
347361
sudo dnf -y install \
348362
imunify360-php-i360 \
@@ -549,22 +563,22 @@ jobs:
549563
sudo vagrant ssh elevatevm -c "sudo /vagrant/Vendors.sh epel ${{ env.source_release }}" || exit 1
550564
551565
- name: Vendor - KernelCare
552-
if: inputs.vendors == 'all' && matrix.scenario != '10'
566+
if: inputs.vendors == 'all' && env.target_release != '10'
553567
run: |
554568
sudo vagrant ssh elevatevm -c "sudo /vagrant/Vendors.sh kernelcare ${{ env.source_release }}" || exit 1
555569
556570
- name: Vendor - Nginx
557-
if: inputs.vendors == 'all' && matrix.scenario != '10'
571+
if: inputs.vendors == 'all' && env.target_release != '10'
558572
run: |
559573
sudo vagrant ssh elevatevm -c "sudo /vagrant/Vendors.sh nginx ${{ env.source_release }}" || exit 1
560574
561575
- name: Vendor - MariaDB
562-
if: inputs.vendors == 'all' && matrix.scenario != '10'
576+
if: inputs.vendors == 'all' && env.target_release != '10'
563577
run: |
564578
sudo vagrant ssh elevatevm -c "sudo /vagrant/Vendors.sh mariadb ${{ env.source_release }}" || exit 1
565579
566580
- name: Vendor - PostgreSQL
567-
if: inputs.vendors == 'all' && matrix.scenario != '10'
581+
if: inputs.vendors == 'all' && env.target_release != '10'
568582
run: |
569583
sudo vagrant ssh elevatevm -c "sudo /vagrant/Vendors.sh postgresql ${{ env.source_release }}" || exit 1
570584
@@ -574,12 +588,12 @@ jobs:
574588
sudo vagrant ssh elevatevm -c "sudo /vagrant/Vendors.sh docker ${{ env.source_release }}" || exit 1
575589
576590
- name: Vendor - Microsoft
577-
if: inputs.vendors == 'all' && matrix.scenario != '10'
591+
if: inputs.vendors == 'all' && env.target_release != '10'
578592
run: |
579593
sudo vagrant ssh elevatevm -c "sudo /vagrant/Vendors.sh microsoft ${{ env.source_release }}" || exit 1
580594
581595
- name: Vendor - Imunify360
582-
if: inputs.vendors == 'all' && matrix.scenario == '8'
596+
if: inputs.vendors == 'all' && env.target_release == '8'
583597
run: |
584598
sudo vagrant ssh elevatevm -c "sudo /vagrant/Vendors.sh imunify ${{ env.source_release }}" || exit 1
585599

0 commit comments

Comments
 (0)