diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml new file mode 100644 index 0000000..531cc61 --- /dev/null +++ b/.gitea/workflows/ci.yml @@ -0,0 +1,88 @@ +# AITURK IDE ajan CI (kart turkservis-20261007-1421-2). +# +# 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: + push: + branches: + - aiturk/main + - fix/ide-windows-vcruntime + workflow_dispatch: + +permissions: + contents: read + +jobs: + approval-gate-windows: + runs-on: windows-latest + timeout-minutes: 40 + steps: + - name: Kaynagi al + uses: actions/checkout@v4 + with: + github-server-url: https://gitea.twinpay.one + + - name: Ortami kur + shell: powershell + run: | + $ErrorActionPreference = 'Stop' + "kosucu: $env:COMPUTERNAME / $env:USERNAME" + "checkout SHA: $(git rev-parse HEAD) / beklenen: $env:GITHUB_SHA" + $py = $null + $launcher = Get-Command py -ErrorAction SilentlyContinue + if ($launcher) { $py = (& $launcher.Source -3 -c 'import sys; print(sys.executable)').Trim() } + if (-not $py) { + $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: | + $ErrorActionPreference = 'Continue' + $env:PYTHONDONTWRITEBYTECODE = '1' + $env:PYTHONUTF8 = '1' + $venv = "$env:RUNNER_TEMP\ci-venv\Scripts\python.exe" + $f = 'tests/tools/test_file_write_safety.py' + $sayilmayan = @( + "${f}::TestCheckSensitivePathMacOSBypass::test_etc_hosts_blocked", + "${f}::TestCheckSensitivePathMacOSBypass::test_private_etc_hosts_blocked", + "${f}::TestCheckSensitivePathMacOSBypass::test_private_etc_ssh_config_blocked", + "${f}::TestCheckSensitivePathMacOSBypass::test_private_var_blocked", + "${f}::TestCheckSensitivePathMacOSBypass::test_boot_still_blocked", + "${f}::TestAtomicWrite::test_patch_routes_through_atomic_write", + "${f}::TestProtectedInstructionFiles::test_symlink_to_protected_file_is_gated" + ) + $deselect = @() + foreach ($t in $sayilmayan) { $deselect += '--deselect'; $deselect += $t } + "CI OZETI: Windows'ta sayilmayan (deselect) test sayisi: $($sayilmayan.Count)" + $sayilmayan | ForEach-Object { " sayilmadi: $_" } + & $venv -m pytest tests/tools/test_protected_instruction_unattended.py $f ` + tests/tools/test_computer_use_approval_isolation.py tests/cli/test_cli_approval_ui.py ` + tests/cli/test_single_query_session_finalize.py @deselect -q -p no:cacheprovider -rf + $kod = $LASTEXITCODE + "pytest cikis kodu: $kod" + exit $kod