Commit 1495a84c authored by Mayra Cabrera's avatar Mayra Cabrera

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

Creates Feature Flag for job log

See merge request gitlab-org/gitlab-ce!32154
parents e5398754 288e709c
...@@ -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?
......
...@@ -11760,6 +11760,9 @@ msgstr "" ...@@ -11760,6 +11760,9 @@ msgstr ""
msgid "This domain is not verified. You will need to verify ownership before access is enabled." msgid "This domain is not verified. You will need to verify ownership before access is enabled."
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