Class: TerraspaceVcsGitlab::Interface
- Inherits:
-
Object
- Object
- TerraspaceVcsGitlab::Interface
- Extended by:
- Memoist
- Includes:
- Terraspace::Cloud::Vcs::Interface
- Defined in:
- lib/terraspace_vcs_gitlab/interface.rb
Instance Method Summary collapse
Instance Method Details
#client ⇒ Object
39 40 41 42 43 44 45 |
# File 'lib/terraspace_vcs_gitlab/interface.rb', line 39 def client Gitlab.configure do |config| config.endpoint = 'https://gitlab.com/api/v4' config.private_token = ENV['GITLAB_TOKEN'] end Gitlab.client end |
#comment(body) ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/terraspace_vcs_gitlab/interface.rb', line 8 def comment(body) return unless gitlab_token? return unless ENV['CI_PIPELINE_SOURCE'] == 'merge_request_event' mr_number = pr_number logger.debug "Adding comment to full_repo #{full_repo} mr_number #{mr_number}" project = client.project(ENV['CI_PROJECT_PATH']) merge_request = ENV['CI_MERGE_REQUEST_IID'] # https://www.rubydoc.info/gems/gitlab/Gitlab/Client/Notes # TODO handle pagination # TODO are we allow to post comment on public full_repo without need the permission? notes = client.merge_request_notes(project.id, mr_number) found_note = notes.find do |note| note.body.starts_with?(MARKER) end if found_note client.edit_merge_request_note(project.id, merge_request, found_note.id, body) unless found_note.body == body else client.create_merge_request_note(project.id, merge_request, body) end # Edge cases: # token is not valid # token is not right full_repo rescue Gitlab::Error::Unauthorized => e logger.info "WARN: #{e.}. Unable to create merge request comment. Please double check your gitlab token" rescue Gitlab::Error::Forbidden => e logger.info "WARN: #{e.}. Unable to create merge request comment. The token does not have the permission. Please double check your gitlab token" end |
#gitlab_token? ⇒ Boolean
48 49 50 51 52 53 54 55 |
# File 'lib/terraspace_vcs_gitlab/interface.rb', line 48 def gitlab_token? if ENV['GITLAB_TOKEN'] true else puts "WARN: The env var GITLAB_TOKEN is not configured. Will not post MR comment" false end end |