Skip to content
Snippets Groups Projects
Select Git revision
  • master default
1 result

release.config.js

Blame
  • release.config.js 3.70 KiB
    module.exports = {
      branch: 'master',
      repositoryUrl: 'https://github.com/saltstack-formulas/salt-formula',
      plugins: [
          ['@semantic-release/commit-analyzer', {
            preset: 'angular',
            releaseRules: './release-rules.js',
          }],
          '@semantic-release/release-notes-generator',
          ['@semantic-release/changelog', {
            changelogFile: 'CHANGELOG.md',
            changelogTitle: '# Changelog',
          }],
          ['@semantic-release/exec', {
            prepareCmd: 'sh ./pre-commit_semantic-release.sh ${nextRelease.version}',
          }],
          ['@semantic-release/git', {
            assets: ['*.md', 'docs/*.rst', 'FORMULA'],
          }],
          '@semantic-release/github',
      ],
      generateNotes: {
        preset: 'angular',
        writerOpts: {
          // Required due to upstream bug preventing all types being displayed.
          // Bug: https://github.com/conventional-changelog/conventional-changelog/issues/317
          // Fix: https://github.com/conventional-changelog/conventional-changelog/pull/410
          transform: (commit, context) => {
              const issues = []
    
              commit.notes.forEach(note => {
                  note.title = `BREAKING CHANGES`
              })
    
              // NOTE: Any changes here must be reflected in `CONTRIBUTING.md`.
              if (commit.type === `feat`) {
                  commit.type = `Features`
              } else if (commit.type === `fix`) {
                  commit.type = `Bug Fixes`
              } else if (commit.type === `perf`) {
                  commit.type = `Performance Improvements`
              } else if (commit.type === `revert`) {
                  commit.type = `Reverts`
              } else if (commit.type === `docs`) {
                  commit.type = `Documentation`
              } else if (commit.type === `style`) {
                  commit.type = `Styles`
              } else if (commit.type === `refactor`) {
                  commit.type = `Code Refactoring`
              } else if (commit.type === `test`) {
                  commit.type = `Tests`
              } else if (commit.type === `build`) {
                  commit.type = `Build System`
              // } else if (commit.type === `chore`) {
              //     commit.type = `Maintenance`
              } else if (commit.type === `ci`) {
                  commit.type = `Continuous Integration`
              } else {
                  return
              }
    
              if (commit.scope === `*`) {
                  commit.scope = ``
              }
    
              if (typeof commit.hash === `string`) {
                  commit.shortHash = commit.hash.substring(0, 7)
              }
    
              if (typeof commit.subject === `string`) {
                  let url = context.repository
                      ? `${context.host}/${context.owner}/${context.repository}`
                      : context.repoUrl
                  if (url) {
                      url = `${url}/issues/`
                      // Issue URLs.
                      commit.subject = commit.subject.replace(/#([0-9]+)/g, (_, issue) => {
                          issues.push(issue)
                          return `[#${issue}](${url}${issue})`
                      })
                  }
                  if (context.host) {
                      // User URLs.
                      commit.subject = commit.subject.replace(/\B@([a-z0-9](?:-?[a-z0-9/]){0,38})/g, (_, username) => {
                      if (username.includes('/')) {
                          return `@${username}`
                      }
    
                      return `[@${username}](${context.host}/${username})`
                      })
                  }
              }
    
              // remove references that already appear in the subject
              commit.references = commit.references.filter(reference => {
                  if (issues.indexOf(reference.issue) === -1) {
                      return true
                  }
    
                  return false
              })
    
              return commit
          },
        },
      },
    };