2026-02-06 16:12:41 +00:00
|
|
|
- Focus on CLI usage in CI environments.
|
|
|
|
|
- Show GitLab CI, GitHub CI and Gitea CI examples.
|
|
|
|
|
|
|
|
|
|
## Architecture
|
|
|
|
|
|
|
|
|
|
szci is a thin orchestrator that delegates heavy lifting to specialized tools:
|
|
|
|
|
- **Docker**: Delegates all operations to `@git.zone/tsdocker` via `npx`
|
|
|
|
|
- **NPM**: Thin wrapper around `pnpm` with .npmrc generation from `SZCI_TOKEN_NPM*` env vars
|
|
|
|
|
- **Node.js**: NVM-based version management (stable=22, lts=20, legacy=18)
|
|
|
|
|
- **SSH**: Deploys SSH keys from `SZCI_SSHKEY_*` env vars
|
|
|
|
|
- **Git**: GitHub mirroring via `SZCI_GIT_GITHUBTOKEN`
|
|
|
|
|
- **Cloudly**: Integration with serve.zone infrastructure
|
|
|
|
|
|
|
|
|
|
## Docker Env Var Bridging
|
|
|
|
|
|
|
|
|
|
szci bridges its own env var format to tsdocker's format before delegation:
|
|
|
|
|
- `SZCI_LOGIN_DOCKER*` -> `DOCKER_REGISTRY_N` (pipe-delimited: `url|user|pass`)
|
|
|
|
|
- GitLab CI: `CI_JOB_TOKEN` -> `DOCKER_REGISTRY_0` for `registry.gitlab.com`
|
2025-12-13 13:27:51 +00:00
|
|
|
|
|
|
|
|
## Deno Migration Status
|
|
|
|
|
|
|
|
|
|
The project has been fully migrated from Node.js to Deno runtime.
|
|
|
|
|
|
|
|
|
|
### Environment Variables
|
|
|
|
|
|
|
|
|
|
All environment variables have been rebranded from NPMCI_* to SZCI_*:
|
|
|
|
|
|
|
|
|
|
| Old Name | New Name |
|
|
|
|
|
|----------|----------|
|
|
|
|
|
| `NPMCI_COMPUTED_REPOURL` | `SZCI_COMPUTED_REPOURL` |
|
|
|
|
|
| `NPMCI_URL_CLOUDLY` | `SZCI_URL_CLOUDLY` |
|
|
|
|
|
| `NPMCI_GIT_GITHUBTOKEN` | `SZCI_GIT_GITHUBTOKEN` |
|
|
|
|
|
| `NPMCI_GIT_GITHUBGROUP` | `SZCI_GIT_GITHUBGROUP` |
|
|
|
|
|
| `NPMCI_GIT_GITHUB` | `SZCI_GIT_GITHUB` |
|
|
|
|
|
| `NPMCI_SSHKEY_*` | `SZCI_SSHKEY_*` |
|
|
|
|
|
| `NPMCI_LOGIN_DOCKER*` | `SZCI_LOGIN_DOCKER*` |
|
|
|
|
|
| `NPMCI_TOKEN_NPM*` | `SZCI_TOKEN_NPM*` |
|
|
|
|
|
| `NPMTS_TEST` | `SZCI_TEST` |
|
|
|
|
|
| `DEBUG_NPMCI` | `DEBUG_SZCI` |
|
|
|
|
|
|
|
|
|
|
### Runtime
|
|
|
|
|
|
|
|
|
|
- Uses Deno APIs (`Deno.env`, `Deno.cwd`, `Deno.exit`)
|
|
|
|
|
- Logger runtime set to 'deno'
|
2026-02-06 16:12:41 +00:00
|
|
|
- Dynamic imports use `.ts` extensions
|
|
|
|
|
|
|
|
|
|
## Removed Modules (v7+)
|
|
|
|
|
|
|
|
|
|
The following were removed as dead/obsolete code:
|
|
|
|
|
- `mod_trigger` - Deprecated GitLab API v3
|
|
|
|
|
- `mod_precheck` - GitLab-specific runner tag validation
|
|
|
|
|
- `manager.cloudron` - Niche Cloudron deployment
|
|
|
|
|
- `mod_command` - Trivial bash wrapper
|
|
|
|
|
- `mod_clean` - Trivial config cleanup
|
|
|
|
|
- Docker manager internals (Dockerfile, DockerRegistry, RegistryStorage classes) - replaced by tsdocker delegation
|