|
47 | 47 | shell: pwsh |
48 | 48 | run: | |
49 | 49 | $ver = "${env:RELEASE_VERSION}" |
50 | | - # Flutter pubspec version (keep build number stable for CI) |
| 50 | + # Flutter pubspec / Inno require semver x.y.z; branch names (e.g. main) are invalid. |
| 51 | + $pubVer = if ($ver -match '^(\d+\.\d+\.\d+)') { $Matches[1] } else { "0.0.0" } |
| 52 | + # Flutter pubspec version (build number from CI run) |
51 | 53 | (Get-Content "dashboard/pubspec.yaml") ` |
52 | | - -replace '^version:\s*.+$', "version: $ver+${env:GITHUB_RUN_NUMBER}" ` |
| 54 | + -replace '^version:\s*.+$', "version: $pubVer+${env:GITHUB_RUN_NUMBER}" ` |
53 | 55 | | Set-Content "dashboard/pubspec.yaml" |
54 | 56 | # Engine version metadata |
55 | 57 | (Get-Content "engine/__init__.py") ` |
|
60 | 62 | | Set-Content "engine/api/server.py" |
61 | 63 | # Inno Setup version + output name |
62 | 64 | (Get-Content "installer/sentracore.iss") ` |
63 | | - -replace '^AppVersion=.*$', "AppVersion=$ver" ` |
| 65 | + -replace '^AppVersion=.*$', "AppVersion=$pubVer" ` |
64 | 66 | -replace '^OutputBaseFilename=.*$', "OutputBaseFilename=SentraCore_Setup_v$ver" ` |
65 | 67 | | Set-Content "installer/sentracore.iss" |
66 | 68 |
|
@@ -121,9 +123,10 @@ jobs: |
121 | 123 | try { |
122 | 124 | $cfgDisk = $null |
123 | 125 | try { $cfgDisk = Get-Content "$cfgFull" -Raw | ConvertFrom-Json } catch {} |
124 | | - $host = if ($cfgDisk -and $cfgDisk.host) { $cfgDisk.host } else { "127.0.0.1" } |
| 126 | + # Never use $host — it shadows PowerShell's automatic $Host and breaks this loop. |
| 127 | + $connectHost = if ($cfgDisk -and $cfgDisk.host) { $cfgDisk.host } else { "127.0.0.1" } |
125 | 128 | $port = if ($cfgDisk -and $cfgDisk.port) { [int]$cfgDisk.port } else { $startPort } |
126 | | - $r = Invoke-WebRequest -UseBasicParsing -TimeoutSec 2 "http://$host`:$port/api/v1/health" |
| 129 | + $r = Invoke-WebRequest -UseBasicParsing -TimeoutSec 2 "http://${connectHost}:${port}/api/v1/health" |
127 | 130 | if ($r.StatusCode -eq 200) { $ok = $true; break } |
128 | 131 | } catch {} |
129 | 132 | Start-Sleep -Milliseconds 500 |
@@ -196,13 +199,14 @@ jobs: |
196 | 199 |
|
197 | 200 | - name: Inject version into project files |
198 | 201 | run: | |
199 | | - VER="${RELEASE_VERSION}" |
200 | 202 | python - <<'PY' |
201 | 203 | import os, re, pathlib |
202 | 204 | ver = os.environ["RELEASE_VERSION"] |
203 | | - run = os.environ.get("GITHUB_RUN_NUMBER","1") |
| 205 | + run = os.environ.get("GITHUB_RUN_NUMBER", "1") |
| 206 | + m = re.match(r"^(\d+\.\d+\.\d+)", ver.strip()) |
| 207 | + pub_ver = m.group(1) if m else "0.0.0" |
204 | 208 | p = pathlib.Path("dashboard/pubspec.yaml") |
205 | | - p.write_text(re.sub(r"^version:\s*.+$", f"version: {ver}+{run}", p.read_text(), flags=re.M)) |
| 209 | + p.write_text(re.sub(r"^version:\s*.+$", f"version: {pub_ver}+{run}", p.read_text(), flags=re.M)) |
206 | 210 | init = pathlib.Path("engine/__init__.py") |
207 | 211 | init.write_text(re.sub(r'__version__\s*=\s*\"[^\"]+\"', f'__version__ = \"{ver}\"', init.read_text())) |
208 | 212 | srv = pathlib.Path("engine/api/server.py") |
@@ -347,9 +351,11 @@ jobs: |
347 | 351 | python - <<'PY' |
348 | 352 | import os, re, pathlib |
349 | 353 | ver = os.environ["RELEASE_VERSION"] |
350 | | - run = os.environ.get("GITHUB_RUN_NUMBER","1") |
| 354 | + run = os.environ.get("GITHUB_RUN_NUMBER", "1") |
| 355 | + m = re.match(r"^(\d+\.\d+\.\d+)", ver.strip()) |
| 356 | + pub_ver = m.group(1) if m else "0.0.0" |
351 | 357 | p = pathlib.Path("dashboard/pubspec.yaml") |
352 | | - p.write_text(re.sub(r"^version:\s*.+$", f"version: {ver}+{run}", p.read_text(), flags=re.M)) |
| 358 | + p.write_text(re.sub(r"^version:\s*.+$", f"version: {pub_ver}+{run}", p.read_text(), flags=re.M)) |
353 | 359 | init = pathlib.Path("engine/__init__.py") |
354 | 360 | init.write_text(re.sub(r'__version__\s*=\s*\"[^\"]+\"', f'__version__ = \"{ver}\"', init.read_text())) |
355 | 361 | srv = pathlib.Path("engine/api/server.py") |
|
0 commit comments