Commit Graph

23 Commits

Author SHA1 Message Date
Simone 8be5fa8220 fix(ci): build-nsInnoUnp uses host-side clone (SSH alias is host-only)
repo-url is ssh://gitea-ci/... — an SSH alias defined only in the
host ~/.ssh/config. With the new in-guest-clone default the guest
tried to resolve `gitea-ci` and failed (name resolution). Set
use-git-clone:'false' so the host (which has the alias + SSH key)
performs the clone.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-17 17:24:00 +02:00
Simone 0d51ba29b6 fix(ci): build-nsInnoUnp uses full Gitea action URL
Short-form `Simone/local-ci-cd-system/...@main` resolved to
github.com (DEFAULT_ACTIONS_URL=github) -> "authentication required:
Repository not found". Use the full gitea.emulab.it URL like
self-test.yml.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-17 17:14:23 +02:00
Simone 29dfbf1cae feat(job): wire use-git-clone + submodules; default in-guest clone
Lint / pssa (push) Failing after 26s
Lint / python (push) Successful in 54s
The job command previously discarded --use-git-clone and --submodules
(`del`) and always in-guest cloned with submodules off — making both
action inputs dead no-ops (submodule repos silently broken).

- job.py: --use-git-clone/--host-clone and --submodules/--no-submodules
  are real booleans defaulting to ON. Default = in-guest clone with
  submodules. --host-clone clones on the host into a temp dir
  (_host_clone) and transfers a zip; temp dir cleaned in finally.
  clone_submodules now honoured (was hardcoded False).
- action.yml: use-git-clone / submodules default 'true'; forward the
  explicit positive/negative flag so the Python default is overridden
  deterministically.
- self-test.yml: add smoke-{windows,linux}-hostclone jobs covering the
  host-side transport (default jobs already cover in-guest).
- tests: default-transport, host-clone, and --no-submodules coverage.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-17 17:00:46 +02:00
Simone d6031a5e32 refactor(ci): drop upload/download-artifact (remove github.com dependency)
actions/upload-artifact and download-artifact run code fetched from
github.com (and v4 is GHES-incompatible, v3 deprecated). The runner
host is single with a shared filesystem, so the orchestrator's
host-side collect dir is the artifact handoff:

- action.yml: replace the two upload-artifact steps with
  host-path report steps; artifacts stay under F:\CI\Artifacts and
  are aged by Invoke-RetentionPolicy.ps1.
- build-nsInnoUnp.yml: release job reads
  F:\CI\Artifacts\{run_id}-{run_attempt}-{target} directly instead of
  download-artifact; existing Gitea REST release-asset upload unchanged.

Tradeoff (accepted): artifacts are no longer downloadable from the
Gitea Actions run page for non-tag builds — only on host disk, and as
release assets for tagged builds.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-17 16:42:36 +02:00
Simone 0726829c5c fix(ci): lint must use an ephemeral venv, not the production one
Lint / pssa (push) Failing after 30s
Lint / python (push) Successful in 1m2s
The python lint job set VENV_DIR=F:\CI\python\venv (the shared
orchestrator venv) and ran `pip install -e ".[dev]"`. Every lint run
repointed ci_orchestrator at the lint job's transient checkout; once
act_runner cleaned that dir, all later smoke/build jobs failed with
"No module named ci_orchestrator". Use a job-local venv under
github.workspace, rebuilt fresh each run.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-17 15:44:36 +02:00
Simone 5371ffe48a fix(ci): downgrade artifact actions v4 -> v3 for Gitea compat
Gitea act_runner reports as GHES; @actions/artifact v2 (upload/
download-artifact@v4) uses the Twirp API Gitea does not implement,
failing with GHESNotSupportedError. v3 uses the artifact protocol
Gitea supports.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-17 11:56:40 +02:00
Simone af25358b5b ci: update artifact upload actions to use standard upload-artifact action 2026-05-17 02:15:36 +02:00
Simone ea29203f37 ci: update action references to local-ci-cd-system in workflows and action files 2026-05-17 01:37:03 +02:00
Simone 935b212d1a ci: sposta self-test.yml e build-nsInnoUnp.yml in .gitea/workflows 2026-05-17 00:29:11 +02:00
Simone 4b70172c52 ci: aggiungi workflow_dispatch (trigger manuale) a lint.yml
Lint / pssa (push) Successful in 23s
Lint / python (push) Successful in 26s
2026-05-17 00:23:56 +02:00
Simone 451a61c6a1 test: bump coverage gate from 80%% to 90%%
Lint / python (push) Failing after 22s
Lint / pssa (push) Successful in 25s
Update --cov-fail-under in lint workflow + docs (AGENTS, README, ARCHITECTURE). Note: A5 closeout reported 80.10%% so this run will likely fail until additional tests are added.
2026-05-14 23:04:56 +02:00
Simone 4f656725bf ci(lint): use CI_PYTHON_LAUNCHER from runner config as single source of truth
Lint / pssa (push) Successful in 24s
Lint / python (push) Successful in 22s
Configure system Python path once in runner/config.yaml (runner.envs) instead of probing N candidate locations in the workflow. Workflow now fails fast with a clear error if the env is unset or points to a missing file. Document the new env in AGENTS.md.
2026-05-14 22:56:51 +02:00
Simone 3c62bbbcbb ci(lint): add Python314 to launcher candidates (host has 3.14.5)
Lint / pssa (push) Successful in 24s
Lint / python (push) Successful in 1m0s
Reorder candidates to put C:\Program Files\Python314 first (verified install path on the production host). Drop py.exe -3.11 hint to plain -3 since host has only 3.14.
2026-05-14 22:53:16 +02:00
Simone 6e0d0cba88 ci(lint): probe multiple Python launcher locations for SYSTEM runner
Lint / python (push) Failing after 10s
Lint / pssa (push) Successful in 24s
act_runner SYSTEM context may not have py.exe or python.exe in PATH. Try a list of common install paths (C:\Python3XX, Program Files, LocalAppData) and allow override via CI_PYTHON_LAUNCHER env var.
2026-05-14 22:51:22 +02:00
Simone 38898a3c21 ci(lint): fix broken-venv probe (AGENTS.md #12 stderr trap)
Lint / python (push) Failing after 11s
Lint / pssa (push) Successful in 24s
Native stderr from a broken python.exe shim ('No Python at ...') becomes a terminating exception under \Continue='Stop' BEFORE \0 can be read. Wrap the probe in try/catch + SilentlyContinue.
2026-05-14 22:50:29 +02:00
Simone 0c7c9272ee ci(lint): detect broken venv (stale base interpreter) and rebuild
Lint / python (push) Failing after 8s
Lint / pssa (push) Successful in 24s
The venv at F:\CI\python\venv may exist but be broken if its pyvenv.cfg points to a deleted base interpreter (e.g. a stale actions/setup-python tool_cache). Detect this by running 'python --version' and rebuild the venv with py.exe -3.11 if it fails.
2026-05-14 22:48:46 +02:00
Simone 406c0e31a9 ci(lint): bootstrap venv via py.exe launcher; bump coverage to 80%
Lint / python (push) Failing after 18s
Lint / pssa (push) Successful in 24s
act_runner runs as SYSTEM and does not have plain 'python' in PATH; use py.exe launcher (-3.11) to bootstrap the venv when missing. The production venv at F:\CI\python\venv normally already exists, so the bootstrap is just a fallback. Also align coverage threshold to 80% (raised in A5, see AGENTS.md).
2026-05-14 22:46:13 +02:00
Simone 632d668327 ci(lint): tweak comment header to trigger workflow re-run
Lint / python (push) Failing after 9s
Lint / pssa (push) Successful in 25s
2026-05-14 22:43:55 +02:00
Simone 484a18efd7 ci(lint): drop actions/setup-python; use host Python in machine PATH
The runner's act_runner runs as SYSTEM, which only sees the Machine PATH.
Host has Python 3.14 installed at C:\Program Files\Python314\; once that
path is added to the machine PATH (one-time admin op) the simple
Get-Command python lookup works without network downloads.
2026-05-14 18:34:03 +02:00
Simone e09c0cf5a5 ci(lint): update PSScriptAnalyzer invocation to use custom settings file 2026-05-14 18:34:02 +02:00
Simone 81c85beb81 ci: remove Python setup step from lint workflow 2026-05-14 18:34:02 +02:00
Simone 8a2727ccf7 ci(lint): use actions/setup-python to provision Python on runner
The act_runner service account doesn't have python in PATH. Delegating
to actions/setup-python@v5 which downloads/caches Python 3.11 reliably.

Also bump timeout-minutes 15 -> 20 to absorb first-run pip install.
2026-05-14 18:34:02 +02:00
Simone 305ee6fa8b ci: move lint.yml to .gitea/workflows so Gitea Actions discovers it
Gitea Actions only scans .gitea/workflows/ and .github/workflows/. The
file under gitea/workflows/ (no leading dot) was never picked up. Other
files in gitea/workflows/ remain as templates copied into consumer repos.
2026-05-14 18:34:02 +02:00