Skip to content

Commit d639d7e

Browse files
committed
ci: wait only for OBS deb needed by AUR
1 parent d38ca45 commit d639d7e

2 files changed

Lines changed: 63 additions & 18 deletions

File tree

‎.github/workflows/build-bundles.yml‎

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -110,17 +110,13 @@ jobs:
110110
OBS_PASSWORD: ${{ secrets.OBS_PASSWORD }}
111111
run: bash ./scripts/obs/configure-osc.sh
112112

113-
- name: Build Linux deb, rpm and AppImage packages in OBS
113+
- name: Build Ubuntu deb package in OBS for AUR
114114
if: ${{ github.event_name == 'release' || inputs.publish-obs }}
115115
env:
116116
OBS_PROJECT: home:cst8t:gitmun
117117
OBS_PACKAGE: gitmun
118-
OBS_RPM_REPOSITORY: openSUSE_Tumbleweed
119-
OBS_RPM_ARCH: x86_64
120118
OBS_DEB_REPOSITORY: xUbuntu_26.04
121119
OBS_DEB_ARCH: x86_64
122-
OBS_APPIMAGE_REPOSITORY: AppImage
123-
OBS_APPIMAGE_ARCH: x86_64
124120
run: bash ./scripts/obs/publish-release-package.sh "${BUNDLE_VERSION}" ./obs-release-inputs
125121

126122
- name: Build Tauri Linux bundles and updater metadata

‎scripts/obs/publish-release-package.sh‎

Lines changed: 62 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,9 @@ version="$1"
1111
input_dir="$2"
1212
project="${OBS_PROJECT:-home:cst8t:gitmun}"
1313
package="${OBS_PACKAGE:-gitmun}"
14-
rpm_repository="${OBS_RPM_REPOSITORY:-openSUSE_Tumbleweed}"
15-
rpm_arch="${OBS_RPM_ARCH:-x86_64}"
1614
deb_repository="${OBS_DEB_REPOSITORY:-xUbuntu_26.04}"
1715
deb_arch="${OBS_DEB_ARCH:-x86_64}"
18-
appimage_repository="${OBS_APPIMAGE_REPOSITORY:-AppImage}"
19-
appimage_arch="${OBS_APPIMAGE_ARCH:-x86_64}"
20-
build_appimage="${OBS_BUILD_APPIMAGE:-true}"
16+
obs_poll_seconds="${OBS_POLL_SECONDS:-60}"
2117
repo_root="$(cd "$(dirname "$0")/../.." && pwd)"
2218
tmp_dir="$(mktemp -d)"
2319
trap 'rm -rf "$tmp_dir"' EXIT
@@ -27,6 +23,66 @@ source_tarball="${tmp_dir}/${release_root}.tar.xz"
2723
render_dir="${tmp_dir}/rendered"
2824
checkout_dir="${tmp_dir}/checkout"
2925

26+
read_obs_build_code() {
27+
local results_file="$1"
28+
29+
OBS_PACKAGE_NAME="$package" python3 - "$results_file" <<'PY'
30+
import os
31+
import sys
32+
import xml.etree.ElementTree as ET
33+
34+
package = os.environ["OBS_PACKAGE_NAME"]
35+
root = ET.parse(sys.argv[1]).getroot()
36+
37+
for result in root.findall("result"):
38+
result_dirty = result.get("dirty") is not None
39+
result_code = result.get("code") or "unknown"
40+
for status in result.findall("status"):
41+
if status.get("package") == package:
42+
print("dirty" if result_dirty else status.get("code", result_code))
43+
raise SystemExit(0)
44+
45+
print("missing")
46+
raise SystemExit(2)
47+
PY
48+
}
49+
50+
wait_for_obs_build() {
51+
local repository="$1"
52+
local arch="$2"
53+
local results_file="${tmp_dir}/obs-results.xml"
54+
local build_code
55+
56+
echo "Waiting for OBS build: ${project}/${package} ${repository} ${arch}"
57+
58+
while true; do
59+
osc results --xml --no-multibuild -r "$repository" -a "$arch" "$project" "$package" >"$results_file"
60+
if ! build_code="$(read_obs_build_code "$results_file")"; then
61+
build_code="${build_code:-missing}"
62+
fi
63+
echo "OBS build status for ${repository}/${arch}: ${build_code}"
64+
65+
case "$build_code" in
66+
succeeded)
67+
osc results --no-multibuild -r "$repository" -a "$arch" "$project" "$package"
68+
return 0
69+
;;
70+
failed|broken|unresolvable|missing)
71+
osc results -v --no-multibuild -r "$repository" -a "$arch" "$project" "$package" || true
72+
return 1
73+
;;
74+
blocked|scheduled|dispatching|building|signing|finished|dirty|unknown)
75+
sleep "$obs_poll_seconds"
76+
;;
77+
*)
78+
echo "Unexpected OBS build status for ${repository}/${arch}: ${build_code}" >&2
79+
osc results -v --no-multibuild -r "$repository" -a "$arch" "$project" "$package" || true
80+
return 1
81+
;;
82+
esac
83+
done
84+
}
85+
3086
for required_file in vendor.tar.xz node_modules.obscpio node_modules.spec.inc package-lock.json ATTRIBUTIONS.html commit-hash.txt; do
3187
if [ ! -f "${input_dir}/${required_file}" ]; then
3288
echo "missing required input: ${input_dir}/${required_file}" >&2
@@ -109,12 +165,5 @@ cp "${input_dir}/commit-hash.txt" "$checkout_dir"/
109165
osc commit --skip-local-service-run -m "Prepare OBS sources for ${version}"
110166
)
111167

112-
osc rebuild "$project" "$package" "$rpm_repository" "$rpm_arch"
113168
osc rebuild "$project" "$package" "$deb_repository" "$deb_arch"
114-
osc results -w -F -r "$rpm_repository" -a "$rpm_arch" "$project" "$package"
115-
osc results -w -F -r "$deb_repository" -a "$deb_arch" "$project" "$package"
116-
117-
if [ "$build_appimage" = "true" ]; then
118-
osc rebuild "$project" "$package" "$appimage_repository" "$appimage_arch"
119-
osc results -w -F -r "$appimage_repository" -a "$appimage_arch" "$project" "$package"
120-
fi
169+
wait_for_obs_build "$deb_repository" "$deb_arch"

0 commit comments

Comments
 (0)