Files
OpenShell/.gitignore
Jorge e2939b919d feat(e2e): run the Kubernetes e2e suite on cargo-nextest with machine- and human-readable reports (#3344)
* feat(e2e): run kubernetes suite on cargo-nextest with JUnit/HTML reports

Switch e2e:kubernetes (and all its variants) from `cargo test` to
`cargo nextest run` for per-test process isolation and output consistent
with the other nextest-based CI runs.

- Add a dedicated `e2e-kubernetes` nextest profile with a JUnit report and a
  generous slow-timeout (60s flag, 5-min terminate) suited to live-cluster
  tests; kept separate from `ci` so its JUnit path and timeouts don't affect
  the workspace run.
- Pin `--target-dir` for the run so the profile's relative JUnit path resolves
  to the repo-root results/ regardless of any inherited CARGO_TARGET_DIR
  (nextest ignores absolute JUnit paths).
- Render the JUnit XML to a standalone HTML report via xsltproc and a committed
  XSLT stylesheet (best-effort; never masks the test exit code).
- Name each report via `OPENSHELL_E2E_REPORT_NAME` (default `e2e-kubernetes`),
  used verbatim for both the `results/<name>.{xml,html}` filenames and the HTML
  heading. Tasks that invoke the script multiple times in one run set a distinct
  name per invocation so the reports no longer clobber the single fixed path:
  the credential-driver runs write results/e2e-kubernetes-secrets.xml and
  -vault.xml, and e2e:kubernetes:agent-sandbox-versions writes
  results/e2e-kubernetes-agent-sandbox-v1beta1.xml and -v1alpha1.xml.
- Declare cargo-nextest in mise [tools] so the task runs without the Nix shell.
- Ignore the results/ output directory.

The results/ reports do not leak information. They are gitignored and no
workflow uploads them as artifacts, so they stay on the ephemeral CI runner
and are discarded when it is torn down. The HTML template renders only test
names, status, timings, and failure messages (no captured stdout/stderr).
Moving from `cargo test -- --nocapture` to nextest's captured, failure-only
output also reduces what lands in the retained, viewable console logs.

Signed-off-by: Jorge Garcia Oncins <jgarciao@redhat.com>

* chore(e2e): revert per-lane report names for agent-sandbox-versions

The agent-sandbox-versions task runs two lanes sequentially against the
same cluster: v0.5.0 (v1beta1 storage version) then v0.4.6 (v1alpha1).
On a reused cluster the second lane fails when kubectl applies the older
CRD, because Kubernetes refuses to drop v1beta1 from spec.versions while
it remains in status.storedVersions (the storage-version downgrade
guardrail). This is a pre-existing issue with the v0.4.6 lane, unrelated
to the nextest reporting work.

The per-lane OPENSHELL_E2E_REPORT_NAME additions do not address that
downgrade failure, so revert them to keep this PR scoped to the nextest
change. Agent Sandbox 0.4.x is also superseded (1.0.0 is published);
dropping or bumping the v1alpha1 lane is left as a follow-up.

Signed-off-by: Jorge Garcia Oncins <jgarciao@redhat.com>

---------

Signed-off-by: Jorge Garcia Oncins <jgarciao@redhat.com>
2026-09-18 15:50:03 +00:00

248 lines
3.8 KiB
Plaintext

# =============================================================================
# Rust
# =============================================================================
# Build output
/target/
e2e/rust/target/
target/
# Test result artifacts (JUnit XML, etc.)
/results/
debug/
release/
# Cargo lock for libraries (keep for binaries/workspace)
# Cargo.lock # We keep this since this is a binary/workspace project
# Generated code
*.rs.bk
# Profiling
*.profraw
*.profdata
# =============================================================================
# Python
# =============================================================================
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class
# C extensions
*.so
# Distribution / packaging
.Python
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST
python/*.data
# Virtual environments
.venv/
venv/
ENV/
env/
# .python-version is tracked — pins uv to match the sandbox base image Python
# Installer logs
pip-log.txt
pip-delete-this-directory.txt
# Unit test / coverage reports
coverage.out
coverage/
htmlcov/
# Trivy scan reports (tasks/scripts/trivy-scan-*.sh)
/reports/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
*.py,cover
.hypothesis/
.pytest_cache/
pytestdebug.log
# Translations
*.mo
*.pot
# mypy
.mypy_cache/
.dmypy.json
dmypy.json
# Ruff
.ruff_cache/
# Type stubs
.pytype/
# Cython debug symbols
cython_debug/
# Generated Python protobuf stubs (keep package marker)
python/openshell/_proto/*
!python/openshell/_proto/__init__.py
# =============================================================================
# IDE / Editor
# =============================================================================
# VSCode
.vscode/
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
# JetBrains
.idea/
*.iml
*.ipr
*.iws
out/
# Vim
*.swp
*.swo
*~
# Emacs
*~
\#*\#
/.emacs.desktop
/.emacs.desktop.lock
*.elc
auto-save-list
tramp
.\#*
# =============================================================================
# Agent tooling
# =============================================================================
# Local agent state and configuration
.codex/
.pi/
.claude/settings.local.json
.claude/worktrees/
# =============================================================================
# OS
# =============================================================================
# macOS
.DS_Store
.AppleDouble
.LSOverride
._*
# Windows
Thumbs.db
ehthumbs.db
Desktop.ini
# Linux
*~
# =============================================================================
# Project-specific
# =============================================================================
# Local configuration
*.local
.env
.env.*
!.env.example
# Logs
*.log
logs/
# Temporary files
tmp/
temp/
*.tmp
e2e/gpu/images/.build/
# Ansible Galaxy roles
/tests/ansible/.roles/
# Secrets/credentials (should never be committed)
*.pem
*.key
*.crt
secrets/
credentials/
kubeconfig
# Documentation build output
_build/
# Gateway microVM rootfs build artifacts
rootfs/
# Docker build artifacts (image tarballs, packaged helm charts)
deploy/docker/.build/
# Helm subchart tarballs (regenerated by `helm dependency build`)
deploy/helm/openshell/charts/
# SBOM generated output (JSON, CSV) — release artifacts, not committed
deploy/sbom/output/
# Debian package build output (default OPENSHELL_OUTPUT_DIR for tasks/scripts/package-deb.sh)
artifacts/
# Local mise settings
mise.local.toml
# Ignore plans for now
architecture/plans
rfc.md
.worktrees
.z3-trace
# RPM build artifacts
*.src.rpm
*.tar.gz
*.tar.xz
*.tar.bz2
# Snap build artifacts
*.snap
*.comp
# Markdown/mermaid lint tooling deps
scripts/lint-mermaid/node_modules/
# Nix
/result
/result-*