Skip to content

metanorma/metanorma-release

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Metanorma Release repository

Warning
This repository is for INTERNAL USE ONLY.

Purpose

Today Metanorma spans over 50 gems. Changes to underlying gems, such as metanorma can cause many of the downstream gems to need upgrading.

We use the lapidist gem to synchronize the releases.

Resources

This repo metanorma-release is used as the main building environment.

It submodules all metanorma gems for the release process, and also maintains a gem dependency tree within metanorma (should be easy to automate, or worse to worse manual…​).

Flow

This is really a “composite-git-flow” kind of process. Maybe it’s called git gush or git cascade.

The typical scenario is:

  1. A flavor gem needs enhancing (e.g. ISO)

  2. metanorma-iso forces change on a basic gem, like isodoc

  3. An isodoc update means the testing on all downstream gems needs to be updated

This is how the Metanorma release flow will look like.

Commands available

$ bundle exec lapidist start

Updating code and integrated testing

  1. Go to this metanorma-release repository

  2. Run a script to create feature branches in all gems.

  3. Do the necessary work in the submodule’d (in this repo) isodoc and metanorma-iso

  4. Run a script that performs tests on all the gems at once using the newly created feature branches

    1. (alt) if you want Travis to test for you, push the metanorma-release repository, and Travis will build for you

  5. When all the gems pass, run a script to make PRs to every repository. If the feature branch for a gem is empty, the script will ignore it.

  6. Merge PRs by hand or by script (into main or a release branch)

Releasing

  1. When a release branch is ready (for all gems), run a script to:

    1. Bump version of those gems (VERSION variable in code)

    2. Update the Gemfiles (remove feature branches)

    3. Update gemspecs to lock versions

  2. Issue PRs for those gems to merge their release branches into main.

  3. Merge the release PRs by hand or by script.

Ideally, we want to update the base gems first, then the immediately dependent gems, and so forth to ensure that the builds always pass.

About

INTERNAL USE ONLY -- used for gem releasing process

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •