Docs

v.Latest
Introduction
Core Concepts
Querying Content
Editing
Customizing Tina
Going To Production
Media
Drafts
Guides
Further Reference
    Contribution Releases

    This page is out of date - check out the TinaCMS GitHub for the latest contribution information

    Overarching Process

    Tina has three main branches:

    • master: The bleeding edge of tinacms
    • next: A preview of the next release
    • latest: The current stable release

    The flow of changes therefore looks like:

    fix-some-bug => master => next => latest

    The process happens over a week:

    • On Monday
      1. next is merged into latest; then latest is published to npm
      2. master is merged into next; then next is published to npm
    • Any hot fixes for bugs will be cherry picked into next and latest and the published accordingly.
    • Every pull request merged to master automatically triggers a canary release.

    With this process:

    • all accepted changes are available as canary releases for early testing
    • critical fixes are published as soon as possible
    • new features and minor fixes take ~1.5 weeks to be published

    Steps to Release

    The general release process looks like this:

    1. Build the source files:
      The source must be compiled, minified, and uglified in preparation for release.
    2. Generate CHANGELOGs and Git tags:
      We use lerna to generate CHANGELOG files automatically from our commit messages.
    3. Clean the CHANGELOGs
      Lerna sometimes adds empty changelog entries. For example, if react-tinacms is changed then tinacms will get get a patch update with only the dependency updated. Make sure to install lerna-clean-changelog-cli:
      npm i -g lerna-clean-changelogs-cli
    4. Publish to NPM:
      You must have an NPM_TOKEN set locally that has access to the @tinacms organization
    5. Push CHANGELOGs and Git tags to GitHub:
      Let everyone know!

    The exact commands vary slightly depending on the type of release being made.

    Prerelease

    1. Build the source files:
      npm run build
    2. Generate CHANGELOGs and Git tags:
      lerna version \ --conventional-commits \ --conventional-prerelease \ --no-push \ --allow-branch next \ -m "chore(publish): prerelease"
    3. Clean the CHANGELOGs
      lcc ** && git commit -am "chore: clean changelogs"
    4. Publish to NPM: lerna publish from-package --dist-tag next
    5. Push CHANGELOGs and Git tags to GitHub: git push && git push --tags

    Graduating Prereleases

    1. Build the source files:
      npm run build
    2. Generate CHANGELOGs and Git tags:
      lerna version \ --conventional-commits \ --conventional-graduate \ --no-push \ --allow-branch next \ -m "chore(publish): graduation"
    3. Clean the CHANGELOGs
      lcc ** && git commit -am "chore: clean changelogs"
    4. Publish to NPM:
      lerna publish from-package
    5. Push CHANGELOGs and Git tags to GitHub: git push && git push --tags

    Release

    1. Build the source files:
      npm run build
    2. Generate CHANGELOGs and Git tags:
      lerna version \ --conventional-commits \ --no-push \ --allow-branch master \ -m "chore(publish): release"
    3. Clean the CHANGELOGs
      lcc ** && git commit -am "chore: clean changelogs"
    4. Publish to NPM: lerna publish from-package
    5. Push CHANGELOGs and Git tags to GitHub: git push && git push --tags
    Last Edited: January 1, 1970