Commit 90345b7a authored by Lucas Charles's avatar Lucas Charles Committed by Stan Hu

Require k8s cluster for DAST template

During transition to rules syntax, we missed the condition required to
ensure DAST jobs only execute if a cluster is present. Replacing the
previous `only:kubernetes` behavior, we need `CI_KUBERNETES_ACTIVE`

Relates to https://gitlab.com/gitlab-org/gitlab/-/issues/224117
parent 31307c8b
---
title: Only run DAST job if Kubernetes active
merge_request: 35259
author:
type: fixed
...@@ -28,19 +28,54 @@ RSpec.describe 'DAST.gitlab-ci.yml' do ...@@ -28,19 +28,54 @@ RSpec.describe 'DAST.gitlab-ci.yml' do
context 'when project has Ultimate license' do context 'when project has Ultimate license' do
let(:license) { create(:license, plan: License::ULTIMATE_PLAN) } let(:license) { create(:license, plan: License::ULTIMATE_PLAN) }
let(:cluster) { create(:cluster, :project, :provided_by_gcp, projects: [project]) }
before do before do
allow(License).to receive(:current).and_return(license) allow(License).to receive(:current).and_return(license)
end end
context 'by default' do context 'by default' do
before do
allow(cluster).to receive(:active?).and_return(true)
end
it 'includes job' do it 'includes job' do
expect(build_names).to match_array(%w[dast]) expect(build_names).to match_array(%w[dast])
end end
end end
context 'when cluster is not active' do
context 'by default' do
it 'includes no jobs' do
expect { pipeline }.to raise_error(Ci::CreatePipelineService::CreateError)
end
end
context 'when DAST_WEBSITE is present' do
before do
create(:ci_variable, project: project, key: 'DAST_WEBSITE', value: 'http://example.com')
end
it 'includes job' do
expect(build_names).to match_array(%w[dast])
end
end
context 'when DAST_API_SPECIFICATION is present' do
before do
create(:ci_variable, project: project, key: 'DAST_API_SPECIFICATION', value: 'http://my.api/api-specification.yml')
end
it 'includes job' do
expect(build_names).to match_array(%w[dast])
end
end
end
context 'when DAST_DISABLED=1' do context 'when DAST_DISABLED=1' do
before do before do
allow(cluster).to receive(:active?).and_return(true)
create(:ci_variable, project: project, key: 'DAST_DISABLED', value: '1') create(:ci_variable, project: project, key: 'DAST_DISABLED', value: '1')
end end
...@@ -51,6 +86,8 @@ RSpec.describe 'DAST.gitlab-ci.yml' do ...@@ -51,6 +86,8 @@ RSpec.describe 'DAST.gitlab-ci.yml' do
context 'when DAST_DISABLED_FOR_DEFAULT_BRANCH=1' do context 'when DAST_DISABLED_FOR_DEFAULT_BRANCH=1' do
before do before do
allow(cluster).to receive(:active?).and_return(true)
create(:ci_variable, project: project, key: 'DAST_DISABLED_FOR_DEFAULT_BRANCH', value: '1') create(:ci_variable, project: project, key: 'DAST_DISABLED_FOR_DEFAULT_BRANCH', value: '1')
end end
...@@ -75,6 +112,8 @@ RSpec.describe 'DAST.gitlab-ci.yml' do ...@@ -75,6 +112,8 @@ RSpec.describe 'DAST.gitlab-ci.yml' do
context 'when REVIEW_DISABLED=true' do context 'when REVIEW_DISABLED=true' do
before do before do
allow(cluster).to receive(:active?).and_return(true)
create(:ci_variable, project: project, key: 'REVIEW_DISABLED', value: 'true') create(:ci_variable, project: project, key: 'REVIEW_DISABLED', value: 'true')
end end
......
...@@ -41,4 +41,11 @@ dast: ...@@ -41,4 +41,11 @@ dast:
$DAST_API_SPECIFICATION == null $DAST_API_SPECIFICATION == null
when: never when: never
- if: $CI_COMMIT_BRANCH && - if: $CI_COMMIT_BRANCH &&
$CI_KUBERNETES_ACTIVE &&
$GITLAB_FEATURES =~ /\bdast\b/ $GITLAB_FEATURES =~ /\bdast\b/
- if: $CI_COMMIT_BRANCH &&
$GITLAB_FEATURES =~ /\bdast\b/ &&
$DAST_WEBSITE
- if: $CI_COMMIT_BRANCH &&
$GITLAB_FEATURES =~ /\bdast\b/ &&
$DAST_API_SPECIFICATION
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment