All Projects → ucwaldo → expublish

ucwaldo / expublish

Licence: Apache-2.0 License
Automates semantic release versioning and best practices for elixir packages.

Programming Languages

elixir
2628 projects

Projects that are alternatives of or similar to expublish

bump
🌻 CLI tool to draft a GitHub Release for the next semantic version
Stars: ✭ 40 (+135.29%)
Mutual labels:  semantic-versioning, release-automation
Axion Release Plugin
Gradle release & version management plugin.
Stars: ✭ 372 (+2088.24%)
Mutual labels:  semantic-versioning, release-automation
gradle-release-plugin
Gradle plugin providing very minimal release version numbering (Git-specific)
Stars: ✭ 43 (+152.94%)
Mutual labels:  semantic-versioning, release-automation
agala
Full featured messaging bot framework.
Stars: ✭ 70 (+311.76%)
Mutual labels:  hex
github-create-release-action
Create a GitHub release from a Tag
Stars: ✭ 33 (+94.12%)
Mutual labels:  release-automation
utils.js
👷 🔧 zero dependencies vanilla JavaScript utils.
Stars: ✭ 14 (-17.65%)
Mutual labels:  hex
elixir git hooks
🪝 Add git hooks to Elixir projects
Stars: ✭ 98 (+476.47%)
Mutual labels:  hex
simple-commit-message
Simple commit message wizard and validator; works with commitizen and pre-git
Stars: ✭ 21 (+23.53%)
Mutual labels:  semantic-versioning
changie
Automated changelog tool for preparing releases with lots of customization options
Stars: ✭ 180 (+958.82%)
Mutual labels:  release-automation
simple graphql client
SimpleGraphqlClient is a graphql client, focused on simplicity and ease of use.
Stars: ✭ 17 (+0%)
Mutual labels:  hex
sv
libsv - Public domain cross-platform semantic versioning in c99
Stars: ✭ 46 (+170.59%)
Mutual labels:  semantic-versioning
gleam compile
Tiny hex package to make the development experience of using gleam in elixir (and especially phoenix projects) better.
Stars: ✭ 29 (+70.59%)
Mutual labels:  hex
colors-convert
🦚 A simple colors library
Stars: ✭ 15 (-11.76%)
Mutual labels:  hex
hex-to-css-filter
Easy way to generate colors from HEX to CSS Filters
Stars: ✭ 20 (+17.65%)
Mutual labels:  hex
colorsys.rs
Lib for modifying colors and converting to other spaces
Stars: ✭ 28 (+64.71%)
Mutual labels:  hex
color
A library of well-tested helper methods for working with colors.
Stars: ✭ 13 (-23.53%)
Mutual labels:  hex
git-semver
a small cli tool to version your git repository with semantic versioning
Stars: ✭ 19 (+11.76%)
Mutual labels:  semantic-versioning
action-snapcraft
🐦 GitHub Action for setting up Snapcraft
Stars: ✭ 34 (+100%)
Mutual labels:  release-automation
HexPatternView
Create Beautiful hex design View.
Stars: ✭ 44 (+158.82%)
Mutual labels:  hex
hex.vim
nifty functions for your Elixir Hex dependencies
Stars: ✭ 24 (+41.18%)
Mutual labels:  hex

Hex.pm Hexdocs.pm Github.com Coverage Status

Expublish

Automates semantic release versioning and best practices for elixir packages.

Explublish helps keeping a clean and trackable version history in a project, while providing a consistent and easy release experience to its maintainers. It was created with a continuous release process in mind and can be used to fully automate the release of new package versions.

What it does

Inspired by various release utilities that exist for different languages and ecosystems, Expublish provides a mix task that guarantees a clean and functioning project state before it performs the steps required to release a new package version following semantic versioning conventions.

Using mix expublish guarantees:

  • a clean git working directory.
  • passing tests.
  • an increased version in mix.exs or version file.
  • a new curated changelog entry.
  • a new version git commit and tag.
  • git push to given remote and branch.
  • mix hex.publish to release the new package version and documentation to users.

Some of the steps can be opted out from and when not executed from CI, it's recommended to always execute a --dry-run before rerunning the expublish task without said option.

mix expublish supports various command-line options, check out the Cheatsheet and Reference pages.

Getting started

1. Follow the installation instructions.

2. For every new release, create a RELEASE.md containing a new changelog entry:

$ echo "- changelog entry one\n- changelog entry two" > RELEASE.md

3. Run mix expublish:

$ mix expublish.minor

Note that in case the push or publish step fail because of missing authentication or a failing network, the task must not be rerun. Instead run git push or mix hex.publish to finish releasing the new version.

Installation

See the Installation page to learn how to set up Expublish.

Cheatsheet

See the Cheatsheet page to get a quick overview on how to use the various options.

Version levels

See the Version levels page to learn how Expublish increases version levels.

Quick Reference

See the full Reference page to learn about all valid mix expublish task levels, options and defaults.

Usage: mix expublish.[level] [options]

level:
  major   - Publish next major version
  minor   - Publish next minor version
  patch   - Publish next patch version
  stable  - Publish current stable version from pre-release
  rc      - Publish release-candidate pre-release of next patch version
  beta    - Publish beta pre-release of next patch version
  alpha   - Publish alpha pre-release of next patch version

options:
  -d, --dry-run           - Perform dry run (no writes, no commits)
  --allow-untracked       - Allow untracked files during release
  --as-major              - Only for pre-release level
  --as-minor              - Only for pre-release level
  --disable-publish       - Disable hex publish
  --disable-push          - Disable git push
  --disable-test          - Disable test run
  --changelog-date-time   - Use date-time instead of date in new changelog entry
  --branch=string         - Remote branch to push to, default: "master"
  --remote=string         - Remote name to push to, default: "origin"
  --commit-prefix=string  - Custom commit prefix, default:  "Version release"
  --tag-prefix=string     - Custom tag prefix, default: "v"
  --version-file=string   - When working with a separate version file

Links and resources

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].