Commit 56814482 authored by Kamil Trzciński's avatar Kamil Trzciński

Merge branch '28019-make-builds-show-faster' into 'master'

Performance improvement on Projects::BuildsController#show.html

Closes #28019

See merge request !9149
parents 24f1ee5e 2742fe6f
...@@ -12,7 +12,7 @@ module BuildsHelper ...@@ -12,7 +12,7 @@ module BuildsHelper
build_url: namespace_project_build_url(@project.namespace, @project, @build, :json), build_url: namespace_project_build_url(@project.namespace, @project, @build, :json),
build_status: @build.status, build_status: @build.status,
build_stage: @build.stage, build_stage: @build.stage,
log_state: @build.trace_with_state[:state].to_s log_state: ''
} }
end end
......
- @no_container = true - @no_container = true
- page_title "#{@build.name} (##{@build.id})", "Jobs" - page_title "#{@build.name} (##{@build.id})", "Jobs"
- trace_with_state = @build.trace_with_state
= render "projects/pipelines/head", build_subnav: true = render "projects/pipelines/head", build_subnav: true
%div{ class: container_class } %div{ class: container_class }
......
---
title: Avoid calling Build#trace_with_state for performance
merge_request: 9149
author: Takuya Noguchi
...@@ -9,12 +9,6 @@ require('vendor/jquery.nicescroll'); ...@@ -9,12 +9,6 @@ require('vendor/jquery.nicescroll');
describe('Build', () => { describe('Build', () => {
const BUILD_URL = `${gl.TEST_HOST}/frontend-fixtures/builds-project/builds/1`; const BUILD_URL = `${gl.TEST_HOST}/frontend-fixtures/builds-project/builds/1`;
// see spec/factories/ci/builds.rb
const BUILD_TRACE = 'BUILD TRACE';
// see lib/ci/ansi2html.rb
const INITIAL_BUILD_TRACE_STATE = window.btoa(JSON.stringify({
offset: BUILD_TRACE.length, n_open_tags: 0, fg_color: null, bg_color: null, style_mask: 0,
}));
preloadFixtures('builds/build-with-artifacts.html.raw'); preloadFixtures('builds/build-with-artifacts.html.raw');
...@@ -42,7 +36,7 @@ describe('Build', () => { ...@@ -42,7 +36,7 @@ describe('Build', () => {
expect(this.build.buildUrl).toBe(`${BUILD_URL}.json`); expect(this.build.buildUrl).toBe(`${BUILD_URL}.json`);
expect(this.build.buildStatus).toBe('success'); expect(this.build.buildStatus).toBe('success');
expect(this.build.buildStage).toBe('test'); expect(this.build.buildStage).toBe('test');
expect(this.build.state).toBe(INITIAL_BUILD_TRACE_STATE); expect(this.build.state).toBe('');
}); });
it('only shows the jobs matching the current stage', () => { it('only shows the jobs matching the current stage', () => {
...@@ -108,7 +102,7 @@ describe('Build', () => { ...@@ -108,7 +102,7 @@ describe('Build', () => {
expect($.ajax.calls.count()).toBe(2); expect($.ajax.calls.count()).toBe(2);
let [{ url, dataType, success, context }] = $.ajax.calls.argsFor(1); let [{ url, dataType, success, context }] = $.ajax.calls.argsFor(1);
expect(url).toBe( expect(url).toBe(
`${BUILD_URL}/trace.json?state=${encodeURIComponent(INITIAL_BUILD_TRACE_STATE)}`, `${BUILD_URL}/trace.json?state=`,
); );
expect(dataType).toBe('json'); expect(dataType).toBe('json');
expect(success).toEqual(jasmine.any(Function)); expect(success).toEqual(jasmine.any(Function));
......
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