Add method that checks for expiring build artifacts
This commit is contained in:
parent
4a7e1423f0
commit
5456859b5b
4 changed files with 40 additions and 17 deletions
|
@ -507,6 +507,10 @@ module Ci
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def has_expiring_artifacts?
|
||||||
|
artifacts_expire_at.present?
|
||||||
|
end
|
||||||
|
|
||||||
def keep_artifacts!
|
def keep_artifacts!
|
||||||
self.update(artifacts_expire_at: nil)
|
self.update(artifacts_expire_at: nil)
|
||||||
end
|
end
|
||||||
|
|
|
@ -22,14 +22,14 @@
|
||||||
%p.build-detail-row
|
%p.build-detail-row
|
||||||
The artifacts were removed
|
The artifacts were removed
|
||||||
#{time_ago_with_tooltip(@build.artifacts_expire_at)}
|
#{time_ago_with_tooltip(@build.artifacts_expire_at)}
|
||||||
- elsif @build.artifacts_expire_at
|
- elsif @build.has_expiring_artifacts?
|
||||||
%p.build-detail-row
|
%p.build-detail-row
|
||||||
The artifacts will be removed in
|
The artifacts will be removed in
|
||||||
%span.js-artifacts-remove= @build.artifacts_expire_at
|
%span.js-artifacts-remove= @build.artifacts_expire_at
|
||||||
|
|
||||||
- if @build.artifacts?
|
- if @build.artifacts?
|
||||||
.btn-group.btn-group-justified{ role: :group }
|
.btn-group.btn-group-justified{ role: :group }
|
||||||
- if @build.artifacts_expire_at && can?(current_user, :update_build, @build)
|
- if @build.has_expiring_artifacts? && can?(current_user, :update_build, @build)
|
||||||
= link_to keep_namespace_project_build_artifacts_path(@project.namespace, @project, @build), class: 'btn btn-sm btn-default', method: :post do
|
= link_to keep_namespace_project_build_artifacts_path(@project.namespace, @project, @build), class: 'btn btn-sm btn-default', method: :post do
|
||||||
Keep
|
Keep
|
||||||
|
|
||||||
|
|
|
@ -155,8 +155,8 @@ feature 'Builds', :feature do
|
||||||
|
|
||||||
click_link 'Keep'
|
click_link 'Keep'
|
||||||
|
|
||||||
expect(page).not_to have_link 'Keep'
|
expect(page).to have_no_link 'Keep'
|
||||||
expect(page).not_to have_content 'The artifacts will be removed'
|
expect(page).to have_no_content 'The artifacts will be removed'
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -652,6 +652,24 @@ describe Ci::Build, models: true do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe '#has_expiring_artifacts?' do
|
||||||
|
context 'when artifacts have expiration date set' do
|
||||||
|
before { build.update(artifacts_expire_at: 1.day.from_now) }
|
||||||
|
|
||||||
|
it 'has expiring artifacts' do
|
||||||
|
expect(build).to have_expiring_artifacts
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when artifacts do not have expiration date set' do
|
||||||
|
before { build.update(artifacts_expire_at: nil) }
|
||||||
|
|
||||||
|
it 'does not have expiring artifacts' do
|
||||||
|
expect(build).not_to have_expiring_artifacts
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
describe '#artifacts_metadata?' do
|
describe '#artifacts_metadata?' do
|
||||||
subject { build.artifacts_metadata? }
|
subject { build.artifacts_metadata? }
|
||||||
context 'artifacts metadata does not exist' do
|
context 'artifacts metadata does not exist' do
|
||||||
|
@ -663,19 +681,6 @@ describe Ci::Build, models: true do
|
||||||
it { is_expected.to be_truthy }
|
it { is_expected.to be_truthy }
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
describe '#repo_url' do
|
|
||||||
let(:build) { create(:ci_build) }
|
|
||||||
let(:project) { build.project }
|
|
||||||
|
|
||||||
subject { build.repo_url }
|
|
||||||
|
|
||||||
it { is_expected.to be_a(String) }
|
|
||||||
it { is_expected.to end_with(".git") }
|
|
||||||
it { is_expected.to start_with(project.web_url[0..6]) }
|
|
||||||
it { is_expected.to include(build.token) }
|
|
||||||
it { is_expected.to include('gitlab-ci-token') }
|
|
||||||
it { is_expected.to include(project.web_url[7..-1]) }
|
|
||||||
end
|
|
||||||
|
|
||||||
describe '#artifacts_expire_in' do
|
describe '#artifacts_expire_in' do
|
||||||
subject { build.artifacts_expire_in }
|
subject { build.artifacts_expire_in }
|
||||||
|
@ -721,6 +726,20 @@ describe Ci::Build, models: true do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe '#repo_url' do
|
||||||
|
let(:build) { create(:ci_build) }
|
||||||
|
let(:project) { build.project }
|
||||||
|
|
||||||
|
subject { build.repo_url }
|
||||||
|
|
||||||
|
it { is_expected.to be_a(String) }
|
||||||
|
it { is_expected.to end_with(".git") }
|
||||||
|
it { is_expected.to start_with(project.web_url[0..6]) }
|
||||||
|
it { is_expected.to include(build.token) }
|
||||||
|
it { is_expected.to include('gitlab-ci-token') }
|
||||||
|
it { is_expected.to include(project.web_url[7..-1]) }
|
||||||
|
end
|
||||||
|
|
||||||
describe '#depends_on_builds' do
|
describe '#depends_on_builds' do
|
||||||
let!(:build) { create(:ci_build, pipeline: pipeline, name: 'build', stage_idx: 0, stage: 'build') }
|
let!(:build) { create(:ci_build, pipeline: pipeline, name: 'build', stage_idx: 0, stage: 'build') }
|
||||||
let!(:rspec_test) { create(:ci_build, pipeline: pipeline, name: 'rspec', stage_idx: 1, stage: 'test') }
|
let!(:rspec_test) { create(:ci_build, pipeline: pipeline, name: 'rspec', stage_idx: 1, stage: 'test') }
|
||||||
|
|
Loading…
Reference in a new issue