Class: Groundskeeper::Sentry
- Inherits:
-
Object
- Object
- Groundskeeper::Sentry
- Defined in:
- lib/groundskeeper/sentry.rb
Overview
Wraps Sentry CLI executable.
Constant Summary collapse
- COMMAND =
"sentry-cli"
- SENTRY_AUTH_TOKEN =
"SENTRY_AUTH_TOKEN"
- SENTRY_ORG =
"SENTRY_ORG"
- RELEASE =
sentry-cli arguments
"releases new -p %<project>s \"%<version>s\""
- ASSOCIATE =
"releases set-commits --auto \"%<version>s\""
- DEPLOY =
"releases deploys \"%<version>s\" new -e %<environment>s"
Instance Attribute Summary collapse
-
#project_name ⇒ Object
readonly
Returns the value of attribute project_name.
-
#sentry ⇒ Object
readonly
Returns the value of attribute sentry.
-
#version_prefix ⇒ Object
readonly
Returns the value of attribute version_prefix.
Class Method Summary collapse
Instance Method Summary collapse
-
#associate_commits(version) ⇒ Object
Associate commits with the release.
-
#create_release(version) ⇒ Object
Notify Sentry about release.
- #credentials? ⇒ Boolean
-
#deploy(version, environment) ⇒ Object
Announce deployment to an environment.
-
#initialize(sentry:, project_name:, version_prefix:) ⇒ Sentry
constructor
A new instance of Sentry.
- #version_name(version) ⇒ Object
Constructor Details
#initialize(sentry:, project_name:, version_prefix:) ⇒ Sentry
Returns a new instance of Sentry.
24 25 26 27 28 |
# File 'lib/groundskeeper/sentry.rb', line 24 def initialize(sentry:, project_name:, version_prefix:) @sentry = sentry @project_name = project_name @version_prefix = version_prefix end |
Instance Attribute Details
#project_name ⇒ Object (readonly)
Returns the value of attribute project_name.
14 15 16 |
# File 'lib/groundskeeper/sentry.rb', line 14 def project_name @project_name end |
#sentry ⇒ Object (readonly)
Returns the value of attribute sentry.
14 15 16 |
# File 'lib/groundskeeper/sentry.rb', line 14 def sentry @sentry end |
#version_prefix ⇒ Object (readonly)
Returns the value of attribute version_prefix.
14 15 16 |
# File 'lib/groundskeeper/sentry.rb', line 14 def version_prefix @version_prefix end |
Class Method Details
.build(project_name:, version_prefix:) ⇒ Object
16 17 18 19 20 21 22 |
# File 'lib/groundskeeper/sentry.rb', line 16 def self.build(project_name:, version_prefix:) new( sentry: Executable.new(COMMAND), project_name: project_name, version_prefix: version_prefix ) end |
Instance Method Details
#associate_commits(version) ⇒ Object
Associate commits with the release
38 39 40 |
# File 'lib/groundskeeper/sentry.rb', line 38 def associate_commits(version) sentry.execute(format(ASSOCIATE, version: version_name(version))) end |
#create_release(version) ⇒ Object
Notify Sentry about release
31 32 33 34 35 |
# File 'lib/groundskeeper/sentry.rb', line 31 def create_release(version) sentry.execute(format(RELEASE, project: project_name, version: version_name(version))) end |
#credentials? ⇒ Boolean
53 54 55 |
# File 'lib/groundskeeper/sentry.rb', line 53 def credentials? ENV[SENTRY_AUTH_TOKEN].present? && ENV[SENTRY_ORG].present? end |
#deploy(version, environment) ⇒ Object
Announce deployment to an environment
43 44 45 46 47 |
# File 'lib/groundskeeper/sentry.rb', line 43 def deploy(version, environment) sentry.execute(format(DEPLOY, version: version_name(version), environment: environment)) end |
#version_name(version) ⇒ Object
49 50 51 |
# File 'lib/groundskeeper/sentry.rb', line 49 def version_name(version) "#{version_prefix} #{version}" end |