Skip to content

Release automation tool. Automates such tasks as release branches creation, versions bumpings, dependency tracking, tags creation etc. for repository and all its `managable` dependencies. Both Git and Subversion VCS are supported

License

Notifications You must be signed in to change notification settings

scm4j/scm4j-releaser

Repository files navigation

Release Build Status Coverage Status

Terms

  • component: component has its own repository and can be built and uploaded to some repository
  • project: root component
  • managable dependency: dependency of any component which is "under control", i.e. can be branched, built and uploaded to a maven repository
  • mdeps: file which lists managable dependencies, is located at the root of every repository
  • develop branch: branch which is used as a source for release branches (in other words - all development happens on). By default it is master or trunk, depending on VCS

Usage

  1. Add version file to your repository, optionally mdeps
  2. Clone https://github.com/scm4j/scm4j-releaser-shell
  3. Execute releaser, it will create cc, cc.yml, credentials.yml files in $user.home/.scm4j folder. Edit these files (ref. comments there)
  4. Run releaser (status|fork|build) com.mycompany:my-root-component

E.g. we have a product3 which depends on component39:0.9.5 and component50:0.5.0, all components and product3 sit in their own repositories. Now we add some commits to the develop branch of component50 and run the tool using status command. Tool analyzes repositories and suggests that new versions of component50 and product3 should be built. Then we can run tool using fork and build commands. fork command creates new release branches and increase minor versions in develop branches, build does whatever configured plus increases patch version in release branch.

For version definitions ref. semantic Versioning 2.0.0.

Run from gradle

  • gradlew run -Pa=status,com.mycompany:my-root-component

Advanced mdeps Management

  • It is safe to add a new entry without version to any SNAPSHOT mdeps
  • If you add or modify some release mdeps you must also copy these changes to all your project mdeps
    • Otherwise it is possible to get "Inconsistent dependencies" error
  • It is safe to remove a record from mdeps and add it to build.gralde - this way you can change dependency version at your own risk, do not cry aftewards

Under the Hood

  • CLI gets ExtendedStatusTree using ExtendedStatusTreeBuilder class (ref. release statuses)
  • ActionTreeBuilder converts ExtendedStatusTree to ActionTree (IAction)
  • IAction is executed

Data Structure

Features

Related repositories

See also

Historical version

Problems

  • Subversion is very slow on VMs if network type is NAT. Bridge type gives much better perfomance. See similar problem here

About

Release automation tool. Automates such tasks as release branches creation, versions bumpings, dependency tracking, tags creation etc. for repository and all its `managable` dependencies. Both Git and Subversion VCS are supported

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages