image:[Palimpsest-MPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] :toc: macro :toc-title: Contents :toclevels: 3 :icons: font :source-highlighter: rouge :experimental: :url-repo: https://github.com/hyperpolymath/Universal-Project-Manager :url-mirror: https://gitlab.com/overarch-underpin/managers/universal-project-manager
A comprehensive, language-agnostic CI/CD framework that automatically detects project configurations and provides unified scripts for building, testing, linting, and deploying across multiple platforms.
This repository contains a complete, working CI/CD infrastructure framework. Below is a comprehensive breakdown of all implemented components.
Seven production-ready shell scripts comprising ~2,500+ lines of code:
| Script | Functionality | Status |
|---|---|---|
| Auto-detection engine — Scans repositories to identify languages, package managers, test frameworks, and build systems. Outputs results as text or JSON. | ✅ Complete |
| Dependency installer — Installs project dependencies using the detected package manager (npm/yarn/pnpm/bun, pip/pipenv/poetry, bundler, cargo, go modules, maven/gradle, composer, dotnet). | ✅ Complete |
| Unified test runner — Executes tests across all supported frameworks with coverage reporting. Supports | ✅ Complete |
| Code quality checker — Runs language-appropriate linters with optional auto-fix capability. Supports | ✅ Complete |
| Build orchestrator — Compiles/packages projects using detected build systems. Supports | ✅ Complete |
| Event-driven mirror sync — Synchronizes repositories between platforms (GitHub ↔ GitLab). Supports branch and tag propagation, dry-run mode. | ✅ Complete |
| Sync verification — Validates that two remotes are synchronized. Generates detailed verification reports with discrepancy detection. | ✅ Complete |
The detection engine (detect.sh) recognizes:
| JavaScript |
|
| TypeScript |
|
| Python |
|
| Ruby |
|
| Go |
|
| Rust |
|
| Java |
|
| Kotlin |
|
| C |
|
| C++ |
|
| C# |
|
| PHP |
|
| Shell |
|
| Swift |
|
| Ecosystem | Package Managers | Detection Method |
|---|---|---|
Node.js | npm, yarn, pnpm, bun | Lock files ( |
Python | pip, pipenv, poetry | Config files ( |
Ruby | Bundler |
|
Go | Go Modules |
|
Rust | Cargo |
|
Java/Kotlin | Maven, Gradle |
|
PHP | Composer |
|
.NET | NuGet/dotnet |
|
| Language | Frameworks Detected |
|---|---|
JavaScript/TypeScript | Jest, Mocha, Vitest, AVA, npm test scripts |
Python | pytest, unittest, tox, nose |
Ruby | RSpec, Minitest |
Go | go test (built-in) |
Rust | cargo test (built-in) |
Java | JUnit (via Maven/Gradle) |
PHP | PHPUnit |
.NET | xUnit, NUnit, MSTest |
Shell | BATS (Bash Automated Testing System) |
The .github/workflows/ci.yml workflow provides:
Automatic language detection on every push
Matrix testing across multiple OS and language versions
Dependency caching for faster builds
Code coverage reporting (Codecov integration)
Build artifact uploads
Docker image builds
Automatic releases on version tags
Event-driven mirror sync to GitLab
| Component | Description |
|---|---|
| 17 test cases covering language detection, package manager detection, test framework detection, build system detection, PRIMARY_LANGUAGE assignment, and JSON output generation |
| Test orchestrator that runs BATS tests and shellcheck static analysis on all CI scripts. Auto-installs BATS if missing. |
| Document | Purpose |
|---|---|
| Quick start guide with usage examples |
| This comprehensive documentation (AsciiDoc format) |
| Development roadmap from MVP through v2.0 |
| Configuration guide for GitHub/GitLab secrets (SSH keys, tokens) |
| Security policy and vulnerability reporting |
| Contributor Covenant Code of Conduct v2.0 |
| Citation formats for academic/professional use (BibTeX, APA, MLA, etc.) |
┌─────────────────────────────────────────────────────────────────────┐
│ Universal Project Manager │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ ┌───────────────────────────────────────────────────────────┐ │
│ │ Detection Engine │ │
│ │ detect.sh → Languages, Package Managers, Test Frameworks │ │
│ └───────────────────────────┬───────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌───────────────────────────────────────────────────────────┐ │
│ │ Setup Manager │ │
│ │ setup.sh → Install dependencies using detected PM │ │
│ └───────────────────────────┬───────────────────────────────┘ │
│ │ │
│ ┌─────────────────────┼─────────────────────┐ │
│ ▼ ▼ ▼ │
│ ┌───────────┐ ┌───────────┐ ┌───────────┐ │
│ │ Test │ │ Lint │ │ Build │ │
│ │ test.sh │ │ lint.sh │ │ build.sh │ │
│ └───────────┘ └───────────┘ └───────────┘ │
│ │
│ ┌───────────────────────────────────────────────────────────┐ │
│ │ Mirror Sync │ │
│ │ sync-mirror.sh ←→ verify-mirror.sh │ │
│ │ GitHub ←────────────────────────────→ GitLab │ │
│ └───────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────┘cp -r ci-scripts/ /path/to/your/project/
chmod +x /path/to/your/project/ci-scripts/*.sh./ci-scripts/detect.sh[INFO] Detecting project configuration in: /your/project
[SUCCESS] Detection complete!
Languages detected: javascript,typescript
Primary language: javascript
Package managers: npm
Test frameworks: jest
Build systems: npm-scripts,webpack.
├── ci-scripts/
│ ├── detect.sh # Auto-detection engine
│ ├── setup.sh # Dependency installer
│ ├── test.sh # Unified test runner
│ ├── lint.sh # Code quality checker
│ ├── build.sh # Build orchestrator
│ ├── sync-mirror.sh # Mirror synchronization
│ └── verify-mirror.sh # Sync verification
├── tests/
│ ├── test_detect.bats # BATS test suite (17 tests)
│ └── run_tests.sh # Test orchestrator
├── .github/
│ ├── workflows/
│ │ ├── ci.yml # Main CI/CD workflow
│ │ └── codeql.yml # Security scanning
│ └── dependabot.yml # Dependency updates
├── docs/
│ └── CITATIONS.adoc # Citation formats
├── .gitlab-ci.yml # GitLab CI configuration
├── README.adoc # This file
├── README.md # Quick start guide
├── ROADMAP.adoc # Development roadmap
├── SECRETS.md # Secrets configuration
├── SECURITY.md # Security policy
└── CODE_OF_CONDUCT.md # Community guidelines| Variable | Description | Default |
|---|---|---|
| Project root directory | Script’s parent directory |
| CI environment flag |
|
| Enable coverage reporting |
|
| Enable verbose output |
|
| Auto-fix lint issues |
|
| Build mode ( |
|
UPM includes event-driven repository mirroring between GitHub and GitLab.
Generate an SSH key:
ssh-keygen -t ed25519 -C "github-to-gitlab-mirror" -f gitlab_mirror_keyAdd the public key to GitLab as a deploy key with write access
Add secrets to GitHub:
GITLAB_SSH_PRIVATE_KEY: Contents ofgitlab_mirror_keyGITLAB_MIRROR_URL:git@gitlab.com:your/repo.git
Push to main/master to trigger sync
See SECRETS.md for detailed instructions.
See ROADMAP.adoc for the complete development roadmap.
| Milestone | Status |
|---|---|
Core CI scripts | ✅ Complete |
GitHub Actions workflow | ✅ Complete |
GitLab CI configuration | ✅ Complete |
Mirror sync | ✅ Complete |
Documentation | 🔄 In Progress |
Test coverage (80%+) | 📋 Planned |
Configuration file (upm.yml) | 📋 Planned |
CLI wrapper tool | 📋 Planned |
✓ Auto-detection for 10+ languages
✓ GitHub Actions workflow
✓ GitLab CI configuration
✓ Mirror sync support
❏ Configuration file support
❏ CLI wrapper tool
CodeQL — Automated security scanning
Dependabot — Automated dependency updates
SAST — Static Application Security Testing
See SECURITY.md for the security policy.
Contributions are welcome! Please read CODE_OF_CONDUCT.md first.
Fork the repository
Create a feature branch
Make your changes
Run tests:
./tests/run_tests.shSubmit a pull request