Skip to content

Commit 6c94fb3

Browse files
committed
CI: still parallel
Add matrix parallelization with all language variants - Add matrix strategy with max-parallel: 8 for parallel builds - Add all 90 language variants from make_libreoffice_appimage - Update checkout@v6, upload-artifact@v7, download-artifact@v8 - Update action-gh-release@v2
1 parent 2dc993c commit 6c94fb3

1 file changed

Lines changed: 270 additions & 52 deletions

File tree

.github/workflows/CI-still.yml

Lines changed: 270 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -8,76 +8,294 @@ on:
88
- cron: "0 6 * * 0"
99
workflow_dispatch:
1010

11+
env:
12+
APPIMAGETOOL_NAME: appimagetool-x86_64.AppImage
13+
1114
jobs:
1215
build:
16+
permissions:
17+
contents: write
18+
name: ${{ matrix.flag }} ${{ matrix.language }}
1319
runs-on: ubuntu-latest
20+
strategy:
21+
fail-fast: false
22+
max-parallel: 8
23+
matrix:
24+
include:
25+
- language: en-GB
26+
flag: "🇬🇧"
27+
- language: it
28+
flag: "🇮🇹"
29+
- language: ar
30+
flag: "🇸🇦"
31+
- language: zh-CN
32+
flag: "🇨🇳"
33+
- language: zh-TW
34+
flag: "🇹🇼"
35+
- language: fr
36+
flag: "🇫🇷"
37+
- language: de
38+
flag: "🇩🇪"
39+
- language: ja
40+
flag: "🇯🇵"
41+
- language: ko
42+
flag: "🇰🇷"
43+
- language: pt
44+
flag: "🇵🇹"
45+
- language: pt-BR
46+
flag: "🇧🇷"
47+
- language: es
48+
flag: "🇪🇸"
49+
- language: ru
50+
flag: "🇷🇺"
51+
- language: af
52+
flag: "🇿🇦"
53+
- language: am
54+
flag: "🇪🇹"
55+
- language: as
56+
flag: "🇮🇳"
57+
- language: ast
58+
flag: "🇪🇸"
59+
- language: be
60+
flag: "🇧🇾"
61+
- language: bg
62+
flag: "🇧🇬"
63+
- language: bn-IN
64+
flag: "🇮🇳"
65+
- language: bn
66+
flag: "🇧🇩"
67+
- language: bo
68+
flag: "🇨🇳"
69+
- language: br
70+
flag: "🇫🇷"
71+
- language: brx
72+
flag: "🇮🇳"
73+
- language: bs
74+
flag: "🇧🇦"
75+
- language: ca-valencia
76+
flag: "🇪🇸"
77+
- language: ca
78+
flag: "🇪🇸"
79+
- language: cs
80+
flag: "🇨🇿"
81+
- language: cy
82+
flag: "🇬🇧"
83+
- language: da
84+
flag: "🇩🇰"
85+
- language: dgo
86+
flag: "🇮🇳"
87+
- language: dz
88+
flag: "🇧🇹"
89+
- language: el
90+
flag: "🇬🇷"
91+
- language: en-ZA
92+
flag: "🇿🇦"
93+
- language: eo
94+
flag: "🌍"
95+
- language: et
96+
flag: "🇪🇪"
97+
- language: eu
98+
flag: "🇪🇸"
99+
- language: fa
100+
flag: "🇮🇷"
101+
- language: fi
102+
flag: "🇫🇮"
103+
- language: ga
104+
flag: "🇮🇪"
105+
- language: gd
106+
flag: "🇬🇧"
107+
- language: gl
108+
flag: "🇪🇸"
109+
- language: gu
110+
flag: "🇮🇳"
111+
- language: gug
112+
flag: "🇵🇾"
113+
- language: he
114+
flag: "🇮🇱"
115+
- language: hi
116+
flag: "🇮🇳"
117+
- language: hr
118+
flag: "🇭🇷"
119+
- language: hsb
120+
flag: "🇩🇪"
121+
- language: hu
122+
flag: "🇭🇺"
123+
- language: id
124+
flag: "🇮🇩"
125+
- language: is
126+
flag: "🇮🇸"
127+
- language: ka
128+
flag: "🇬🇪"
129+
- language: kk
130+
flag: "🇰🇿"
131+
- language: km
132+
flag: "🇰🇭"
133+
- language: kmr
134+
flag: "🇹🇷"
135+
- language: kn
136+
flag: "🇮🇳"
137+
- language: kok
138+
flag: "🇮🇳"
139+
- language: ks
140+
flag: "🇮🇳"
141+
- language: lb
142+
flag: "🇱🇺"
143+
- language: lo
144+
flag: "🇱🇦"
145+
- language: lt
146+
flag: "🇱🇹"
147+
- language: lv
148+
flag: "🇱🇻"
149+
- language: mai
150+
flag: "🇮🇳"
151+
- language: mk
152+
flag: "🇲🇰"
153+
- language: ml
154+
flag: "🇮🇳"
155+
- language: mn
156+
flag: "🇲🇳"
157+
- language: mni
158+
flag: "🇮🇳"
159+
- language: mr
160+
flag: "🇮🇳"
161+
- language: my
162+
flag: "🇲🇲"
163+
- language: nb
164+
flag: "🇳🇴"
165+
- language: ne
166+
flag: "🇳🇵"
167+
- language: nl
168+
flag: "🇳🇱"
169+
- language: nn
170+
flag: "🇳🇴"
171+
- language: nr
172+
flag: "🇿🇦"
173+
- language: nso
174+
flag: "🇿🇦"
175+
- language: oc
176+
flag: "🇫🇷"
177+
- language: om
178+
flag: "🇪🇹"
179+
- language: or
180+
flag: "🇮🇳"
181+
- language: pa-IN
182+
flag: "🇮🇳"
183+
- language: pl
184+
flag: "🇵🇱"
185+
- language: qtz
186+
flag: "🇦🇺"
187+
- language: ro
188+
flag: "🇷🇴"
189+
- language: rw
190+
flag: "🇷🇼"
191+
- language: sa-IN
192+
flag: "🇮🇳"
193+
- language: sat
194+
flag: "🇮🇳"
195+
- language: sd
196+
flag: "🇵🇰"
197+
- language: si
198+
flag: "🇱🇰"
199+
- language: sid
200+
flag: "🇪🇹"
201+
- language: sk
202+
flag: "🇸🇰"
203+
- language: sl
204+
flag: "🇸🇮"
205+
- language: sq
206+
flag: "🇦🇱"
207+
- language: sr-Latn
208+
flag: "🇷🇸"
209+
- language: sr
210+
flag: "🇷🇸"
211+
- language: ss
212+
flag: "🇸🇿"
213+
- language: st
214+
flag: "🇿🇦"
215+
- language: sv
216+
flag: "🇸🇪"
217+
- language: sw-TZ
218+
flag: "🇹🇿"
219+
- language: ta
220+
flag: "🇮🇳"
221+
- language: te
222+
flag: "🇮🇳"
223+
- language: tg
224+
flag: "🇹🇯"
225+
- language: th
226+
flag: "🇹🇭"
227+
- language: tn
228+
flag: "🇧🇼"
229+
- language: tr
230+
flag: "🇹🇷"
231+
- language: ts
232+
flag: "🇿🇦"
233+
- language: tt
234+
flag: "🇷🇺"
235+
- language: ug
236+
flag: "🇨🇳"
237+
- language: uk
238+
flag: "🇺🇦"
239+
- language: uz
240+
flag: "🇺🇿"
241+
- language: ve
242+
flag: "🇿🇦"
243+
- language: vec
244+
flag: "🇮🇹"
245+
- language: vi
246+
flag: "🇻🇳"
247+
- language: xh
248+
flag: "🇿🇦"
249+
- language: zu
250+
flag: "🇿🇦"
251+
- language: standard
252+
flag: "🌐"
253+
- language: full
254+
flag: "🌍"
255+
14256
steps:
15257
- uses: actions/checkout@v6
16258

17-
- name: build
18-
if: always()
259+
- name: Build and rename AppImages
19260
run: |
20-
sudo apt update && sudo apt install desktop-file-utils
261+
sudo apt update && sudo apt install -y desktop-file-utils
21262
sudo sysctl -w kernel.apparmor_restrict_unprivileged_unconfined=0
22263
sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0
23264
24-
URL="https://github.com/AppImage/appimagetool/releases/download/continuous/appimagetool-x86_64.AppImage"
265+
URL="https://github.com/AppImage/appimagetool/releases/download/continuous/${{ env.APPIMAGETOOL_NAME }}"
25266
wget -c "$URL" -O appimagetool && chmod a+x ./appimagetool
26267
export PATH="$PWD":"${PATH}"
27-
268+
28269
chmod a+x ./make_libreoffice_appimage
29-
languages="en-GB it ar zh-CN zh-TW fr de ja ko pt pt-BR es ru standard full"
30-
for l in $languages; do
31-
./make_libreoffice_appimage still x86-64 "$l" N Y Y Y
32-
./make_libreoffice_appimage still x86-64 "$l" Y Y Y Y
33-
done
270+
271+
# Build both N and Y variants
272+
./make_libreoffice_appimage still x86-64 "${{ matrix.language }}" N Y Y Y
273+
./make_libreoffice_appimage still x86-64 "${{ matrix.language }}" Y Y Y Y
274+
275+
# Rename and move to dist/
34276
mkdir -p dist
35-
find . -type d -name out
36-
mv ./*/*AppImage* dist/
277+
for f in ./*/*AppImage*; do
278+
base=$(basename "$f")
279+
mv "$f" "dist/LibreOffice-${{ matrix.language }}-${base}"
280+
done
37281
38282
- name: Upload artifact
39-
uses: actions/upload-artifact@v4.4.0
283+
uses: actions/upload-artifact@v7
40284
with:
41-
name: AppImage
285+
name: AppImage-${{ matrix.language }}
42286
path: 'dist'
43-
44-
release:
45-
needs: [build]
46-
permissions: write-all
47-
runs-on: ubuntu-latest
48287

49-
steps:
50-
- uses: actions/download-artifact@v4.1.8
51-
with:
52-
name: AppImage
288+
- name: Release (append to single release)
289+
run: |
290+
TAG="continuous-still"
291+
NAME="LibreOffice STILL"
53292
54-
# Snapshot Release
55-
- name: get date
56-
run: |
57-
SNAPSHOT_TAG="$(date --utc +'%Y%m%d-%H%M%S')"
58-
echo SNAPSHOT_TAG="${SNAPSHOT_TAG}" >> "${GITHUB_ENV}"
59-
continue-on-error: false
60-
- name: create snapshot
61-
uses: softprops/action-gh-release@v2
62-
with:
63-
name: "Snapshot STILL ${{ env.SNAPSHOT_TAG}}"
64-
tag_name: "${{ env.SNAPSHOT_TAG}}"
65-
prerelease: false
66-
draft: false
67-
generate_release_notes: false
68-
make_latest: false
69-
files: |
70-
*.AppImage*
71-
continue-on-error: false
293+
# Quickest job can create tag
294+
gh release create "$TAG" \
295+
--title "$NAME" \
296+
--notes "" \
297+
--latest=false 2>/dev/null || true
72298
73-
# Continuous release
74-
- name: release
75-
uses: marvinpinto/action-automatic-releases@latest
76-
with:
77-
title: LibreOffice STILL
78-
automatic_release_tag: continuous-still
79-
prerelease: false
80-
draft: false
81-
files: |
82-
*.AppImage*
83-
repo_token: ${{ secrets.GITHUB_TOKEN }}
299+
gh release upload "$TAG" dist/*.AppImage* --clobber
300+
env:
301+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

0 commit comments

Comments
 (0)