Move IDE sources and Windows packaging to the new server
Server CI and Windows package / verify (push) Failing after 2m2s
Server CI and Windows package / windows-package (push) Skipped

This commit is contained in:
yilsem committed 2026-10-11 04:17:46 +03:00
1 parent 48103b9ad3
commit dd5f99c406
8 files changed
+73 -117

No files matched your search

+60 -104
View File
@@ -1,118 +1,74 @@
# AITURK IDE ajan CI (kart turkservis-20261007-1421-2). name: Server CI and Windows package
#
# Bu depo bir yukari akis catalidir; .github/workflows altindaki GitHub is akislari Gitea'da kosmaz. .gitea/workflows
# klasoru var oldugu surece Gitea yalniz buradaki is akislarini okur.
#
# Ne kosar: korumali talimat dosyasi onay kapisinin testleri (insana sorulamayan kosuda aninda BLOCKED, gec onayin
# uygulanmamasi, yolo ile kapinin acilmamasi) ve dosya yazma guvenligi testleri. Kosucu Windows'tur (etiket
# windows-latest; 7 Ekim 2026'da cevrimici kosucu hermes-laptop-windows): urunun hedefi Windows x64'tur ve hata
# Windows asama kosusunda gorulmustur.
#
# Ne sayilmaz (durustluk notu): tests/tools/test_file_write_safety.py icindeki 7 test Windows'ta bu degisiklikten
# bagimsiz olarak gecemez; yukari akis bunlari POSIX icin yazmistir (/etc, /private/etc, /boot yollari; yonetici
# ayricaligi isteyen symlink; POSIX stat alanlari). Asagida adlariyla deselect edilir; degismemis 58dbb4523b
# commit'inde de ayni 7 test kaliyordu (7 Ekim 2026 olcumu). Tam yukari akis test takimi burada KOSMAZ.
name: ci
on: on:
push: push:
branches: branches: [aiturk/main, fix/ide-windows-vcruntime]
- aiturk/main
- fix/ide-windows-vcruntime
workflow_dispatch: workflow_dispatch:
permissions: permissions:
contents: read contents: read
jobs: jobs:
mobile-link-windows: verify:
runs-on: windows-latest runs-on: ubuntu-24.04
timeout-minutes: 15
steps:
- uses: https://gitea.twinpay.one/yilsem/ci-actions-checkout@11d5960a326750d5838078e36cf38b85af677262 # upstream v4.4.0
with:
github-server-url: https://gitea.twinpay.one
- name: Mobil TLS, profil ve baslatma regresyonlari
shell: powershell
run: |
$ErrorActionPreference = 'Stop'
$deps = Join-Path $env:RUNNER_TEMP "mobile-tests-$env:GITHUB_RUN_ID"
New-Item -ItemType Directory -Force -Path $deps | Out-Null
npm install --prefix $deps --no-save --ignore-scripts --no-audit --no-fund --legacy-peer-deps vitest@4.1.10 ws@8.21.1
if ($LASTEXITCODE -ne 0) { throw 'Test bagimliliklari kurulamadi' }
New-Item -ItemType Junction -Path node_modules -Target (Join-Path $deps 'node_modules') | Out-Null
node node_modules/vitest/vitest.mjs run --root apps/desktop --config vitest.mobile.config.ts
exit $LASTEXITCODE
- name: Codex koprusu (Python, bagimliliksiz) testleri
shell: powershell
run: |
$ErrorActionPreference = 'Stop'
$py = (Get-Command python -ErrorAction SilentlyContinue).Source
if ($py) { & $py -m unittest discover -s apps/desktop/assets/codex-bridge }
else { & py -3 -m unittest discover -s apps/desktop/assets/codex-bridge }
exit $LASTEXITCODE
approval-gate-windows:
runs-on: windows-latest
timeout-minutes: 40 timeout-minutes: 40
env:
NODE_OPTIONS: --max-old-space-size=2560
PYTHONDONTWRITEBYTECODE: '1'
steps: steps:
- name: Kaynagi al - uses: actions/checkout@v4
uses: https://gitea.twinpay.one/yilsem/ci-actions-checkout@11d5960a326750d5838078e36cf38b85af677262 # upstream v4.4.0
with: with:
github-server-url: https://gitea.twinpay.one github-server-url: https://gitea.turkservis.online
- name: Exact source and Linux test environment
- name: Ortami kur
shell: powershell
run: | run: |
$ErrorActionPreference = 'Stop' set -eu
"kosucu: $env:COMPUTERNAME / $env:USERNAME" test "$(git rev-parse HEAD)" = "$GITHUB_SHA"
"checkout SHA: $(git rev-parse HEAD) / beklenen: $env:GITHUB_SHA" python3 -m venv "$RUNNER_TEMP/bootstrap"
$py = $null "$RUNNER_TEMP/bootstrap/bin/pip" install uv
$launcher = Get-Command py -ErrorAction SilentlyContinue "$RUNNER_TEMP/bootstrap/bin/uv" venv --python 3.11 "$RUNNER_TEMP/ci-venv"
if ($launcher) { $py = (& $launcher.Source -3 -c 'import sys; print(sys.executable)').Trim() } "$RUNNER_TEMP/bootstrap/bin/uv" pip install --python "$RUNNER_TEMP/ci-venv/bin/python" -e . pytest
if (-not $py) { - name: Approval gate and file safety on the server
$cmd = Get-Command python -ErrorAction SilentlyContinue
if ($cmd -and $cmd.Source -notlike '*\WindowsApps\*') { $py = $cmd.Source }
}
if (-not $py) { throw 'Python bulunamadi' }
"onyukleme python: $py"
& $py -m pip install --quiet --disable-pip-version-check --target "$env:RUNNER_TEMP\uvboot" uv
if ($LASTEXITCODE -ne 0) { throw 'uv kurulamadi' }
$env:PYTHONPATH = "$env:RUNNER_TEMP\uvboot"
& $py -m uv venv --python 3.11 "$env:RUNNER_TEMP\ci-venv"
if ($LASTEXITCODE -ne 0) { throw 'venv olusturulamadi' }
& $py -m uv pip install --python "$env:RUNNER_TEMP\ci-venv\Scripts\python.exe" -e . pytest
if ($LASTEXITCODE -ne 0) { throw 'bagimliliklar kurulamadi' }
$env:PYTHONPATH = ''
& "$env:RUNNER_TEMP\ci-venv\Scripts\python.exe" --version
- name: Onay kapisi testleri
shell: powershell
run: | run: |
$ErrorActionPreference = 'Continue' "$RUNNER_TEMP/ci-venv/bin/python" -m pytest tests/tools/test_protected_instruction_unattended.py tests/tools/test_file_write_safety.py tests/tools/test_computer_use_approval_isolation.py tests/cli/test_cli_approval_ui.py tests/cli/test_single_query_session_finalize.py -q -p no:cacheprovider -rf
$env:PYTHONDONTWRITEBYTECODE = '1' - name: Codex bridge regression tests
$env:PYTHONUTF8 = '1' run: python3 -m unittest discover -s apps/desktop/assets/codex-bridge
$venv = "$env:RUNNER_TEMP\ci-venv\Scripts\python.exe" - name: Mobile and desktop startup regression tests
$f = 'tests/tools/test_file_write_safety.py' run: |
$sayilmayan = @( npm install --prefix "$RUNNER_TEMP/mobile-tests" --no-save --ignore-scripts --no-audit --no-fund --legacy-peer-deps vitest@4.1.10 ws@8.21.1
"${f}::TestCheckSensitivePathMacOSBypass::test_etc_hosts_blocked", ln -s "$RUNNER_TEMP/mobile-tests/node_modules" node_modules
"${f}::TestCheckSensitivePathMacOSBypass::test_private_etc_hosts_blocked", node node_modules/vitest/vitest.mjs run --root apps/desktop --config vitest.mobile.config.ts --maxWorkers=2
"${f}::TestCheckSensitivePathMacOSBypass::test_private_etc_ssh_config_blocked",
"${f}::TestCheckSensitivePathMacOSBypass::test_private_var_blocked", windows-package:
"${f}::TestCheckSensitivePathMacOSBypass::test_boot_still_blocked", if: github.ref == 'refs/heads/fix/ide-windows-vcruntime'
"${f}::TestAtomicWrite::test_patch_routes_through_atomic_write", needs: verify
"${f}::TestProtectedInstructionFiles::test_symlink_to_protected_file_is_gated" runs-on: ubuntu-24.04
) timeout-minutes: 60
$deselect = @() # Windows packaging runs on Linux/Wine in the new server. No laptop runner.
foreach ($t in $sayilmayan) { $deselect += '--deselect'; $deselect += $t } container: electronuserland/builder@sha256:b226b27b1a7e95ad25eb3d6414ea90c56c04eb6d8329967f4d721dce50b989ff
"CI OZETI: Windows'ta sayilmayan (deselect) test sayisi: $($sayilmayan.Count)" env:
$sayilmayan | ForEach-Object { " sayilmadi: $_" } NODE_OPTIONS: --max-old-space-size=2560
& $venv -m pytest tests/tools/test_protected_instruction_unattended.py $f ` CSC_IDENTITY_AUTO_DISCOVERY: 'false'
tests/tools/test_computer_use_approval_isolation.py tests/cli/test_cli_approval_ui.py ` steps:
tests/cli/test_single_query_session_finalize.py ` - uses: actions/checkout@v4
tests/hermes_cli/test_plugin_catalog.py tests/hermes_cli/test_aiturk_plugin_catalog.py ` with:
tests/hermes_cli/test_plugin_install_ref.py ` github-server-url: https://gitea.turkservis.online
tests/tui_gateway/test_mobile_subagents.py @deselect -q -p no:cacheprovider -rf - name: Install locked source dependencies
$kod = $LASTEXITCODE run: npm ci --no-audit --no-fund
"pytest cikis kodu: $kod" - name: Build and package Windows x64
exit $kod run: |
set -eu
test "$(git rev-parse HEAD)" = "$GITHUB_SHA"
npm run build --workspace=apps/desktop
npm run builder --workspace=apps/desktop -- --win nsis zip --x64 --publish never
git diff --exit-code
cd apps/desktop/release
sha256sum *.exe *.zip > SHA256SUMS
- name: Preserve exact-source Windows package
uses: actions/upload-artifact@v3
with:
name: aiturk-ide-windows-${{ github.sha }}
if-no-files-found: error
path: |
apps/desktop/release/*.exe
apps/desktop/release/*.zip
apps/desktop/release/SHA256SUMS
+1 -1
View File
@@ -54,5 +54,5 @@ Nous Research telif bildirimi ve MIT metni [LICENSE](LICENSE) dosyasında korunu
paket ayrıca `assets/NOTICE.txt` ve `assets/LICENSE.txt` içerir. paket ayrıca `assets/NOTICE.txt` ve `assets/LICENSE.txt` içerir.
AITURK/TurkServis dağıtımı Nous Research tarafından onaylanmış bir ürün değildir. AITURK/TurkServis dağıtımı Nous Research tarafından onaylanmış bir ürün değildir.
[AITURK kaynak deposu](https://gitea.twinpay.one/yilsem/aiturk-hermes-ide) [AITURK kaynak deposu](https://gitea.turkservis.online/yilsem/aiturk-hermes-ide)
· [TurkServis](https://turkservis.online) · [TurkServis](https://turkservis.online)
+1 -1
View File
@@ -6,7 +6,7 @@ export const AITURK_PRODUCT = Object.freeze({
protocol: 'aiturk-ide', protocol: 'aiturk-ide',
website: 'https://turkservis.online', website: 'https://turkservis.online',
downloads: 'https://turkservis.online/ide', downloads: 'https://turkservis.online/ide',
repository: 'https://gitea.twinpay.one/yilsem/aiturk-hermes-ide', repository: 'https://gitea.turkservis.online/yilsem/aiturk-hermes-ide',
apiBaseUrl: 'https://ai.turkservis.online/v1' apiBaseUrl: 'https://ai.turkservis.online/v1'
}) })
+1 -1
View File
@@ -234,7 +234,7 @@ function downloadInstallScript(ref, destPath) {
// placeholder is a real GitHub commit. // placeholder is a real GitHub commit.
const scriptName = installScriptName() const scriptName = installScriptName()
const refType = isPinnedCommit(ref) ? 'commit' : 'branch' const refType = isPinnedCommit(ref) ? 'commit' : 'branch'
const url = `https://gitea.twinpay.one/yilsem/aiturk-hermes-ide/raw/${refType}/${encodeURIComponent(ref)}/scripts/${scriptName}` const url = `https://gitea.turkservis.online/yilsem/aiturk-hermes-ide/raw/${refType}/${encodeURIComponent(ref)}/scripts/${scriptName}`
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
fs.mkdirSync(path.dirname(destPath), { recursive: true }) fs.mkdirSync(path.dirname(destPath), { recursive: true })
+2 -2
View File
@@ -2,12 +2,12 @@
"name": "aiturk-ide", "name": "aiturk-ide",
"productName": "AITURK IDE", "productName": "AITURK IDE",
"private": true, "private": true,
"version": "1.0.0-beta.27", "version": "1.0.0-beta.28",
"description": "TurkServis resmi yapay zekâ geliştirme ortamı. Hermes Agent tabanlıdır.", "description": "TurkServis resmi yapay zekâ geliştirme ortamı. Hermes Agent tabanlıdır.",
"author": "AITURK / TurkServis", "author": "AITURK / TurkServis",
"repository": { "repository": {
"type": "git", "type": "git",
"url": "git+https://gitea.twinpay.one/yilsem/aiturk-hermes-ide.git" "url": "git+https://gitea.turkservis.online/yilsem/aiturk-hermes-ide.git"
}, },
"type": "module", "type": "module",
"main": "dist/electron-main.mjs", "main": "dist/electron-main.mjs",
@@ -22,7 +22,7 @@ import {
import { ListRow, SectionHeading, SettingsContent } from './primitives' import { ListRow, SectionHeading, SettingsContent } from './primitives'
import { UninstallSection } from './uninstall-section' import { UninstallSection } from './uninstall-section'
const RELEASE_NOTES_URL = 'https://gitea.twinpay.one/yilsem/aiturk-hermes-ide/releases' const RELEASE_NOTES_URL = 'https://gitea.turkservis.online/yilsem/aiturk-hermes-ide/releases'
const INSTALLER_URL = 'https://turkservis.online/ide' const INSTALLER_URL = 'https://turkservis.online/ide'
function relativeTime(ms: number | undefined, a: Translations['settings']['about']) { function relativeTime(ms: number | undefined, a: Translations['settings']['about']) {
@@ -106,7 +106,7 @@ export function AboutSettings() {
<p className="text-sm text-muted-foreground">{copy.about}</p> <p className="text-sm text-muted-foreground">{copy.about}</p>
<div className="flex flex-wrap gap-4 text-sm"> <div className="flex flex-wrap gap-4 text-sm">
<a className="text-primary underline" href={INSTALLER_URL} rel="noreferrer" target="_blank">{copy.downloads}</a> <a className="text-primary underline" href={INSTALLER_URL} rel="noreferrer" target="_blank">{copy.downloads}</a>
<a className="text-primary underline" href="https://gitea.twinpay.one/yilsem/aiturk-hermes-ide" rel="noreferrer" target="_blank">{copy.source}</a> <a className="text-primary underline" href="https://gitea.turkservis.online/yilsem/aiturk-hermes-ide" rel="noreferrer" target="_blank">{copy.source}</a>
</div> </div>
</section> </section>
<div className="flex flex-col items-center gap-3 pt-6 pb-2 text-center"> <div className="flex flex-col items-center gap-3 pt-6 pb-2 text-center">
+1 -1
View File
@@ -65,7 +65,7 @@
}, },
"apps/desktop": { "apps/desktop": {
"name": "aiturk-ide", "name": "aiturk-ide",
"version": "1.0.0-beta.27", "version": "1.0.0-beta.28",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@assistant-ui/core": "0.2.23", "@assistant-ui/core": "0.2.23",
+5 -5
View File
@@ -383,8 +383,8 @@ $script:ResolvedPathReport = @{
# Configuration # Configuration
# ============================================================================ # ============================================================================
$RepoUrlSsh = "https://gitea.twinpay.one/yilsem/aiturk-hermes-ide.git" $RepoUrlSsh = "https://gitea.turkservis.online/yilsem/aiturk-hermes-ide.git"
$RepoUrlHttps = "https://gitea.twinpay.one/yilsem/aiturk-hermes-ide.git" $RepoUrlHttps = "https://gitea.turkservis.online/yilsem/aiturk-hermes-ide.git"
$PythonVersion = "3.11" $PythonVersion = "3.11"
# Minor versions the installer accepts when the requested $PythonVersion isn't # Minor versions the installer accepts when the requested $PythonVersion isn't
# available, in preference order. Only checkout-private uv-managed interpreters # available, in preference order. Only checkout-private uv-managed interpreters
@@ -2417,13 +2417,13 @@ function Install-Repository {
# for. GitHub supports archive URLs for commits, tags, and # for. GitHub supports archive URLs for commits, tags, and
# branches; we honour Commit > Tag > Branch. # branches; we honour Commit > Tag > Branch.
if ($Commit) { if ($Commit) {
$zipUrl = "https://gitea.twinpay.one/yilsem/aiturk-hermes-ide/archive/$Commit.zip" $zipUrl = "https://gitea.turkservis.online/yilsem/aiturk-hermes-ide/archive/$Commit.zip"
$zipLabel = $Commit $zipLabel = $Commit
} elseif ($Tag) { } elseif ($Tag) {
$zipUrl = "https://gitea.twinpay.one/yilsem/aiturk-hermes-ide/archive/$Tag.zip" $zipUrl = "https://gitea.turkservis.online/yilsem/aiturk-hermes-ide/archive/$Tag.zip"
$zipLabel = $Tag $zipLabel = $Tag
} else { } else {
$zipUrl = "https://gitea.twinpay.one/yilsem/aiturk-hermes-ide/archive/$Branch.zip" $zipUrl = "https://gitea.turkservis.online/yilsem/aiturk-hermes-ide/archive/$Branch.zip"
$zipLabel = $Branch $zipLabel = $Branch
} }
$zipPath = "$env:TEMP\hermes-agent-$zipLabel.zip" $zipPath = "$env:TEMP\hermes-agent-$zipLabel.zip"