Skip to content

Release-Please Configuration

Release-please automates version management based on conventional commits. It creates release PRs with updated changelogs, version bumps, and Git tags.

Schema Validation

Always include the $schema property in your config file. It catches invalid options immediately and saves debugging time.


Overview

Release-please reads your commit history and:

  1. Groups changes by type (feat, fix, chore, etc.)
  2. Generates changelogs
  3. Bumps versions according to semantic versioning
  4. Creates pull requests for releases
  5. Tags releases when PRs merge

Configuration Files

release-please-config.json

The main configuration file defines packages and their versioning behavior:

{
  "$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json",
  "include-v-in-tag": false,
  "tag-separator": "-",
  "changelog-sections": [
    { "type": "feat", "section": "Features" },
    { "type": "fix", "section": "Bug Fixes" },
    { "type": "perf", "section": "Performance" },
    { "type": "refactor", "section": "Code Refactoring" },
    { "type": "docs", "section": "Documentation", "hidden": true },
    { "type": "chore", "section": "Maintenance" },
    { "type": "test", "section": "Tests", "hidden": true },
    { "type": "ci", "section": "CI/CD", "hidden": true }
  ],
  "packages": {
    "charts/my-app": {
      "release-type": "helm",
      "component": "my-app",
      "include-component-in-tag": false
    },
    "packages/backend": {
      "release-type": "node",
      "component": "backend",
      "package-name": "my-backend",
      "include-component-in-tag": true
    },
    "packages/frontend": {
      "release-type": "node",
      "component": "frontend",
      "package-name": "my-frontend",
      "include-component-in-tag": true
    }
  },
  "separate-pull-requests": true
}

.release-please-manifest.json

Tracks current versions for each package:

{
  "charts/my-app": "1.0.0",
  "packages/backend": "1.0.0",
  "packages/frontend": "1.0.0"
}

Configuration Options

Global Options

Option Description Example
include-v-in-tag Prefix tags with v true = v1.0.0, false = 1.0.0
tag-separator Separator between component and version - = backend-1.0.0
separate-pull-requests Create one PR per component Recommended for monorepos
changelog-sections How to group commits in changelogs See example above

Package Options

Option Description Values
release-type Package ecosystem node, helm, simple, python, go, etc.
component Component name for tagging Any string
include-component-in-tag Include component in tag true = backend-1.0.0
package-name Package name (for node, etc.) Matches package.json name

Schema Validation

Always validate configuration against the official schema:

{
  "$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json"
}

This catches invalid options immediately. Options like release-name don't exist. The schema prevents wasted debugging time.


In This Section



References

Comments