Skip to content

Commit 25be21d

Browse files
feat: update site tests
feat: move all URLs used by the update-site tests into one file 'variables.sh' feat: update .yml file to run workflow daily at 00:00 UTC feat: add workflow summary
1 parent f858641 commit 25be21d

6 files changed

Lines changed: 662 additions & 1 deletion

File tree

.github/workflows/ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ jobs:
5858
path:
5959
tests/*/*/*/TEST-*.xml
6060
reporter: java-junit
61-
61+
6262
build_macos:
6363
runs-on: macos-latest
6464

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
name: ESP Eclipse Plug-in Update Site Test
2+
3+
on:
4+
push:
5+
paths:
6+
- 'releng/update-site-tests/**'
7+
- '.github/workflows/update-site-tests.yml'
8+
pull_request:
9+
paths:
10+
- 'releng/update-site-tests/**'
11+
- '.github/workflows/update-site-tests.yml'
12+
schedule:
13+
# Runs every day at 00:00 UTC
14+
- cron: '0 0 * * *'
15+
workflow_dispatch:
16+
17+
jobs:
18+
update-site-tests:
19+
runs-on: [self-hosted, eclipse, BrnoUBU0004]
20+
21+
steps:
22+
- name: Checkout repository
23+
uses: actions/checkout@v4
24+
25+
- name: Make scripts executable
26+
run: |
27+
chmod +x releng/update-site-tests/*.sh
28+
29+
- name: Run update-site test cases
30+
run: |
31+
cd releng/update-site-tests
32+
./run-all-cases.sh
33+
34+
- name: Publish workflow summary
35+
if: always()
36+
shell: bash
37+
run: |
38+
echo "# ESP Eclipse Plug-in Update Site Tests" >> "$GITHUB_STEP_SUMMARY"
39+
echo "" >> "$GITHUB_STEP_SUMMARY"
40+
echo "| Test case | Status |" >> "$GITHUB_STEP_SUMMARY"
41+
echo "|---|---|" >> "$GITHUB_STEP_SUMMARY"
42+
43+
for case_dir in releng/update-site-tests/out/*; do
44+
[ -d "$case_dir" ] || continue
45+
case_name="$(basename "$case_dir")"
46+
runlog="$case_dir/logs/run.log"
47+
48+
if [ ! -f "$runlog" ]; then
49+
echo "| $case_name | ⚠️ No log found |" >> "$GITHUB_STEP_SUMMARY"
50+
continue
51+
fi
52+
53+
if grep -q "STATUS: PASSED" "$runlog"; then
54+
status="✅ Passed"
55+
elif grep -q "STATUS: FAILED" "$runlog"; then
56+
status="❌ Failed"
57+
elif grep -q "STATUS: SKIPPED" "$runlog"; then
58+
reason="$(grep -m1 'SKIP_REASON:' "$runlog" | sed 's/SKIP_REASON: //')"
59+
60+
if [ -n "$reason" ]; then
61+
status="⏭️ Skipped ($reason)"
62+
else
63+
status="⏭️ Skipped"
64+
fi
65+
66+
else
67+
status="⚠️ Unknown"
68+
fi
69+
70+
echo "| $case_name | $status |" >> "$GITHUB_STEP_SUMMARY"
71+
done
72+
73+
echo "" >> "$GITHUB_STEP_SUMMARY"
74+
echo "Full logs are available in workflow artifacts." >> "$GITHUB_STEP_SUMMARY"
75+
76+
- name: Upload Update Site Test Results
77+
if: ${{ always() }}
78+
uses: actions/upload-artifact@v4
79+
with:
80+
name: eclipse-update-site-test-results
81+
path: releng/update-site-tests/out
Lines changed: 176 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,176 @@
1+
#!/bin/bash
2+
set -euo pipefail
3+
4+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
5+
source "$SCRIPT_DIR/variables.sh"
6+
7+
echo "Fetching Eclipse release list from $RELEASE_XML"
8+
XML="$(curl -fsSL "$RELEASE_XML")"
9+
10+
has_r_dir() {
11+
local stream="$1"
12+
local dir_url="$EPP_BASE/$stream/"
13+
14+
curl -fsSL "$dir_url" | grep -qE 'href="R/"|>R/'
15+
}
16+
17+
select_stable_r_stream() {
18+
local stream="$1"
19+
local url="$EPP_BASE/$stream/R/eclipse-cpp-$stream-R-linux-gtk-x86_64.tar.gz"
20+
local p2="https://download.eclipse.org/releases/$stream"
21+
22+
echo "Checking stream directory for official R/: $stream"
23+
if ! has_r_dir "$stream"; then
24+
echo "⚠️ No official R/ directory found for $stream"
25+
return 1
26+
fi
27+
28+
echo "Checking stable archive URL: $url"
29+
if ! curl -fsI "$url" >/dev/null; then
30+
echo "⚠️ R/ exists but archive is not reachable for $stream"
31+
return 1
32+
fi
33+
34+
ECLIPSE_R_RELEASE="$stream"
35+
ECLIPSE_R_URL="$url"
36+
ECLIPSE_R_P2="$p2"
37+
return 0
38+
}
39+
40+
mapfile -t ECLIPSE_R_RELEASES < <(
41+
printf '%s\n' "$XML" \
42+
| grep -oE '[0-9]{4}-[0-9]{2}/R([^A-Za-z0-9]|$)' \
43+
| sed -E 's|/R([^A-Za-z0-9].*)?$||' \
44+
| sort -r \
45+
| uniq \
46+
| head -n 2
47+
)
48+
49+
# Latest milestone - optional
50+
ECLIPSE_M_RELEASE="$(
51+
printf '%s\n' "$XML" \
52+
| grep -oE '[0-9]{4}-[0-9]{2}/M[0-9]+' \
53+
| sort -r \
54+
| head -n1 || true
55+
)"
56+
57+
# Latest RC - optional
58+
ECLIPSE_RC_RELEASE="$(
59+
printf '%s\n' "$XML" \
60+
| grep -oE '[0-9]{4}-[0-9]{2}/RC[0-9]+' \
61+
| sort -r \
62+
| head -n1 || true
63+
)"
64+
65+
ECLIPSE_CASE3_STREAM="${ECLIPSE_M_RELEASE:-}"
66+
if [[ -n "${ECLIPSE_RC_RELEASE:-}" ]]; then
67+
ECLIPSE_CASE3_STREAM="$ECLIPSE_RC_RELEASE"
68+
fi
69+
70+
ECLIPSE_CASE3_URL=""
71+
ECLIPSE_CASE3_P2=""
72+
73+
if [[ -n "${ECLIPSE_CASE3_STREAM:-}" ]]; then
74+
CASE3_STREAM="${ECLIPSE_CASE3_STREAM%/*}" # YYYY-MM
75+
CASE3_TAG="${ECLIPSE_CASE3_STREAM#*/}" # M* or RC*
76+
ECLIPSE_CASE3_URL="$EPP_BASE/$CASE3_STREAM/$CASE3_TAG/eclipse-cpp-$CASE3_STREAM-$CASE3_TAG-linux-gtk-x86_64.tar.gz"
77+
ECLIPSE_CASE3_P2="https://download.eclipse.org/releases/$CASE3_STREAM"
78+
else
79+
echo "⚠️ No milestone or RC detected. Case 3 will be skipped."
80+
fi
81+
82+
if [[ "${#ECLIPSE_R_RELEASES[@]}" -eq 0 ]]; then
83+
echo "❌ Could not detect any /R release"
84+
exit 1
85+
fi
86+
87+
LATEST_R="${ECLIPSE_R_RELEASES[0]}"
88+
PREVIOUS_R="${ECLIPSE_R_RELEASES[1]:-}"
89+
90+
if [[ -z "${ECLIPSE_M_RELEASE:-}" ]]; then
91+
echo "⚠️ No latest milestone detected (/M*)."
92+
fi
93+
94+
if [[ -z "${ECLIPSE_RC_RELEASE:-}" ]]; then
95+
echo "⚠️ No latest RC detected (/RC*)."
96+
fi
97+
98+
ECLIPSE_R_RELEASE=""
99+
ECLIPSE_R_URL=""
100+
ECLIPSE_R_P2=""
101+
102+
echo "Trying latest stable R stream: $LATEST_R"
103+
if ! select_stable_r_stream "$LATEST_R"; then
104+
if [[ -n "${PREVIOUS_R:-}" ]]; then
105+
echo "Trying previous stable R stream: $PREVIOUS_R"
106+
if ! select_stable_r_stream "$PREVIOUS_R"; then
107+
echo "❌ Neither latest R nor previous R has a usable official archive"
108+
exit 1
109+
fi
110+
else
111+
echo "❌ No previous R stream found to fall back to"
112+
exit 1
113+
fi
114+
fi
115+
116+
ECLIPSE_M_URL=""
117+
ECLIPSE_M_P2=""
118+
119+
if [[ -n "${ECLIPSE_M_RELEASE:-}" ]]; then
120+
STREAM="${ECLIPSE_M_RELEASE%/*}" # 2026-03
121+
M_TAG="${ECLIPSE_M_RELEASE#*/}" # M2
122+
ECLIPSE_M_URL="$EPP_BASE/$STREAM/$M_TAG/eclipse-cpp-$STREAM-$M_TAG-linux-gtk-x86_64.tar.gz"
123+
ECLIPSE_M_P2="https://download.eclipse.org/releases/$STREAM"
124+
fi
125+
126+
# Verify Case 3 URL exists - if unreachable, skip Case 3
127+
if [[ -n "${ECLIPSE_CASE3_URL:-}" ]]; then
128+
if ! curl -fsI "$ECLIPSE_CASE3_URL" >/dev/null; then
129+
echo "⚠️ Case 3 pre-release archive not reachable. Case 3 will be skipped."
130+
ECLIPSE_CASE3_STREAM=""
131+
ECLIPSE_CASE3_URL=""
132+
ECLIPSE_CASE3_P2=""
133+
fi
134+
fi
135+
136+
# -------- Espressif-IDE stable version (tags) --------
137+
echo "Detecting latest *stable* Espressif-IDE tag..."
138+
TAGS_JSON="$(curl -fsSL "$IEP_TAGS_API")"
139+
140+
ESP_IDE_TAG="$(
141+
printf '%s\n' "$TAGS_JSON" \
142+
| grep -oE '"name":[[:space:]]*"v?[0-9]+\.[0-9]+\.[0-9]+"' \
143+
| sed -E 's/.*"name":[[:space:]]*"([^"]+)".*/\1/' \
144+
| head -n1
145+
)"
146+
147+
if [[ -z "${ESP_IDE_TAG:-}" ]]; then
148+
echo "❌ Could not detect stable Espressif-IDE tag (vX.Y.Z)"
149+
exit 1
150+
fi
151+
152+
ESP_IDE_VERSION="${ESP_IDE_TAG#v}"
153+
ESPRESSIF_IDE_URL="$ESP_IDE_BASE/Espressif-IDE-${ESP_IDE_VERSION}-linux.gtk.x86_64.tar.gz"
154+
155+
echo "Verifying Espressif-IDE archive exists..."
156+
if ! curl -sfI "$ESPRESSIF_IDE_URL" >/dev/null; then
157+
echo "⚠️ Could not verify Espressif-IDE archive URL. Continuing anyway."
158+
fi
159+
160+
export ECLIPSE_R_RELEASE ECLIPSE_R_URL ECLIPSE_R_P2
161+
export ECLIPSE_M_RELEASE ECLIPSE_RC_RELEASE
162+
export ECLIPSE_CASE3_STREAM ECLIPSE_CASE3_URL ECLIPSE_CASE3_P2
163+
export ESP_IDE_VERSION ESPRESSIF_IDE_URL
164+
165+
echo "✅ Latest stable Eclipse: $ECLIPSE_R_RELEASE"
166+
echo "✅ Stable URL: $ECLIPSE_R_URL"
167+
echo "✅ Stable P2: $ECLIPSE_R_P2"
168+
echo "✅ Latest milestone Eclipse: ${ECLIPSE_M_RELEASE:-<none>}"
169+
echo "✅ Latest RC Eclipse: ${ECLIPSE_RC_RELEASE:-<none>}"
170+
echo "✅ Case 3 pre-release pick: ${ECLIPSE_CASE3_STREAM:-<none>}"
171+
if [[ -n "${ECLIPSE_CASE3_STREAM:-}" ]]; then
172+
echo "✅ Case 3 URL: $ECLIPSE_CASE3_URL"
173+
echo "✅ Case 3 P2: $ECLIPSE_CASE3_P2"
174+
fi
175+
echo "✅ Espressif-IDE version: $ESP_IDE_VERSION"
176+
echo "✅ Espressif-IDE URL: $ESPRESSIF_IDE_URL"

0 commit comments

Comments
 (0)