class GitlabReleaseNotes::Client

Constants

APP_VERSIONS_REGEX
ELIGABLE_COMMITS_REGEX
JIRA_IDS_REGEX
JIRA_URL
RELEASE_NOTES_HEADER
TIME_ZONE

Public Instance Methods

current_time() click to toggle source
# File lib/gitlab_release_notes.rb, line 38
def current_time
  tz = TZInfo::Timezone.get(TIME_ZONE.to_s)
  tz.now
end
log_filter(logs) click to toggle source
# File lib/gitlab_release_notes.rb, line 18
def log_filter(logs)
  app_changelog = []
  logs.each do |l|
    if l.message.match(/#{ELIGABLE_COMMITS_REGEX}/)
      app_changelog.append(l.message.gsub(/#{JIRA_IDS_REGEX}/,
                                          "\\1(#{JIRA_URL}/browse/\\2)\\3<br>"))
    end
  end
  app_changelog
end
prepare_release_notes(repository_path) click to toggle source
# File lib/gitlab_release_notes.rb, line 43
def prepare_release_notes(repository_path)
  repo = Git.open(repository_path)
  release_notes = []
  app_versions = tags_lister(repo)
  if app_versions.length == 1
    release_notes = log_filter(repo.log)
  else
    eligable_versions = app_versions.last(2)
    release_notes = log_filter(repo.log.between(eligable_versions[0], eligable_versions[1]))
  end
  "#{RELEASE_NOTES_HEADER} (#{current_time})<br><hr> " + release_notes.uniq.join('')
end
publish_release_notes(repository_id, release_tag, repository_path) click to toggle source
# File lib/gitlab_release_notes.rb, line 56
def publish_release_notes(repository_id, release_tag, repository_path)
  release_notes = prepare_release_notes(repository_path)
  begin
    Gitlab.create_release(repository_id, release_tag, release_notes)
    "[#{release_tag}] Release notes have been created"
  rescue Gitlab::Error::Conflict
    Gitlab.update_release(repository_id, release_tag, release_notes)
    "[#{release_tag}] Release notes have been updated"
  end
end
tags_lister(repository) click to toggle source
# File lib/gitlab_release_notes.rb, line 29
def tags_lister(repository)
  app_versions = []
  repository.tags.each do |t|
    app_versions.append(t.name) \
                   if t.name.match(/#{APP_VERSIONS_REGEX}/)
  end
  app_versions
end