Sha256: 3d39e522e67eb15b2b8d3adef4609082751eb20fbf403152d669e3341aa14081

Contents?: true

Size: 1.6 KB

Versions: 26

Compression:

Stored size: 1.6 KB

Contents

# frozen_string_literal: true

module Groundskeeper
  # Wraps Sentry CLI executable.
  class Sentry
    COMMAND = "sentry-cli"
    SENTRY_AUTH_TOKEN = "SENTRY_AUTH_TOKEN"
    SENTRY_ORG = "SENTRY_ORG"
    # sentry-cli arguments
    RELEASE = "releases new -p %<project>s \"%<version>s\""
    ASSOCIATE = "releases set-commits --auto \"%<version>s\""
    DEPLOY = "releases deploys \"%<version>s\" new -e %<environment>s"

    attr_reader :sentry, :project_name, :version_prefix

    def self.build(project_name:, version_prefix:)
      new(
        sentry: Executable.new(COMMAND),
        project_name: project_name,
        version_prefix: version_prefix
      )
    end

    def initialize(sentry:, project_name:, version_prefix:)
      @sentry = sentry
      @project_name = project_name
      @version_prefix = version_prefix
    end

    # Notify Sentry about release
    def create_release(version)
      sentry.execute(format(RELEASE,
                            project: project_name,
                            version: version_name(version)))
    end

    # Associate commits with the release
    def associate_commits(version)
      sentry.execute(format(ASSOCIATE, version: version_name(version)))
    end

    # Announce deployment to an environment
    def deploy(version, environment)
      sentry.execute(format(DEPLOY,
                            version: version_name(version),
                            environment: environment))
    end

    def version_name(version)
      "#{version_prefix} #{version}"
    end

    def credentials?
      ENV[SENTRY_AUTH_TOKEN].present? && ENV[SENTRY_ORG].present?
    end
  end
end

Version data entries

26 entries across 26 versions & 1 rubygems

Version Path
groundskeeper-bitcore-0.26.0 lib/groundskeeper/sentry.rb
groundskeeper-bitcore-0.24.0 lib/groundskeeper/sentry.rb
groundskeeper-bitcore-0.23.0 lib/groundskeeper/sentry.rb
groundskeeper-bitcore-0.22.0 lib/groundskeeper/sentry.rb
groundskeeper-bitcore-0.21.0 lib/groundskeeper/sentry.rb
groundskeeper-bitcore-0.20.1 lib/groundskeeper/sentry.rb
groundskeeper-bitcore-0.19.0 lib/groundskeeper/sentry.rb
groundskeeper-bitcore-0.18.0 lib/groundskeeper/sentry.rb
groundskeeper-bitcore-0.17.0 lib/groundskeeper/sentry.rb
groundskeeper-bitcore-0.16.0 lib/groundskeeper/sentry.rb
groundskeeper-bitcore-0.15.0 lib/groundskeeper/sentry.rb
groundskeeper-bitcore-0.14.0 lib/groundskeeper/sentry.rb
groundskeeper-bitcore-0.13.0 lib/groundskeeper/sentry.rb
groundskeeper-bitcore-0.12.0 lib/groundskeeper/sentry.rb
groundskeeper-bitcore-0.11.0 lib/groundskeeper/sentry.rb
groundskeeper-bitcore-0.10.0 lib/groundskeeper/sentry.rb
groundskeeper-bitcore-0.9.0 lib/groundskeeper/sentry.rb
groundskeeper-bitcore-0.8.0 lib/groundskeeper/sentry.rb
groundskeeper-bitcore-0.7.0 lib/groundskeeper/sentry.rb
groundskeeper-bitcore-0.6.0 lib/groundskeeper/sentry.rb