Commit d7f271c2 authored by Mayra Cabrera's avatar Mayra Cabrera

Merge branch 'ee-66454-create-feature-flag' into 'master'

EE: Creates Feature Flag for job log

See merge request gitlab-org/gitlab-ee!15871
parents 6c319d7d f421ac9b
...@@ -12,7 +12,6 @@ import createStore from '../store'; ...@@ -12,7 +12,6 @@ import createStore from '../store';
import EmptyState from './empty_state.vue'; import EmptyState from './empty_state.vue';
import EnvironmentsBlock from './environments_block.vue'; import EnvironmentsBlock from './environments_block.vue';
import ErasedBlock from './erased_block.vue'; import ErasedBlock from './erased_block.vue';
import Log from './job_log.vue';
import LogTopBar from './job_log_controllers.vue'; import LogTopBar from './job_log_controllers.vue';
import StuckBlock from './stuck_block.vue'; import StuckBlock from './stuck_block.vue';
import UnmetPrerequisitesBlock from './unmet_prerequisites_block.vue'; import UnmetPrerequisitesBlock from './unmet_prerequisites_block.vue';
...@@ -30,7 +29,10 @@ export default { ...@@ -30,7 +29,10 @@ export default {
EnvironmentsBlock, EnvironmentsBlock,
ErasedBlock, ErasedBlock,
Icon, Icon,
Log, Log: () =>
gon && gon.features && gon.features.jobLogJson
? import('./job_log_json.vue')
: import('./job_log.vue'),
LogTopBar, LogTopBar,
StuckBlock, StuckBlock,
UnmetPrerequisitesBlock, UnmetPrerequisitesBlock,
......
<script>
export default {
name: 'JobLogJSON',
};
</script>
<template>
<pre>
{{ __('This feature is in development. Please disable the `job_log_json` feature flag') }}
</pre>
</template>
...@@ -11,6 +11,9 @@ class Projects::JobsController < Projects::ApplicationController ...@@ -11,6 +11,9 @@ class Projects::JobsController < Projects::ApplicationController
before_action :authorize_erase_build!, only: [:erase] before_action :authorize_erase_build!, only: [:erase]
before_action :authorize_use_build_terminal!, only: [:terminal, :terminal_websocket_authorize] before_action :authorize_use_build_terminal!, only: [:terminal, :terminal_websocket_authorize]
before_action :verify_api_request!, only: :terminal_websocket_authorize before_action :verify_api_request!, only: :terminal_websocket_authorize
before_action only: [:trace] do
push_frontend_feature_flag(:job_log_json)
end
layout 'project' layout 'project'
...@@ -64,6 +67,14 @@ class Projects::JobsController < Projects::ApplicationController ...@@ -64,6 +67,14 @@ class Projects::JobsController < Projects::ApplicationController
# rubocop: enable CodeReuse/ActiveRecord # rubocop: enable CodeReuse/ActiveRecord
def trace def trace
if Feature.enabled?(:job_log_json, @project)
json_trace
else
html_trace
end
end
def html_trace
build.trace.read do |stream| build.trace.read do |stream|
respond_to do |format| respond_to do |format|
format.json do format.json do
...@@ -84,6 +95,10 @@ class Projects::JobsController < Projects::ApplicationController ...@@ -84,6 +95,10 @@ class Projects::JobsController < Projects::ApplicationController
end end
end end
def json_trace
# will be implemented with https://gitlab.com/gitlab-org/gitlab-ce/issues/66454
end
def retry def retry
return respond_422 unless @build.retryable? return respond_422 unless @build.retryable?
......
...@@ -15472,6 +15472,9 @@ msgstr "" ...@@ -15472,6 +15472,9 @@ msgstr ""
msgid "This environment has no deployments yet." msgid "This environment has no deployments yet."
msgstr "" msgstr ""
msgid "This feature is in development. Please disable the `job_log_json` feature flag"
msgstr ""
msgid "This feature requires local storage to be enabled" msgid "This feature requires local storage to be enabled"
msgstr "" msgstr ""
......
...@@ -12,6 +12,7 @@ describe Projects::JobsController, :clean_gitlab_redis_shared_state do ...@@ -12,6 +12,7 @@ describe Projects::JobsController, :clean_gitlab_redis_shared_state do
before do before do
stub_feature_flags(ci_enable_live_trace: true) stub_feature_flags(ci_enable_live_trace: true)
stub_feature_flags(job_log_json: false)
stub_not_protect_default_branch stub_not_protect_default_branch
end end
......
...@@ -10,6 +10,8 @@ describe 'User browses a job', :js do ...@@ -10,6 +10,8 @@ describe 'User browses a job', :js do
let!(:build) { create(:ci_build, :success, :trace_artifact, :coverage, pipeline: pipeline) } let!(:build) { create(:ci_build, :success, :trace_artifact, :coverage, pipeline: pipeline) }
before do before do
stub_feature_flags(job_log_json: false)
project.add_maintainer(user) project.add_maintainer(user)
project.enable_ci project.enable_ci
......
...@@ -20,6 +20,7 @@ describe 'Jobs', :clean_gitlab_redis_shared_state do ...@@ -20,6 +20,7 @@ describe 'Jobs', :clean_gitlab_redis_shared_state do
before do before do
project.add_role(user, user_access_level) project.add_role(user, user_access_level)
sign_in(user) sign_in(user)
stub_feature_flags(job_log_json: false)
end end
describe "GET /:project/jobs" do describe "GET /:project/jobs" do
......
...@@ -7,6 +7,10 @@ describe "Internal Project Access" do ...@@ -7,6 +7,10 @@ describe "Internal Project Access" do
set(:project) { create(:project, :internal, :repository) } set(:project) { create(:project, :internal, :repository) }
before do
stub_feature_flags(job_log_json: false)
end
describe "Project should be internal" do describe "Project should be internal" do
describe '#internal?' do describe '#internal?' do
subject { project.internal? } subject { project.internal? }
......
...@@ -7,6 +7,10 @@ describe "Private Project Access" do ...@@ -7,6 +7,10 @@ describe "Private Project Access" do
set(:project) { create(:project, :private, :repository, public_builds: false) } set(:project) { create(:project, :private, :repository, public_builds: false) }
before do
stub_feature_flags(job_log_json: false)
end
describe "Project should be private" do describe "Project should be private" do
describe '#private?' do describe '#private?' do
subject { project.private? } subject { project.private? }
......
...@@ -7,6 +7,10 @@ describe "Public Project Access" do ...@@ -7,6 +7,10 @@ describe "Public Project Access" do
set(:project) { create(:project, :public, :repository) } set(:project) { create(:project, :public, :repository) }
before do
stub_feature_flags(job_log_json: false)
end
describe "Project should be public" do describe "Project should be public" do
describe '#public?' do describe '#public?' do
subject { project.public? } subject { project.public? }
......
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