Commit 3dea8549 authored by Igor Drozdov's avatar Igor Drozdov

Merge branch '198609-removed-monaco_ci' into 'master'

Removed :monaco_ci flag

See merge request gitlab-org/gitlab!45096
parents fdec8e2b f73dd5b8
import createFlash from '~/flash'; import EditorLite from '~/editor/editor_lite';
import { BLOB_EDITOR_ERROR } from '~/blob_edit/constants';
export default class CILintEditor { export default class CILintEditor {
constructor() { constructor() {
const monacoEnabled = window?.gon?.features?.monacoCi;
this.clearYml = document.querySelector('.clear-yml'); this.clearYml = document.querySelector('.clear-yml');
this.clearYml.addEventListener('click', this.clear.bind(this)); this.clearYml.addEventListener('click', this.clear.bind(this));
return monacoEnabled ? this.initEditorLite() : this.initAce(); return this.initEditorLite();
} }
clear() { clear() {
...@@ -15,34 +13,20 @@ export default class CILintEditor { ...@@ -15,34 +13,20 @@ export default class CILintEditor {
} }
initEditorLite() { initEditorLite() {
import(/* webpackChunkName: 'monaco_editor_lite' */ '~/editor/editor_lite') const editorEl = document.getElementById('editor');
.then(({ default: EditorLite }) => { const fileContentEl = document.getElementById('content');
const editorEl = document.getElementById('editor'); const form = document.querySelector('.js-ci-lint-form');
const fileContentEl = document.getElementById('content');
const form = document.querySelector('.js-ci-lint-form');
const rootEditor = new EditorLite(); const rootEditor = new EditorLite();
this.editor = rootEditor.createInstance({ this.editor = rootEditor.createInstance({
el: editorEl, el: editorEl,
blobPath: '.gitlab-ci.yml', blobPath: '.gitlab-ci.yml',
blobContent: editorEl.innerText, blobContent: editorEl.innerText,
}); });
form.addEventListener('submit', () => {
fileContentEl.value = this.editor.getValue();
});
})
.catch(() => createFlash({ message: BLOB_EDITOR_ERROR }));
}
initAce() {
this.editor = window.ace.edit('ci-editor');
this.textarea = document.getElementById('content');
this.editor.getSession().setMode('ace/mode/yaml'); form.addEventListener('submit', () => {
this.editor.on('input', () => { fileContentEl.value = this.editor.getValue();
this.textarea.value = this.editor.getSession().getValue();
}); });
} }
} }
- page_title _("CI Lint") - page_title _("CI Lint")
- page_description _("Validate your GitLab CI configuration file") - page_description _("Validate your GitLab CI configuration file")
- unless Feature.enabled?(:monaco_ci, default_enabled: true)
- content_for :page_specific_javascripts do
= page_specific_javascript_tag('lib/ace.js')
%h2.pt-3.pb-3= _("Validate your GitLab CI configuration") %h2.pt-3.pb-3= _("Validate your GitLab CI configuration")
...@@ -17,12 +14,9 @@ ...@@ -17,12 +14,9 @@
.file-holder .file-holder
.js-file-title.file-title.clearfix .js-file-title.file-title.clearfix
= _("Contents of .gitlab-ci.yml") = _("Contents of .gitlab-ci.yml")
- if Feature.enabled?(:monaco_ci, default_enabled: true) .file-editor.code
.file-editor.code .js-edit-mode-pane.qa-editor#editor{ data: { 'editor-loading': true } }<
.js-edit-mode-pane.qa-editor#editor{ data: { 'editor-loading': true } }< %pre.editor-loading-content= params[:content]
%pre.editor-loading-content= params[:content]
- else
#ci-editor.ci-editor= @content
= text_area_tag(:content, @content, class: 'hidden form-control span1', rows: 7, require: true) = text_area_tag(:content, @content, class: 'hidden form-control span1', rows: 7, require: true)
.col-sm-12 .col-sm-12
.float-left.gl-mt-3 .float-left.gl-mt-3
......
---
name: monaco_ci
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/23666
rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/249137
group: group::editor
type: development
default_enabled: true
...@@ -44,7 +44,6 @@ module Gitlab ...@@ -44,7 +44,6 @@ module Gitlab
# Initialize gon.features with any flags that should be # Initialize gon.features with any flags that should be
# made globally available to the frontend # made globally available to the frontend
push_frontend_feature_flag(:monaco_blobs, default_enabled: true) push_frontend_feature_flag(:monaco_blobs, default_enabled: true)
push_frontend_feature_flag(:monaco_ci, default_enabled: true)
push_frontend_feature_flag(:webperf_experiment, default_enabled: false) push_frontend_feature_flag(:webperf_experiment, default_enabled: false)
push_frontend_feature_flag(:snippets_binary_blob, default_enabled: false) push_frontend_feature_flag(:snippets_binary_blob, default_enabled: false)
push_frontend_feature_flag(:usage_data_api, default_enabled: false) push_frontend_feature_flag(:usage_data_api, default_enabled: false)
......
...@@ -8,117 +8,88 @@ RSpec.describe 'CI Lint', :js do ...@@ -8,117 +8,88 @@ RSpec.describe 'CI Lint', :js do
let(:project) { create(:project, :repository) } let(:project) { create(:project, :repository) }
let(:user) { create(:user) } let(:user) { create(:user) }
shared_examples 'correct ci linting process' do let(:content_selector) { '.content .view-lines' }
describe 'YAML parsing' do
shared_examples 'validates the YAML' do
before do
stub_feature_flags(ci_lint_vue: false)
click_on 'Validate'
end
context 'YAML is correct' do before do
let(:yaml_content) do stub_feature_flags(ci_lint_vue: false)
File.read(Rails.root.join('spec/support/gitlab_stubs/gitlab_ci.yml')) project.add_developer(user)
end sign_in(user)
it 'parses Yaml and displays the jobs' do visit project_ci_lint_path(project)
expect(page).to have_content('Status: syntax is correct') editor_set_value(yaml_content)
within "table" do wait_for('YAML content') do
aggregate_failures do find(content_selector).text.present?
expect(page).to have_content('Job - rspec') end
expect(page).to have_content('Job - spinach') end
expect(page).to have_content('Deploy Job - staging')
expect(page).to have_content('Deploy Job - production')
end
end
end
end
context 'YAML is incorrect' do describe 'YAML parsing' do
let(:yaml_content) { 'value: cannot have :' } shared_examples 'validates the YAML' do
before do
stub_feature_flags(ci_lint_vue: false)
click_on 'Validate'
end
it 'displays information about an error' do context 'YAML is correct' do
expect(page).to have_content('Status: syntax is incorrect') let(:yaml_content) do
expect(page).to have_selector(content_selector, text: yaml_content) File.read(Rails.root.join('spec/support/gitlab_stubs/gitlab_ci.yml'))
end
end end
end
it_behaves_like 'validates the YAML' it 'parses Yaml and displays the jobs' do
expect(page).to have_content('Status: syntax is correct')
context 'when Dry Run is checked' do within "table" do
before do aggregate_failures do
check 'Simulate a pipeline created for the default branch' expect(page).to have_content('Job - rspec')
expect(page).to have_content('Job - spinach')
expect(page).to have_content('Deploy Job - staging')
expect(page).to have_content('Deploy Job - production')
end
end
end end
it_behaves_like 'validates the YAML'
end end
describe 'YAML revalidate' do context 'YAML is incorrect' do
let(:yaml_content) { 'my yaml content' } let(:yaml_content) { 'value: cannot have :' }
it 'loads previous YAML content after validation' do it 'displays information about an error' do
expect(page).to have_field('content', with: 'my yaml content', visible: false, type: 'textarea') expect(page).to have_content('Status: syntax is incorrect')
expect(page).to have_selector(content_selector, text: yaml_content)
end end
end end
end end
describe 'YAML clearing' do it_behaves_like 'validates the YAML'
context 'when Dry Run is checked' do
before do before do
click_on 'Clear' check 'Simulate a pipeline created for the default branch'
end end
context 'YAML is present' do it_behaves_like 'validates the YAML'
let(:yaml_content) do
File.read(Rails.root.join('spec/support/gitlab_stubs/gitlab_ci.yml'))
end
it 'YAML content is cleared' do
expect(page).to have_field('content', with: '', visible: false, type: 'textarea')
end
end
end end
end
context 'with ACE editor' do describe 'YAML revalidate' do
it_behaves_like 'correct ci linting process' do let(:yaml_content) { 'my yaml content' }
let(:content_selector) { '.ace_content' }
before do it 'loads previous YAML content after validation' do
stub_feature_flags(monaco_ci: false) expect(page).to have_field('content', with: 'my yaml content', visible: false, type: 'textarea')
stub_feature_flags(ci_lint_vue: false)
project.add_developer(user)
sign_in(user)
visit project_ci_lint_path(project)
find('#ci-editor')
execute_script("ace.edit('ci-editor').setValue(#{yaml_content.to_json});")
# Ace editor updates a hidden textarea and it happens asynchronously
wait_for('YAML content') do
find(content_selector).text.present?
end
end end
end end
end end
context 'with Editor Lite' do describe 'YAML clearing' do
it_behaves_like 'correct ci linting process' do before do
let(:content_selector) { '.content .view-lines' } click_on 'Clear'
end
before do
stub_feature_flags(monaco_ci: true)
stub_feature_flags(ci_lint_vue: false)
project.add_developer(user)
sign_in(user)
visit project_ci_lint_path(project) context 'YAML is present' do
editor_set_value(yaml_content) let(:yaml_content) do
File.read(Rails.root.join('spec/support/gitlab_stubs/gitlab_ci.yml'))
end
wait_for('YAML content') do it 'YAML content is cleared' do
find(content_selector).text.present? expect(page).to have_field('content', with: '', visible: false, type: 'textarea')
end
end end
end end
end end
......
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