Skip to content

Commit 4578fa2

Browse files
Jonathan D.A. Jewellclaude
andcommitted
chore: sync template files and configuration
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent a6588f0 commit 4578fa2

1 file changed

Lines changed: 246 additions & 0 deletions

File tree

README.md

Lines changed: 246 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,246 @@
1+
# Universal Project Manager
2+
3+
[![CI](https://github.com/hyperpolymath/Universal-Project-Manager/actions/workflows/ci.yml/badge.svg)](https://github.com/hyperpolymath/Universal-Project-Manager/actions/workflows/ci.yml)
4+
[![CodeQL](https://github.com/hyperpolymath/Universal-Project-Manager/actions/workflows/codeql.yml/badge.svg)](https://github.com/hyperpolymath/Universal-Project-Manager/actions/workflows/codeql.yml)
5+
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
6+
7+
A comprehensive, language-agnostic CI/CD framework that automatically detects project configurations and provides unified scripts for building, testing, and deploying across multiple platforms.
8+
9+
## Features
10+
11+
- **Auto-Detection**: Automatically detects programming languages, package managers, test frameworks, and build systems
12+
- **Multi-Language Support**: JavaScript/TypeScript, Python, Ruby, Go, Rust, Java/Kotlin, C/C++, C#, PHP, and more
13+
- **Platform Agnostic**: Works with GitHub Actions and GitLab CI out of the box
14+
- **Mirror Sync**: Event-driven repository mirroring between platforms
15+
- **Unified Scripts**: Single set of scripts that work across all CI platforms
16+
17+
## Quick Start
18+
19+
### 1. Copy CI Scripts
20+
21+
Copy the `ci-scripts/` directory to your project:
22+
23+
```bash
24+
cp -r ci-scripts/ /path/to/your/project/
25+
chmod +x /path/to/your/project/ci-scripts/*.sh
26+
```
27+
28+
### 2. Run Detection
29+
30+
```bash
31+
./ci-scripts/detect.sh
32+
```
33+
34+
Output:
35+
```
36+
[INFO] Detecting project configuration in: /your/project
37+
[SUCCESS] Detection complete!
38+
39+
Languages detected: javascript,typescript
40+
Primary language: javascript
41+
Package managers: npm
42+
Test frameworks: jest
43+
Build systems: npm-scripts,webpack
44+
```
45+
46+
### 3. Setup Dependencies
47+
48+
```bash
49+
./ci-scripts/setup.sh
50+
```
51+
52+
### 4. Run Tests
53+
54+
```bash
55+
./ci-scripts/test.sh --coverage
56+
```
57+
58+
### 5. Lint Code
59+
60+
```bash
61+
./ci-scripts/lint.sh
62+
# Or with auto-fix:
63+
./ci-scripts/lint.sh --fix
64+
```
65+
66+
### 6. Build
67+
68+
```bash
69+
./ci-scripts/build.sh --release
70+
```
71+
72+
## CI Scripts Reference
73+
74+
| Script | Description | Options |
75+
|--------|-------------|---------|
76+
| `detect.sh` | Detects project configuration | `json` - Output as JSON |
77+
| `setup.sh` | Installs project dependencies | - |
78+
| `test.sh` | Runs test suites | `--coverage`, `--verbose`, `--ci` |
79+
| `lint.sh` | Runs code linters | `--fix`, `--verbose` |
80+
| `build.sh` | Builds the project | `--release`, `--debug` |
81+
| `sync-mirror.sh` | Syncs to mirror repository | `--mirror-url`, `--dry-run` |
82+
| `verify-mirror.sh` | Verifies mirror sync | `--source`, `--mirror` |
83+
84+
## Supported Languages
85+
86+
| Language | Package Manager | Test Framework | Linter |
87+
|----------|----------------|----------------|--------|
88+
| JavaScript/TypeScript | npm, yarn, pnpm, bun | Jest, Mocha, Vitest, AVA | ESLint, Prettier |
89+
| Python | pip, pipenv, poetry | pytest, unittest, tox | Ruff, Flake8, Black, mypy |
90+
| Ruby | Bundler | RSpec, Minitest | RuboCop |
91+
| Go | Go Modules | go test | golangci-lint, go vet |
92+
| Rust | Cargo | cargo test | clippy, rustfmt |
93+
| Java/Kotlin | Maven, Gradle | JUnit | Checkstyle, SpotBugs |
94+
| C/C++ | CMake, Make | - | clang-format |
95+
| C#/.NET | NuGet | xUnit, NUnit | dotnet format |
96+
| PHP | Composer | PHPUnit | PHP-CS-Fixer, PHPStan |
97+
98+
## CI/CD Integration
99+
100+
### GitHub Actions
101+
102+
The included `.github/workflows/ci.yml` provides:
103+
104+
- Automatic language detection
105+
- Matrix testing across OS and language versions
106+
- Dependency caching
107+
- Code coverage reporting
108+
- Build artifact uploads
109+
- Docker image builds
110+
- Automatic releases on tags
111+
- Event-driven mirror sync
112+
113+
### GitLab CI
114+
115+
The included `.gitlab-ci.yml` provides:
116+
117+
- Language-specific job templates
118+
- Parallel test execution
119+
- Coverage reporting
120+
- Container Registry integration
121+
- GitLab Pages deployment
122+
- Release automation
123+
124+
## Repository Mirroring
125+
126+
### Setup (GitHub to GitLab)
127+
128+
1. Generate an SSH key:
129+
```bash
130+
ssh-keygen -t ed25519 -C "github-to-gitlab-mirror" -f gitlab_mirror_key
131+
```
132+
133+
2. Add the public key to GitLab as a deploy key with write access
134+
135+
3. Add secrets to GitHub:
136+
- `GITLAB_SSH_PRIVATE_KEY`: Contents of `gitlab_mirror_key`
137+
- `GITLAB_MIRROR_URL`: `git@gitlab.com:your/repo.git`
138+
139+
4. Push to main/master to trigger sync
140+
141+
See [SECRETS.md](SECRETS.md) for detailed instructions.
142+
143+
## Project Structure
144+
145+
```
146+
.
147+
├── ci-scripts/
148+
│ ├── detect.sh # Project detection
149+
│ ├── setup.sh # Dependency setup
150+
│ ├── test.sh # Test runner
151+
│ ├── lint.sh # Linter runner
152+
│ ├── build.sh # Build script
153+
│ ├── sync-mirror.sh # Mirror sync
154+
│ └── verify-mirror.sh # Mirror verification
155+
├── tests/
156+
│ ├── test_detect.bats # BATS tests
157+
│ └── run_tests.sh # Test runner
158+
├── .github/
159+
│ ├── workflows/
160+
│ │ ├── ci.yml # Main CI workflow
161+
│ │ └── codeql.yml # Security scanning
162+
│ └── dependabot.yml # Dependency updates
163+
├── .gitlab-ci.yml # GitLab CI config
164+
├── TODO.md # Project TODO list
165+
├── SECRETS.md # Secrets documentation
166+
├── ROADMAP.adoc # Project roadmap
167+
└── README.md # This file
168+
```
169+
170+
## Configuration
171+
172+
### Environment Variables
173+
174+
| Variable | Description | Default |
175+
|----------|-------------|---------|
176+
| `PROJECT_ROOT` | Project root directory | Script's parent dir |
177+
| `CI` | CI environment flag | `false` |
178+
| `COVERAGE` | Enable coverage reporting | `false` |
179+
| `VERBOSE` | Enable verbose output | `false` |
180+
| `FIX` | Auto-fix lint issues | `false` |
181+
| `BUILD_MODE` | Build mode (`release`/`debug`) | `release` |
182+
183+
### Future: Configuration File
184+
185+
Support for a `upm.yml` configuration file is planned:
186+
187+
```yaml
188+
version: 1
189+
190+
project:
191+
name: my-project
192+
type: nodejs # Override auto-detection
193+
194+
ci:
195+
test:
196+
coverage: true
197+
parallel: true
198+
lint:
199+
fix: false
200+
```
201+
202+
## Security
203+
204+
- **CodeQL**: Automated security scanning
205+
- **Dependabot**: Automated dependency updates
206+
- **SAST**: Static Application Security Testing
207+
208+
See [SECURITY.md](SECURITY.md) for security policy.
209+
210+
## Contributing
211+
212+
Contributions are welcome! Please read [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md) first.
213+
214+
1. Fork the repository
215+
2. Create a feature branch
216+
3. Make your changes
217+
4. Run tests: `./tests/run_tests.sh`
218+
5. Submit a pull request
219+
220+
## Roadmap
221+
222+
See [ROADMAP.adoc](ROADMAP.adoc) for the full roadmap.
223+
224+
### MVP v1.0 Goals
225+
226+
- [x] Auto-detection for 10+ languages
227+
- [x] GitHub Actions workflow
228+
- [x] GitLab CI configuration
229+
- [x] Mirror sync support
230+
- [ ] Configuration file support
231+
- [ ] CLI wrapper tool
232+
233+
## License
234+
235+
This project is licensed under the MIT License - see [LICENSE](LICENSE) for details.
236+
237+
## Acknowledgments
238+
239+
- Inspired by the need for unified CI/CD across multiple platforms
240+
- Thanks to all contributors and users
241+
242+
---
243+
244+
**Note**: This project is mirrored between:
245+
- GitHub: https://github.com/hyperpolymath/Universal-Project-Manager
246+
- GitLab: https://gitlab.com/overarch-underpin/managers/universal-project-manager

0 commit comments

Comments
 (0)