lib/release_tools/deployments/deployment_tracker.rb (62 lines of code) (raw):

# frozen_string_literal: true module ReleaseTools module Deployments # Tracking of deployments using the GitLab API class DeploymentTracker include ::SemanticLogger::Loggable include ReleaseTools::Tracker::Deployment # The name of the staging-canary environment of GitLab.com. ENVIRONMENT = 'gstg-cny' # environment - The name of the environment that was deployed to. # status - The status of the deployment, such as "success" or "failed". # version - The raw deployment version, as passed from the deployer. def initialize(version:, environment: nil, status: nil) @environment = environment @status = status @version = version end def commit_range current, previous = GitlabClient .deployments( Project::GitlabEe.auto_deploy_path, ENVIRONMENT, status: 'success' ) .first(2) .map(&:sha) if previous && current [previous, current] else [] end end private attr_reader :environment, :status, :version def perform_checks check_status end def versions gitlab_version = product_version['gitlab-ee'] omnibus_version = product_version['omnibus-gitlab-ee'] gitaly_version = product_version['gitaly'] kas_version = product_version['gitlab_kas'] log_parsed_versions( GitLab: gitlab_version, Omnibus: omnibus_version, Gitaly: gitaly_version, Kas: kas_version ) [ [Project::GitlabEe, gitlab_version], [Project::OmnibusGitlab, omnibus_version], [Project::Gitaly, gitaly_version], [Project::Kas, kas_version] ] end def log_parsed_versions(components_version) components_version.each do |component, version| logger.info( "Parsed #{component} version from #{@version}", sha: version.sha, ref: version.ref, is_tag: version.tag? ) end end end end end