Expose last_deployment
on Ci::Builds
[ci skip]
This commit is contained in:
parent
73467bd163
commit
c70acb57f5
4 changed files with 47 additions and 22 deletions
21
app/helpers/environment_helper.rb
Normal file
21
app/helpers/environment_helper.rb
Normal file
|
@ -0,0 +1,21 @@
|
|||
module EnvironmentHelper
|
||||
def environment_for_build(project, build)
|
||||
return unless build.environment
|
||||
|
||||
environment_name = ExpandVariables.expand(build.environment, build.variables)
|
||||
project.environments.find_by(name: environment_name)
|
||||
end
|
||||
|
||||
def environment_link_for_build(project, build)
|
||||
environment = environment_for_build(project, build)
|
||||
return unless environment
|
||||
|
||||
link_to environment.name, namespace_project_environment_path(project.namespace, project, environment)
|
||||
end
|
||||
|
||||
def deployment_link(project, deployment)
|
||||
return unless deployment
|
||||
|
||||
link_to "##{deployment.id}", [deployment.project.namespace.becomes(Namespace), deployment.project, deployment.deployable]
|
||||
end
|
||||
end
|
|
@ -7,6 +7,8 @@ module Ci
|
|||
belongs_to :trigger_request
|
||||
belongs_to :erased_by, class_name: 'User'
|
||||
|
||||
has_many :deployments, as: :deployable
|
||||
|
||||
serialize :options
|
||||
serialize :yaml_variables
|
||||
|
||||
|
@ -125,10 +127,12 @@ module Ci
|
|||
!self.pipeline.statuses.latest.include?(self)
|
||||
end
|
||||
|
||||
def last_deployment
|
||||
return @last_deployment if defined?(@last_deployment)
|
||||
def deployable?
|
||||
self.environment.present?
|
||||
end
|
||||
|
||||
@last_deployment = Deployment.where(deployable: self).order(id: :desc).last
|
||||
def last_deployment
|
||||
deployments.order(id: :desc).last
|
||||
end
|
||||
|
||||
def depends_on_builds
|
||||
|
|
|
@ -26,28 +26,30 @@
|
|||
= link_to namespace_project_runners_path(@build.project.namespace, @build.project) do
|
||||
Runners page
|
||||
|
||||
- if @build.deploy
|
||||
- if @build.deployable?
|
||||
.prepend-top-default
|
||||
.environment-information
|
||||
= ci_icon_for_status(@build.status)
|
||||
|
||||
- if @build.last_deployment
|
||||
This build is the most recent deployment to
|
||||
= link_to @build.environment, namespace_project_environment_path(@project.namespace, @project, @build.environment)
|
||||
- else
|
||||
- case @build.status
|
||||
- when 'failed', 'canceled'
|
||||
- last_deployment = @build.last_deployment
|
||||
- if @build.complete?
|
||||
- if @build.success?
|
||||
- if last_deployment.try(:last?)
|
||||
This build is the most recent deployment to
|
||||
= environment_link_for_build(@build.project, @build)
|
||||
- else
|
||||
This build is an out-of-date deployment to
|
||||
= environment_link_for_build(@build.project, @build)
|
||||
View the most recent deployment
|
||||
= deployment_link(@project, last_deployment)
|
||||
- else
|
||||
The deployment of this build to
|
||||
= link_to @build.environment, namespace_project_environment_path(@project.namespace, @project, @build.environment)
|
||||
= environment_link_for_build(@build.project, @build)
|
||||
did not complete
|
||||
- when 'pending', 'running'
|
||||
This build is creating a deployment to
|
||||
= link_to @build.environment, namespace_project_environment_path(@project.namespace, @project, @build.environment)
|
||||
and will overwrite the latest deployment
|
||||
- when 'success'
|
||||
This build is an out-of-date deployment to
|
||||
= link_to @build.environment, namespace_project_environment_path(@project.namespace, @project, @build.environment)
|
||||
View the most recent deployment #24869
|
||||
- else
|
||||
This build is creating a deployment to
|
||||
= environment_link_for_build(@build.project, @build)
|
||||
and will overwrite the latest deployment
|
||||
|
||||
.prepend-top-default
|
||||
- if @build.erased?
|
||||
|
|
|
@ -4,15 +4,13 @@ class BuildSuccessWorker
|
|||
|
||||
def perform(build_id)
|
||||
Ci::Build.find_by(id: build_id).try do |build|
|
||||
create_deployment(build)
|
||||
create_deployment(build) if build.deployable?
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def create_deployment(build)
|
||||
return if build.environment.blank?
|
||||
|
||||
service = CreateDeploymentService.new(
|
||||
build.project, build.user,
|
||||
environment: build.environment,
|
||||
|
|
Loading…
Reference in a new issue