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