GitHub - Grazulex/shipmark: Git Release Management Made Easy
Extracto
Git Release Management Made Easy. Contribute to Grazulex/shipmark development by creating an account on GitHub.
Resumen
Resumen Principal
Shipmark se presenta como una herramienta CLI de gestión de lanzamientos (release management) para Git que busca simplificar y automatizar procesos complejos como la generación de changelogs, la gestión de versiones y la creación de etiquetas. Una de sus mayores fortalezas es su diseño de cero dependencias externas, operando exclusivamente con Git nativo, lo que minimiza la complejidad y mejora la fiabilidad. Ofrece un flujo de trabajo altamente interactivo y guiado, permitiendo a los usuarios previsualizar detalladamente todos los cambios antes de ejecutar un lanzamiento, lo que proporciona un control y una confianza inigualables. La herramienta integra una potente capacidad de generación automática de changelogs a partir de Conventional Commits y asegura la aplicación rigurosa del Versionado Semántico (SemVer). Su adaptabilidad se extiende a entornos de Integración y Despliegue Continuo (CI/CD), ofreciendo modos no interactivos y una interfaz de usuario en terminal moderna y visualmente atractiva. En esencia, Shipmark es una solución completa y robusta para optimizar el ciclo de vida de los lanzamientos de software.
Contenido
Shipmark
🚀 Git Release Management Made Easy
Beautiful CLI • Zero Dependencies • Full Control
Automate your release workflow with an interactive CLI that generates changelogs, manages versions, and creates tags—all without external dependencies.
Website • Quick Start • Features • CI/CD • Commands
⚡ Quick Start
# Install globally npm install -g @grazulex/shipmark # Initialize configuration shipmark init # Check release status shipmark status # Create a release (interactive) shipmark release
That's it! Shipmark will guide you through version selection, generate a changelog, create a tag, and push to remote.
✨ Features
🎯 Interactive WorkflowGuided prompts for version bumping with preview of all changes before execution. Never release blind again. |
📝 Automatic ChangelogParses Conventional Commits to generate beautiful, organized changelogs. |
🏷️ Semantic VersioningFull semver support including major, minor, patch, and prerelease versions (alpha, beta, rc). |
🔧 Zero External DependenciesWorks with native Git only. No GitHub CLI, GitLab CLI, or other tools required. |
🤖 CI/CD ReadyNon-interactive mode with auto-detection of version bumps based on commit types. Perfect for pipelines. |
🎨 Beautiful Terminal UIColorful output, spinners, and progress indicators. Release management that feels modern. |
🖥️ Commands
shipmark release
Interactive release workflow with changelog, tag, and push.
shipmark release # Interactive mode shipmark release --dry-run # Preview without executing shipmark release --ci auto # CI mode with auto version detection shipmark release --ci minor # CI mode with specific bump shipmark release -p beta # Create beta prerelease shipmark release --skip-push # Don't push to remote
shipmark status
Check release status before creating a release.
shipmark status # Show pending changes summary shipmark status -v # Include commit details
Example output:
📦 Release Status
──────────────────────────────────────────────────
Branch: main
Package version: 1.2.3
Latest tag: v1.2.3
Working tree: clean
📝 Pending Changes
──────────────────────────────────────────────────
5 commits since v1.2.3
Features 2
Bug Fixes 2
Documentation 1
🚀 Suggested Release
──────────────────────────────────────────────────
Current: 1.2.3
Next: 1.3.0 (minor)
shipmark changelog
Generate or preview changelog.
shipmark changelog # Update CHANGELOG.md shipmark changelog --preview # Preview without writing shipmark changelog --from v1.0.0 # From specific tag
shipmark version
Manage project version.
shipmark version # Show current version shipmark version bump # Interactive bump shipmark version bump minor # Specific bump type shipmark version set 2.0.0 # Set exact version
shipmark tag
Manage Git tags.
shipmark tag list # List all tags shipmark tag latest # Show latest tag shipmark tag create 1.2.0 # Create new tag shipmark tag delete v1.2.0 -r # Delete from local and remote
shipmark history
View release history with dates and commit counts.
shipmark history # Show release history shipmark history -d # Include commit details shipmark history -l 5 # Limit to last 5 releases
Example output:
Release History
──────────────────────────────────────────────────
┌─────────┬────────────┬─────────┐
│ Version │ Date │ Commits │
├─────────┼────────────┼─────────┤
│ 1.3.0 │ 2024-01-15 │ 5 │
├─────────┼────────────┼─────────┤
│ 1.2.0 │ 2024-01-10 │ 8 │
├─────────┼────────────┼─────────┤
│ 1.1.0 │ 2024-01-05 │ 3 │
└─────────┴────────────┴─────────┘
shipmark init
Initialize Shipmark configuration.
shipmark init # Interactive setup shipmark init -y # Use defaults
🤖 CI/CD Integration
Shipmark works seamlessly in CI/CD pipelines with non-interactive mode.
GitHub Actions
name: Release on: workflow_dispatch: inputs: bump: description: 'Version bump type' required: true default: 'auto' type: choice options: - auto - patch - minor - major jobs: release: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - uses: actions/setup-node@v4 with: node-version: '20' - name: Install Shipmark run: npm install -g @grazulex/shipmark - name: Create Release run: shipmark release --ci ${{ inputs.bump }} env: GIT_AUTHOR_NAME: github-actions GIT_AUTHOR_EMAIL: github-actions@github.com GIT_COMMITTER_NAME: github-actions GIT_COMMITTER_EMAIL: github-actions@github.com
CI Mode Options
| Option | Description |
|---|---|
--ci auto |
Auto-detect bump from commits (breaking→major, feat→minor, else→patch) |
--ci patch |
Force patch bump |
--ci minor |
Force minor bump |
--ci major |
Force major bump |
--ci prerelease |
Increment prerelease version |
CI Output Variables
In CI mode, Shipmark outputs variables for pipeline consumption:
SHIPMARK_VERSION=1.3.0 SHIPMARK_TAG=v1.3.0 SHIPMARK_BUMP=minor
⚙️ Configuration
Shipmark uses .shipmarkrc.yml for configuration:
changelog: file: "CHANGELOG.md" includeHash: true includeDate: true version: files: ["package.json"] tagPrefix: "v" tagMessage: "Release {version}" commitMessage: "chore(release): {version}" commits: conventional: true git: push: true pushTags: true signTags: false signCommits: false
📋 Conventional Commits
Shipmark parses Conventional Commits to organize your changelog:
| Prefix | Section | Bump |
|---|---|---|
feat: |
Features | minor |
fix: |
Bug Fixes | patch |
docs: |
Documentation | patch |
refactor: |
Code Refactoring | patch |
perf: |
Performance | patch |
test: |
Tests | patch |
chore: |
Chores | patch |
BREAKING CHANGE: |
major |
🔢 Version Bumping
| Type | Example | When to use |
|---|---|---|
patch |
1.0.0 → 1.0.1 | Bug fixes, minor changes |
minor |
1.0.0 → 1.1.0 | New features (backwards compatible) |
major |
1.0.0 → 2.0.0 | Breaking changes |
prepatch |
1.0.0 → 1.0.1-alpha.1 | Testing a patch |
preminor |
1.0.0 → 1.1.0-alpha.1 | Testing a feature |
premajor |
1.0.0 → 2.0.0-alpha.1 | Testing breaking changes |
prerelease |
1.0.0-alpha.1 → 1.0.0-alpha.2 | Next prerelease iteration |
🚀 Installation
npm (Recommended)
npm install -g @grazulex/shipmark
npx (No install)
npx @grazulex/shipmark release
Verify Installation
📊 Comparison
| Feature | Shipmark | semantic-release | release-it | standard-version |
|---|---|---|---|---|
| Zero Config | ✅ | ❌ | ||
| Interactive Mode | ✅ | ❌ | ✅ | ❌ |
| CI Mode | ✅ | ✅ | ✅ | ✅ |
| No External Deps | ✅ | ❌ | ❌ | |
| Dry Run Preview | ✅ Full | |||
| Status Command | ✅ | ❌ | ❌ | ❌ |
| Actively Maintained | ✅ | ✅ | ✅ | ❌ Deprecated |
🤝 Contributing
Contributions are welcome! Whether it's:
- 🐛 Bug reports
- ✨ Feature requests
- 📝 Documentation improvements
- 🔧 Code contributions
📄 License
MIT © Grazulex
Fuente: GitHub
