nyx { changelog { path = 'CHANGELOG.md' sections = [ 'Added' : '^feat$', 'Fixed' : '^fix$', ] substitutions = [ '(?m)#([0-9]+)(?s)': '[#%s](https://example.com/issues/%s)' ] } commitMessageConventions { enabled = [ 'conventionalCommits' ] items { conventionalCommits { expression = '(?m)^(?[a-zA-Z0-9_]+)(\\\\((?[a-z ]+)\\\\))?(!)?:( (?.+))$(?s).*' bumpExpressions { major = '(?s)(?m)^[a-zA-Z0-9_]+(\\([a-z ]+\\))?(!: .*|.*^(BREAKING( |-)CHANGE: )).*' minor = '(?s)(?m)^feat(!{0})(\\\\([a-z ]+\\\\))?: (?!.*^(BREAKING( |-)CHANGE: )).*' patch = '(?s)(?m)^fix(!{0})(\\\\([a-z ]+\\\\))?: (?!.*^(BREAKING( |-)CHANGE: )).*' } } } } dryRun = false git { remotes { origin { authenticationMethod = 'USER_PASSWORD' user = 'jdoe' password = 'somepassword' } } } initialVersion = '0.1.0' releaseLenient = true releasePrefix = 'v' releaseTypes { enabled = [ 'mainline', 'internal' ] publicationServices = [ 'github' ] items { mainline { collapseVersions = false filterTags = '^({{configuration.releasePrefix}})?([0-9]\\d*)\\.([0-9]\\d*)\\.([0-9]\\d*)$' gitCommit = 'true' gitCommitMessage = 'Release version {{version}}' gitPush = 'true' gitPushForce = 'true' gitTag = 'true' gitTagForce = 'true' gitTagMessage = 'Tag release {{version}}' gitTagNames = [ '{{version}}', 'stable', 'latest' ] matchBranches = '^(master|main)$' matchEnvironmentVariables { CI = '^true$' } matchWorkspaceStatus = 'CLEAN' publish = 'true' releaseName = 'Release {{version}}' versionRangeFromBranchName = false } internal { collapseVersions = false collapsedVersionQualifier = 'internal' description = 'Internal release {{version}}' filterTags = '^({{configuration.releasePrefix}})?([0-9]\\d*)\\.([0-9]\\d*)\\.([0-9]\\d*)$' gitCommit = 'false' gitPush = 'false' gitTag = 'false' identifiers { '0' { position = 'BUILD' qualifier = 'branch' value = '{{#sanitize}}{{branch}}{{/sanitize}}' } '1' { position = 'BUILD' qualifier = 'commit' value = '{{#short7}}{{releaseScope.finalCommit}}{{/short7}}' } '2' { position = 'BUILD' qualifier = 'timestamp' value = '{{#timestampYYYYMMDDHHMMSS}}{{timestamp}}{{/timestampYYYYMMDDHHMMSS}}' } '3' { position = 'BUILD' qualifier = 'user' value = '{{#sanitizeLower}}{{environmentUser}}{{/sanitizeLower}}' } } publish = 'false' publishDraft = 'true' versionRangeFromBranchName = false } } } scheme = 'SEMVER' services { github { type = 'GITHUB' options { AUTHENTICATION_TOKEN = '{{#environmentVariable}}GITHUB_TOKEN{{/environmentVariable}}' REPOSITORY_NAME = 'myrepo' REPOSITORY_OWNER = 'acme' } } } substitutions { enabled = [ 'npm' ] items { npm { files = 'package.json' match = '"version"(\s)*:(\s)*"(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?"' replace = '"version": "{{version}}"' } } } verbosity = 'INFO' }