Absortio

Email → Summary → Bookmark → Email

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 Logo

Shipmark

🚀 Git Release Management Made Easy

Beautiful CLI • Zero Dependencies • Full Control

npm version License: MIT PRs Welcome Website

Automate your release workflow with an interactive CLI that generates changelogs, manages versions, and creates tags—all without external dependencies.

WebsiteQuick StartFeaturesCI/CDCommands


⚡ 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 Workflow

Guided prompts for version bumping with preview of all changes before execution. Never release blind again.

📝 Automatic Changelog

Parses Conventional Commits to generate beautiful, organized changelogs.

🏷️ Semantic Versioning

Full semver support including major, minor, patch, and prerelease versions (alpha, beta, rc).

🔧 Zero External Dependencies

Works with native Git only. No GitHub CLI, GitLab CLI, or other tools required.

🤖 CI/CD Ready

Non-interactive mode with auto-detection of version bumps based on commit types. Perfect for pipelines.

🎨 Beautiful Terminal UI

Colorful 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: ⚠️ Breaking Changes 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 ⚠️ Limited ⚠️ Limited ⚠️ Limited
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