summaryrefslogtreecommitdiff
path: root/spec/frontend/pipelines/graph
diff options
context:
space:
mode:
Diffstat (limited to 'spec/frontend/pipelines/graph')
-rw-r--r--spec/frontend/pipelines/graph/action_component_spec.js9
-rw-r--r--spec/frontend/pipelines/graph/graph_component_spec.js305
-rw-r--r--spec/frontend/pipelines/graph/job_group_dropdown_spec.js84
-rw-r--r--spec/frontend/pipelines/graph/job_item_spec.js8
-rw-r--r--spec/frontend/pipelines/graph/job_name_component_spec.js36
-rw-r--r--spec/frontend/pipelines/graph/linked_pipeline_spec.js24
-rw-r--r--spec/frontend/pipelines/graph/linked_pipelines_column_spec.js38
-rw-r--r--spec/frontend/pipelines/graph/linked_pipelines_mock_data.js4084
-rw-r--r--spec/frontend/pipelines/graph/mock_data.js261
-rw-r--r--spec/frontend/pipelines/graph/stage_column_component_spec.js136
10 files changed, 4609 insertions, 376 deletions
diff --git a/spec/frontend/pipelines/graph/action_component_spec.js b/spec/frontend/pipelines/graph/action_component_spec.js
index 43da6388efa..3c5938cfa1f 100644
--- a/spec/frontend/pipelines/graph/action_component_spec.js
+++ b/spec/frontend/pipelines/graph/action_component_spec.js
@@ -7,6 +7,7 @@ import ActionComponent from '~/pipelines/components/graph/action_component.vue';
describe('pipeline graph action component', () => {
let wrapper;
let mock;
+ const findButton = () => wrapper.find('button');
beforeEach(() => {
mock = new MockAdapter(axios);
@@ -44,15 +45,15 @@ describe('pipeline graph action component', () => {
});
it('should render an svg', () => {
- expect(wrapper.find('.ci-action-icon-wrapper')).toBeDefined();
- expect(wrapper.find('svg')).toBeDefined();
+ expect(wrapper.find('.ci-action-icon-wrapper').exists()).toBe(true);
+ expect(wrapper.find('svg').exists()).toBe(true);
});
describe('on click', () => {
it('emits `pipelineActionRequestComplete` after a successful request', done => {
jest.spyOn(wrapper.vm, '$emit');
- wrapper.find('button').trigger('click');
+ findButton().trigger('click');
waitForPromises()
.then(() => {
@@ -63,7 +64,7 @@ describe('pipeline graph action component', () => {
});
it('renders a loading icon while waiting for request', done => {
- wrapper.find('button').trigger('click');
+ findButton().trigger('click');
wrapper.vm.$nextTick(() => {
expect(wrapper.find('.js-action-icon-loading').exists()).toBe(true);
diff --git a/spec/frontend/pipelines/graph/graph_component_spec.js b/spec/frontend/pipelines/graph/graph_component_spec.js
new file mode 100644
index 00000000000..a9b06eab3fa
--- /dev/null
+++ b/spec/frontend/pipelines/graph/graph_component_spec.js
@@ -0,0 +1,305 @@
+import Vue from 'vue';
+import { mount } from '@vue/test-utils';
+import PipelineStore from '~/pipelines/stores/pipeline_store';
+import graphComponent from '~/pipelines/components/graph/graph_component.vue';
+import stageColumnComponent from '~/pipelines/components/graph/stage_column_component.vue';
+import linkedPipelinesColumn from '~/pipelines/components/graph/linked_pipelines_column.vue';
+import graphJSON from './mock_data';
+import linkedPipelineJSON from './linked_pipelines_mock_data';
+import PipelinesMediator from '~/pipelines/pipeline_details_mediator';
+
+describe('graph component', () => {
+ const store = new PipelineStore();
+ store.storePipeline(linkedPipelineJSON);
+ const mediator = new PipelinesMediator({ endpoint: '' });
+
+ let wrapper;
+
+ afterEach(() => {
+ wrapper.destroy();
+ wrapper = null;
+ });
+
+ describe('while is loading', () => {
+ it('should render a loading icon', () => {
+ wrapper = mount(graphComponent, {
+ propsData: {
+ isLoading: true,
+ pipeline: {},
+ mediator,
+ },
+ });
+
+ expect(wrapper.find('.gl-spinner').exists()).toBe(true);
+ });
+ });
+
+ describe('with data', () => {
+ it('should render the graph', () => {
+ wrapper = mount(graphComponent, {
+ propsData: {
+ isLoading: false,
+ pipeline: graphJSON,
+ mediator,
+ },
+ });
+
+ expect(wrapper.find('.js-pipeline-graph').exists()).toBe(true);
+
+ expect(wrapper.find(stageColumnComponent).classes()).toContain('no-margin');
+
+ expect(
+ wrapper
+ .findAll(stageColumnComponent)
+ .at(1)
+ .classes(),
+ ).toContain('left-margin');
+
+ expect(wrapper.find('.stage-column:nth-child(2) .build:nth-child(1)').classes()).toContain(
+ 'left-connector',
+ );
+
+ expect(wrapper.find('.loading-icon').exists()).toBe(false);
+
+ expect(wrapper.find('.stage-column-list').exists()).toBe(true);
+ });
+ });
+
+ describe('when linked pipelines are present', () => {
+ beforeEach(() => {
+ wrapper = mount(graphComponent, {
+ propsData: {
+ isLoading: false,
+ pipeline: store.state.pipeline,
+ mediator,
+ },
+ });
+ });
+
+ describe('rendered output', () => {
+ it('should include the pipelines graph', () => {
+ expect(wrapper.find('.js-pipeline-graph').exists()).toBe(true);
+ });
+
+ it('should not include the loading icon', () => {
+ expect(wrapper.find('.fa-spinner').exists()).toBe(false);
+ });
+
+ it('should include the stage column list', () => {
+ expect(wrapper.find(stageColumnComponent).exists()).toBe(true);
+ });
+
+ it('should include the no-margin class on the first child if there is only one job', () => {
+ const firstStageColumnElement = wrapper.find(stageColumnComponent);
+
+ expect(firstStageColumnElement.classes()).toContain('no-margin');
+ });
+
+ it('should include the has-only-one-job class on the first child', () => {
+ const firstStageColumnElement = wrapper.find('.stage-column-list .stage-column');
+
+ expect(firstStageColumnElement.classes()).toContain('has-only-one-job');
+ });
+
+ it('should include the left-margin class on the second child', () => {
+ const firstStageColumnElement = wrapper.find('.stage-column-list .stage-column:last-child');
+
+ expect(firstStageColumnElement.classes()).toContain('left-margin');
+ });
+
+ it('should include the js-has-linked-pipelines flag', () => {
+ expect(wrapper.find('.js-has-linked-pipelines').exists()).toBe(true);
+ });
+ });
+
+ describe('computeds and methods', () => {
+ describe('capitalizeStageName', () => {
+ it('it capitalizes the stage name', () => {
+ expect(
+ wrapper
+ .findAll('.stage-column .stage-name')
+ .at(1)
+ .text(),
+ ).toBe('Prebuild');
+ });
+ });
+
+ describe('stageConnectorClass', () => {
+ it('it returns left-margin when there is a triggerer', () => {
+ expect(
+ wrapper
+ .findAll(stageColumnComponent)
+ .at(1)
+ .classes(),
+ ).toContain('left-margin');
+ });
+ });
+ });
+
+ describe('linked pipelines components', () => {
+ beforeEach(() => {
+ wrapper = mount(graphComponent, {
+ propsData: {
+ isLoading: false,
+ pipeline: store.state.pipeline,
+ mediator,
+ },
+ });
+ });
+
+ it('should render an upstream pipelines column at first position', () => {
+ expect(wrapper.find(linkedPipelinesColumn).exists()).toBe(true);
+ expect(wrapper.find('.stage-column .stage-name').text()).toBe('Upstream');
+ });
+
+ it('should render a downstream pipelines column at last position', () => {
+ const stageColumnNames = wrapper.findAll('.stage-column .stage-name');
+
+ expect(wrapper.find(linkedPipelinesColumn).exists()).toBe(true);
+ expect(stageColumnNames.at(stageColumnNames.length - 1).text()).toBe('Downstream');
+ });
+
+ describe('triggered by', () => {
+ describe('on click', () => {
+ it('should emit `onClickTriggeredBy` when triggered by linked pipeline is clicked', () => {
+ const btnWrapper = wrapper.find('.linked-pipeline-content');
+
+ btnWrapper.trigger('click');
+
+ btnWrapper.vm.$nextTick(() => {
+ expect(wrapper.emitted().onClickTriggeredBy).toEqual([
+ store.state.pipeline.triggered_by,
+ ]);
+ });
+ });
+ });
+
+ describe('with expanded pipeline', () => {
+ it('should render expanded pipeline', done => {
+ // expand the pipeline
+ store.state.pipeline.triggered_by[0].isExpanded = true;
+
+ wrapper = mount(graphComponent, {
+ propsData: {
+ isLoading: false,
+ pipeline: store.state.pipeline,
+ mediator,
+ },
+ });
+
+ Vue.nextTick()
+ .then(() => {
+ expect(wrapper.find('.js-upstream-pipeline-12').exists()).toBe(true);
+ })
+ .then(done)
+ .catch(done.fail);
+ });
+ });
+ });
+
+ describe('triggered', () => {
+ describe('on click', () => {
+ it('should emit `onClickTriggered`', () => {
+ // We have to mock this method since we do both style change and
+ // emit and event, not mocking returns an error.
+ wrapper.setMethods({
+ handleClickedDownstream: jest.fn(() =>
+ wrapper.vm.$emit('onClickTriggered', ...store.state.pipeline.triggered),
+ ),
+ });
+
+ const btnWrappers = wrapper.findAll('.linked-pipeline-content');
+ const downstreamBtnWrapper = btnWrappers.at(btnWrappers.length - 1);
+
+ downstreamBtnWrapper.trigger('click');
+
+ downstreamBtnWrapper.vm.$nextTick(() => {
+ expect(wrapper.emitted().onClickTriggered).toEqual([store.state.pipeline.triggered]);
+ });
+ });
+ });
+
+ describe('with expanded pipeline', () => {
+ it('should render expanded pipeline', done => {
+ // expand the pipeline
+ store.state.pipeline.triggered[0].isExpanded = true;
+
+ wrapper = mount(graphComponent, {
+ propsData: {
+ isLoading: false,
+ pipeline: store.state.pipeline,
+ mediator,
+ },
+ });
+
+ Vue.nextTick()
+ .then(() => {
+ expect(wrapper.find('.js-downstream-pipeline-34993051')).not.toBeNull();
+ })
+ .then(done)
+ .catch(done.fail);
+ });
+ });
+ });
+ });
+ });
+
+ describe('when linked pipelines are not present', () => {
+ beforeEach(() => {
+ const pipeline = Object.assign(linkedPipelineJSON, { triggered: null, triggered_by: null });
+ wrapper = mount(graphComponent, {
+ propsData: {
+ isLoading: false,
+ pipeline,
+ mediator,
+ },
+ });
+ });
+
+ describe('rendered output', () => {
+ it('should include the first column with a no margin', () => {
+ const firstColumn = wrapper.find('.stage-column');
+
+ expect(firstColumn.classes()).toContain('no-margin');
+ });
+
+ it('should not render a linked pipelines column', () => {
+ expect(wrapper.find('.linked-pipelines-column').exists()).toBe(false);
+ });
+ });
+
+ describe('stageConnectorClass', () => {
+ it('it returns no-margin when no triggerer and there is one job', () => {
+ expect(wrapper.find(stageColumnComponent).classes()).toContain('no-margin');
+ });
+
+ it('it returns left-margin when no triggerer and not the first stage', () => {
+ expect(
+ wrapper
+ .findAll(stageColumnComponent)
+ .at(1)
+ .classes(),
+ ).toContain('left-margin');
+ });
+ });
+ });
+
+ describe('capitalizeStageName', () => {
+ it('capitalizes and escapes stage name', () => {
+ wrapper = mount(graphComponent, {
+ propsData: {
+ isLoading: false,
+ pipeline: graphJSON,
+ mediator,
+ },
+ });
+
+ expect(
+ wrapper
+ .find('.stage-column:nth-child(2) .stage-name')
+ .text()
+ .trim(),
+ ).toEqual('Deploy <img src=x onerror=alert(document.domain)>');
+ });
+ });
+});
diff --git a/spec/frontend/pipelines/graph/job_group_dropdown_spec.js b/spec/frontend/pipelines/graph/job_group_dropdown_spec.js
new file mode 100644
index 00000000000..b323e1d8a06
--- /dev/null
+++ b/spec/frontend/pipelines/graph/job_group_dropdown_spec.js
@@ -0,0 +1,84 @@
+import { shallowMount } from '@vue/test-utils';
+import JobGroupDropdown from '~/pipelines/components/graph/job_group_dropdown.vue';
+
+describe('job group dropdown component', () => {
+ const group = {
+ jobs: [
+ {
+ id: 4256,
+ name: '<img src=x onerror=alert(document.domain)>',
+ status: {
+ icon: 'status_success',
+ text: 'passed',
+ label: 'passed',
+ tooltip: 'passed',
+ group: 'success',
+ details_path: '/root/ci-mock/builds/4256',
+ has_details: true,
+ action: {
+ icon: 'retry',
+ title: 'Retry',
+ path: '/root/ci-mock/builds/4256/retry',
+ method: 'post',
+ },
+ },
+ },
+ {
+ id: 4299,
+ name: 'test',
+ status: {
+ icon: 'status_success',
+ text: 'passed',
+ label: 'passed',
+ tooltip: 'passed',
+ group: 'success',
+ details_path: '/root/ci-mock/builds/4299',
+ has_details: true,
+ action: {
+ icon: 'retry',
+ title: 'Retry',
+ path: '/root/ci-mock/builds/4299/retry',
+ method: 'post',
+ },
+ },
+ },
+ ],
+ name: 'rspec:linux',
+ size: 2,
+ status: {
+ icon: 'status_success',
+ text: 'passed',
+ label: 'passed',
+ tooltip: 'passed',
+ group: 'success',
+ details_path: '/root/ci-mock/builds/4256',
+ has_details: true,
+ action: {
+ icon: 'retry',
+ title: 'Retry',
+ path: '/root/ci-mock/builds/4256/retry',
+ method: 'post',
+ },
+ },
+ };
+
+ let wrapper;
+ const findButton = () => wrapper.find('button');
+
+ afterEach(() => {
+ wrapper.destroy();
+ });
+
+ beforeEach(() => {
+ wrapper = shallowMount(JobGroupDropdown, { propsData: { group } });
+ });
+
+ it('renders button with group name and size', () => {
+ expect(findButton().text()).toContain(group.name);
+ expect(findButton().text()).toContain(group.size);
+ });
+
+ it('renders dropdown with jobs', () => {
+ expect(wrapper.findAll('.scrollable-menu>ul>li').length).toBe(group.jobs.length);
+ });
+});
diff --git a/spec/frontend/pipelines/graph/job_item_spec.js b/spec/frontend/pipelines/graph/job_item_spec.js
index 0c64d5c9fa8..da777466e3e 100644
--- a/spec/frontend/pipelines/graph/job_item_spec.js
+++ b/spec/frontend/pipelines/graph/job_item_spec.js
@@ -47,7 +47,7 @@ describe('pipeline graph job item', () => {
expect(link.attributes('title')).toEqual(`${mockJob.name} - ${mockJob.status.label}`);
- expect(wrapper.find('.js-status-icon-success')).toBeDefined();
+ expect(wrapper.find('.ci-status-icon-success').exists()).toBe(true);
expect(trimText(wrapper.find('.ci-status-text').text())).toBe(mockJob.name);
@@ -73,7 +73,7 @@ describe('pipeline graph job item', () => {
},
});
- expect(wrapper.find('.js-status-icon-success')).toBeDefined();
+ expect(wrapper.find('.ci-status-icon-success').exists()).toBe(true);
expect(wrapper.find('a').exists()).toBe(false);
expect(trimText(wrapper.find('.ci-status-text').text())).toEqual(mockJob.name);
@@ -84,8 +84,8 @@ describe('pipeline graph job item', () => {
it('it should render the action icon', () => {
createWrapper({ job: mockJob });
- expect(wrapper.find('a.ci-action-icon-container')).toBeDefined();
- expect(wrapper.find('i.ci-action-icon-wrapper')).toBeDefined();
+ expect(wrapper.find('.ci-action-icon-container').exists()).toBe(true);
+ expect(wrapper.find('.ci-action-icon-wrapper').exists()).toBe(true);
});
});
diff --git a/spec/frontend/pipelines/graph/job_name_component_spec.js b/spec/frontend/pipelines/graph/job_name_component_spec.js
new file mode 100644
index 00000000000..3574b66403e
--- /dev/null
+++ b/spec/frontend/pipelines/graph/job_name_component_spec.js
@@ -0,0 +1,36 @@
+import { mount } from '@vue/test-utils';
+import ciIcon from '~/vue_shared/components/ci_icon.vue';
+
+import jobNameComponent from '~/pipelines/components/graph/job_name_component.vue';
+
+describe('job name component', () => {
+ let wrapper;
+
+ const propsData = {
+ name: 'foo',
+ status: {
+ icon: 'status_success',
+ group: 'success',
+ },
+ };
+
+ beforeEach(() => {
+ wrapper = mount(jobNameComponent, {
+ propsData,
+ });
+ });
+
+ it('should render the provided name', () => {
+ expect(
+ wrapper
+ .find('.ci-status-text')
+ .text()
+ .trim(),
+ ).toBe(propsData.name);
+ });
+
+ it('should render an icon with the provided status', () => {
+ expect(wrapper.find(ciIcon).exists()).toBe(true);
+ expect(wrapper.find('.ci-status-icon-success').exists()).toBe(true);
+ });
+});
diff --git a/spec/frontend/pipelines/graph/linked_pipeline_spec.js b/spec/frontend/pipelines/graph/linked_pipeline_spec.js
index 7f49b21100d..cf78aa3ef71 100644
--- a/spec/frontend/pipelines/graph/linked_pipeline_spec.js
+++ b/spec/frontend/pipelines/graph/linked_pipeline_spec.js
@@ -1,12 +1,17 @@
import { mount } from '@vue/test-utils';
import LinkedPipelineComponent from '~/pipelines/components/graph/linked_pipeline.vue';
+import CiStatus from '~/vue_shared/components/ci_icon.vue';
import mockData from './linked_pipelines_mock_data';
const mockPipeline = mockData.triggered[0];
+const validTriggeredPipelineId = mockPipeline.project.id;
+const invalidTriggeredPipelineId = mockPipeline.project.id + 5;
+
describe('Linked pipeline', () => {
let wrapper;
+ const findButton = () => wrapper.find('button');
const createWrapper = propsData => {
wrapper = mount(LinkedPipelineComponent, {
@@ -21,7 +26,7 @@ describe('Linked pipeline', () => {
describe('rendered output', () => {
const props = {
pipeline: mockPipeline,
- projectId: 20,
+ projectId: invalidTriggeredPipelineId,
columnTitle: 'Downstream',
};
@@ -44,14 +49,13 @@ describe('Linked pipeline', () => {
});
it('should render an svg within the status container', () => {
- const pipelineStatusElement = wrapper.find('.js-linked-pipeline-status');
+ const pipelineStatusElement = wrapper.find(CiStatus);
expect(pipelineStatusElement.find('svg').exists()).toBe(true);
});
it('should render the pipeline status icon svg', () => {
- expect(wrapper.find('.js-ci-status-icon-running').exists()).toBe(true);
- expect(wrapper.find('.js-ci-status-icon-running').html()).toContain('<svg');
+ expect(wrapper.find('.ci-status-icon-failed svg').exists()).toBe(true);
});
it('should have a ci-status child component', () => {
@@ -88,7 +92,7 @@ describe('Linked pipeline', () => {
describe('parent/child', () => {
const downstreamProps = {
pipeline: mockPipeline,
- projectId: 19,
+ projectId: validTriggeredPipelineId,
columnTitle: 'Downstream',
};
@@ -116,7 +120,7 @@ describe('Linked pipeline', () => {
describe('when isLoading is true', () => {
const props = {
pipeline: { ...mockPipeline, isLoading: true },
- projectId: 19,
+ projectId: invalidTriggeredPipelineId,
columnTitle: 'Downstream',
};
@@ -132,7 +136,7 @@ describe('Linked pipeline', () => {
describe('on click', () => {
const props = {
pipeline: mockPipeline,
- projectId: 19,
+ projectId: validTriggeredPipelineId,
columnTitle: 'Downstream',
};
@@ -142,18 +146,18 @@ describe('Linked pipeline', () => {
it('emits `pipelineClicked` event', () => {
jest.spyOn(wrapper.vm, '$emit');
- wrapper.find('button').trigger('click');
+ findButton().trigger('click');
expect(wrapper.emitted().pipelineClicked).toBeTruthy();
});
it('should emit `bv::hide::tooltip` to close the tooltip', () => {
jest.spyOn(wrapper.vm.$root, '$emit');
- wrapper.find('button').trigger('click');
+ findButton().trigger('click');
expect(wrapper.vm.$root.$emit.mock.calls[0]).toEqual([
'bv::hide::tooltip',
- 'js-linked-pipeline-132',
+ 'js-linked-pipeline-34993051',
]);
});
});
diff --git a/spec/frontend/pipelines/graph/linked_pipelines_column_spec.js b/spec/frontend/pipelines/graph/linked_pipelines_column_spec.js
new file mode 100644
index 00000000000..82eaa553d0c
--- /dev/null
+++ b/spec/frontend/pipelines/graph/linked_pipelines_column_spec.js
@@ -0,0 +1,38 @@
+import { shallowMount } from '@vue/test-utils';
+import LinkedPipelinesColumn from '~/pipelines/components/graph/linked_pipelines_column.vue';
+import LinkedPipeline from '~/pipelines/components/graph/linked_pipeline.vue';
+import mockData from './linked_pipelines_mock_data';
+
+describe('Linked Pipelines Column', () => {
+ const propsData = {
+ columnTitle: 'Upstream',
+ linkedPipelines: mockData.triggered,
+ graphPosition: 'right',
+ projectId: 19,
+ };
+ let wrapper;
+
+ beforeEach(() => {
+ wrapper = shallowMount(LinkedPipelinesColumn, { propsData });
+ });
+
+ afterEach(() => {
+ wrapper.destroy();
+ });
+
+ it('renders the pipeline orientation', () => {
+ const titleElement = wrapper.find('.linked-pipelines-column-title');
+
+ expect(titleElement.text()).toBe(propsData.columnTitle);
+ });
+
+ it('renders the correct number of linked pipelines', () => {
+ const linkedPipelineElements = wrapper.findAll(LinkedPipeline);
+
+ expect(linkedPipelineElements.length).toBe(propsData.linkedPipelines.length);
+ });
+
+ it('renders cross project triangle when column is upstream', () => {
+ expect(wrapper.find('.cross-project-triangle').exists()).toBe(true);
+ });
+});
diff --git a/spec/frontend/pipelines/graph/linked_pipelines_mock_data.js b/spec/frontend/pipelines/graph/linked_pipelines_mock_data.js
index c9a94b3101f..3e9c0814403 100644
--- a/spec/frontend/pipelines/graph/linked_pipelines_mock_data.js
+++ b/spec/frontend/pipelines/graph/linked_pipelines_mock_data.js
@@ -1,411 +1,3779 @@
export default {
- project: {
- id: 19,
+ id: 23211253,
+ user: {
+ id: 3585,
+ name: 'Achilleas Pipinellis',
+ username: 'axil',
+ state: 'active',
+ avatar_url: 'https://assets.gitlab-static.net/uploads/-/system/user/avatar/3585/avatar.png',
+ web_url: 'https://gitlab.com/axil',
+ status_tooltip_html:
+ '\u003cspan class="user-status-emoji has-tooltip" title="I like pizza" data-html="true" data-placement="top"\u003e\u003cgl-emoji title="slice of pizza" data-name="pizza" data-unicode-version="6.0"\u003e🍕\u003c/gl-emoji\u003e\u003c/span\u003e',
+ path: '/axil',
},
- triggered_by: {
- id: 129,
- active: true,
- path: '/gitlab-org/gitlab-foss/pipelines/129',
- project: {
- name: 'GitLabCE',
- },
- details: {
- status: {
- icon: 'status_running',
- text: 'running',
- label: 'running',
- group: 'running',
- has_details: true,
- details_path: '/gitlab-org/gitlab-foss/pipelines/129',
- favicon:
- '/assets/ci_favicons/dev/favicon_status_running-c3ad2fc53ea6079c174e5b6c1351ff349e99ec3af5a5622fb77b0fe53ea279c1.ico',
- },
- },
- flags: {
- latest: false,
- triggered: false,
- stuck: false,
- yaml_errors: false,
- retryable: true,
- cancelable: true,
- },
- ref: {
- name: '7-5-stable',
- path: '/gitlab-org/gitlab-foss/commits/7-5-stable',
- tag: false,
- branch: true,
- },
- commit: {
- id: '23433d4d8b20d7e45c103d0b6048faad38a130ab',
- short_id: '23433d4d',
- title: 'Version 7.5.0.rc1',
- created_at: '2014-11-17T15:44:14.000+01:00',
- parent_ids: ['30ac909f30f58d319b42ed1537664483894b18cd'],
- message: 'Version 7.5.0.rc1\n',
- author_name: 'Jacob Vosmaer',
- author_email: 'contact@jacobvosmaer.nl',
- authored_date: '2014-11-17T15:44:14.000+01:00',
- committer_name: 'Jacob Vosmaer',
- committer_email: 'contact@jacobvosmaer.nl',
- committed_date: '2014-11-17T15:44:14.000+01:00',
- author_gravatar_url:
- 'http://www.gravatar.com/avatar/e66d11c0eedf8c07b3b18fca46599807?s=80&d=identicon',
- commit_url:
- 'http://localhost:3000/gitlab-org/gitlab-foss/commit/23433d4d8b20d7e45c103d0b6048faad38a130ab',
- commit_path: '/gitlab-org/gitlab-foss/commit/23433d4d8b20d7e45c103d0b6048faad38a130ab',
- },
- retry_path: '/gitlab-org/gitlab-foss/pipelines/129/retry',
- cancel_path: '/gitlab-org/gitlab-foss/pipelines/129/cancel',
- created_at: '2017-05-24T14:46:20.090Z',
- updated_at: '2017-05-24T14:46:29.906Z',
+ active: false,
+ coverage: null,
+ source: 'push',
+ created_at: '2018-06-05T11:31:30.452Z',
+ updated_at: '2018-10-31T16:35:31.305Z',
+ path: '/gitlab-org/gitlab-runner/pipelines/23211253',
+ flags: {
+ latest: false,
+ stuck: false,
+ auto_devops: false,
+ merge_request: false,
+ yaml_errors: false,
+ retryable: false,
+ cancelable: false,
+ failure_reason: false,
},
- triggered: [
- {
- id: 132,
- active: true,
- path: '/gitlab-org/gitlab-foss/pipelines/132',
- project: {
- name: 'GitLabCE',
- id: 19,
- },
- details: {
+ details: {
+ status: {
+ icon: 'status_success',
+ text: 'passed',
+ label: 'passed',
+ group: 'success',
+ tooltip: 'passed',
+ has_details: true,
+ details_path: '/gitlab-org/gitlab-runner/pipelines/23211253',
+ illustration: null,
+ favicon:
+ 'https://gitlab.com/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png',
+ },
+ duration: 53,
+ finished_at: '2018-10-31T16:35:31.299Z',
+ stages: [
+ {
+ name: 'prebuild',
+ title: 'prebuild: passed',
+ groups: [
+ {
+ name: 'review-docs-deploy',
+ size: 1,
+ status: {
+ icon: 'status_success',
+ text: 'passed',
+ label: 'manual play action',
+ group: 'success',
+ tooltip: 'passed',
+ has_details: true,
+ details_path: '/gitlab-org/gitlab-runner/-/jobs/72469032',
+ illustration: {
+ image:
+ 'https://assets.gitlab-static.net/assets/illustrations/manual_action-2b4ca0d1bcfd92aebf33d484e36cbf7a102d007f76b5a0cfea636033a629d601.svg',
+ size: 'svg-394',
+ title: 'This job requires a manual action',
+ content:
+ 'This job depends on a user to trigger its process. Often they are used to deploy code to production environments',
+ },
+ favicon:
+ 'https://gitlab.com/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png',
+ action: {
+ icon: 'play',
+ title: 'Play',
+ path: '/gitlab-org/gitlab-runner/-/jobs/72469032/play',
+ method: 'post',
+ button_title: 'Trigger this manual action',
+ },
+ },
+ jobs: [
+ {
+ id: 72469032,
+ name: 'review-docs-deploy',
+ started: '2018-10-31T16:34:58.778Z',
+ archived: false,
+ build_path: '/gitlab-org/gitlab-runner/-/jobs/72469032',
+ retry_path: '/gitlab-org/gitlab-runner/-/jobs/72469032/retry',
+ play_path: '/gitlab-org/gitlab-runner/-/jobs/72469032/play',
+ playable: true,
+ scheduled: false,
+ created_at: '2018-06-05T11:31:30.495Z',
+ updated_at: '2018-10-31T16:35:31.251Z',
+ status: {
+ icon: 'status_success',
+ text: 'passed',
+ label: 'manual play action',
+ group: 'success',
+ tooltip: 'passed',
+ has_details: true,
+ details_path: '/gitlab-org/gitlab-runner/-/jobs/72469032',
+ illustration: {
+ image:
+ 'https://assets.gitlab-static.net/assets/illustrations/manual_action-2b4ca0d1bcfd92aebf33d484e36cbf7a102d007f76b5a0cfea636033a629d601.svg',
+ size: 'svg-394',
+ title: 'This job requires a manual action',
+ content:
+ 'This job depends on a user to trigger its process. Often they are used to deploy code to production environments',
+ },
+ favicon:
+ 'https://gitlab.com/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png',
+ action: {
+ icon: 'play',
+ title: 'Play',
+ path: '/gitlab-org/gitlab-runner/-/jobs/72469032/play',
+ method: 'post',
+ button_title: 'Trigger this manual action',
+ },
+ },
+ },
+ ],
+ },
+ ],
status: {
- icon: 'status_running',
- text: 'running',
- label: 'running',
- group: 'running',
+ icon: 'status_success',
+ text: 'passed',
+ label: 'passed',
+ group: 'success',
+ tooltip: 'passed',
has_details: true,
- details_path: '/gitlab-org/gitlab-foss/pipelines/132',
+ details_path: '/gitlab-org/gitlab-runner/pipelines/23211253#prebuild',
+ illustration: null,
favicon:
- '/assets/ci_favicons/dev/favicon_status_running-c3ad2fc53ea6079c174e5b6c1351ff349e99ec3af5a5622fb77b0fe53ea279c1.ico',
+ 'https://gitlab.com/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png',
},
+ path: '/gitlab-org/gitlab-runner/pipelines/23211253#prebuild',
+ dropdown_path: '/gitlab-org/gitlab-runner/pipelines/23211253/stage.json?stage=prebuild',
},
- flags: {
- latest: false,
- triggered: false,
- stuck: false,
- yaml_errors: false,
- retryable: true,
- cancelable: true,
- },
- ref: {
- name: 'crowd',
- path: '/gitlab-org/gitlab-foss/commits/crowd',
- tag: false,
- branch: true,
- },
- commit: {
- id: 'b9d58c4cecd06be74c3cc32ccfb522b31544ab2e',
- short_id: 'b9d58c4c',
- title: 'getting user keys publically through http without any authentication, the github…',
- created_at: '2013-10-03T12:50:33.000+05:30',
- parent_ids: ['e219cf7246c6a0495e4507deaffeba11e79f13b8'],
- message:
- 'getting user keys publically through http without any authentication, the github way. E.g: http://github.com/devaroop.keys\n\nchangelog updated to include ssh key retrieval feature update\n',
- author_name: 'devaroop',
- author_email: 'devaroop123@yahoo.co.in',
- authored_date: '2013-10-02T20:39:29.000+05:30',
- committer_name: 'devaroop',
- committer_email: 'devaroop123@yahoo.co.in',
- committed_date: '2013-10-03T12:50:33.000+05:30',
- author_gravatar_url:
- 'http://www.gravatar.com/avatar/35df4b155ec66a3127d53459941cf8a2?s=80&d=identicon',
- commit_url:
- 'http://localhost:3000/gitlab-org/gitlab-foss/commit/b9d58c4cecd06be74c3cc32ccfb522b31544ab2e',
- commit_path: '/gitlab-org/gitlab-foss/commit/b9d58c4cecd06be74c3cc32ccfb522b31544ab2e',
- },
- retry_path: '/gitlab-org/gitlab-foss/pipelines/132/retry',
- cancel_path: '/gitlab-org/gitlab-foss/pipelines/132/cancel',
- created_at: '2017-05-24T14:46:24.644Z',
- updated_at: '2017-05-24T14:48:55.226Z',
- },
- {
- id: 133,
- active: true,
- path: '/gitlab-org/gitlab-foss/pipelines/133',
- project: {
- name: 'GitLabCE',
- },
- details: {
+ {
+ name: 'test',
+ title: 'test: passed',
+ groups: [
+ {
+ name: 'docs check links',
+ size: 1,
+ status: {
+ icon: 'status_success',
+ text: 'passed',
+ label: 'passed',
+ group: 'success',
+ tooltip: 'passed',
+ has_details: true,
+ details_path: '/gitlab-org/gitlab-runner/-/jobs/72469033',
+ illustration: {
+ image:
+ 'https://assets.gitlab-static.net/assets/illustrations/skipped-job_empty-8b877955fbf175e42ae65b6cb95346e15282c6fc5b682756c329af3a0055225e.svg',
+ size: 'svg-430',
+ title: 'This job does not have a trace.',
+ },
+ favicon:
+ 'https://gitlab.com/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png',
+ action: {
+ icon: 'retry',
+ title: 'Retry',
+ path: '/gitlab-org/gitlab-runner/-/jobs/72469033/retry',
+ method: 'post',
+ button_title: 'Retry this job',
+ },
+ },
+ jobs: [
+ {
+ id: 72469033,
+ name: 'docs check links',
+ started: '2018-06-05T11:31:33.240Z',
+ archived: false,
+ build_path: '/gitlab-org/gitlab-runner/-/jobs/72469033',
+ retry_path: '/gitlab-org/gitlab-runner/-/jobs/72469033/retry',
+ playable: false,
+ scheduled: false,
+ created_at: '2018-06-05T11:31:30.627Z',
+ updated_at: '2018-06-05T11:31:54.363Z',
+ status: {
+ icon: 'status_success',
+ text: 'passed',
+ label: 'passed',
+ group: 'success',
+ tooltip: 'passed',
+ has_details: true,
+ details_path: '/gitlab-org/gitlab-runner/-/jobs/72469033',
+ illustration: {
+ image:
+ 'https://assets.gitlab-static.net/assets/illustrations/skipped-job_empty-8b877955fbf175e42ae65b6cb95346e15282c6fc5b682756c329af3a0055225e.svg',
+ size: 'svg-430',
+ title: 'This job does not have a trace.',
+ },
+ favicon:
+ 'https://gitlab.com/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png',
+ action: {
+ icon: 'retry',
+ title: 'Retry',
+ path: '/gitlab-org/gitlab-runner/-/jobs/72469033/retry',
+ method: 'post',
+ button_title: 'Retry this job',
+ },
+ },
+ },
+ ],
+ },
+ ],
status: {
- icon: 'status_running',
- text: 'running',
- label: 'running',
- group: 'running',
+ icon: 'status_success',
+ text: 'passed',
+ label: 'passed',
+ group: 'success',
+ tooltip: 'passed',
has_details: true,
- details_path: '/gitlab-org/gitlab-foss/pipelines/133',
+ details_path: '/gitlab-org/gitlab-runner/pipelines/23211253#test',
+ illustration: null,
favicon:
- '/assets/ci_favicons/dev/favicon_status_running-c3ad2fc53ea6079c174e5b6c1351ff349e99ec3af5a5622fb77b0fe53ea279c1.ico',
+ 'https://gitlab.com/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png',
},
+ path: '/gitlab-org/gitlab-runner/pipelines/23211253#test',
+ dropdown_path: '/gitlab-org/gitlab-runner/pipelines/23211253/stage.json?stage=test',
},
- flags: {
- latest: false,
- triggered: false,
- stuck: false,
- yaml_errors: false,
- retryable: true,
- cancelable: true,
- },
- ref: {
- name: 'crowd',
- path: '/gitlab-org/gitlab-foss/commits/crowd',
- tag: false,
- branch: true,
- },
- commit: {
- id: 'b6bd4856a33df3d144be66c4ed1f1396009bb08b',
- short_id: 'b6bd4856',
- title: 'getting user keys publically through http without any authentication, the github…',
- created_at: '2013-10-02T20:39:29.000+05:30',
- parent_ids: ['e219cf7246c6a0495e4507deaffeba11e79f13b8'],
- message:
- 'getting user keys publically through http without any authentication, the github way. E.g: http://github.com/devaroop.keys\n',
- author_name: 'devaroop',
- author_email: 'devaroop123@yahoo.co.in',
- authored_date: '2013-10-02T20:39:29.000+05:30',
- committer_name: 'devaroop',
- committer_email: 'devaroop123@yahoo.co.in',
- committed_date: '2013-10-02T20:39:29.000+05:30',
- author_gravatar_url:
- 'http://www.gravatar.com/avatar/35df4b155ec66a3127d53459941cf8a2?s=80&d=identicon',
- commit_url:
- 'http://localhost:3000/gitlab-org/gitlab-foss/commit/b6bd4856a33df3d144be66c4ed1f1396009bb08b',
- commit_path: '/gitlab-org/gitlab-foss/commit/b6bd4856a33df3d144be66c4ed1f1396009bb08b',
- },
- retry_path: '/gitlab-org/gitlab-foss/pipelines/133/retry',
- cancel_path: '/gitlab-org/gitlab-foss/pipelines/133/cancel',
- created_at: '2017-05-24T14:46:24.648Z',
- updated_at: '2017-05-24T14:48:59.673Z',
- },
- {
- id: 130,
- active: true,
- path: '/gitlab-org/gitlab-foss/pipelines/130',
- project: {
- name: 'GitLabCE',
- },
- details: {
+ {
+ name: 'cleanup',
+ title: 'cleanup: skipped',
+ groups: [
+ {
+ name: 'review-docs-cleanup',
+ size: 1,
+ status: {
+ icon: 'status_manual',
+ text: 'manual',
+ label: 'manual stop action',
+ group: 'manual',
+ tooltip: 'manual action',
+ has_details: true,
+ details_path: '/gitlab-org/gitlab-runner/-/jobs/72469034',
+ illustration: {
+ image:
+ 'https://assets.gitlab-static.net/assets/illustrations/manual_action-2b4ca0d1bcfd92aebf33d484e36cbf7a102d007f76b5a0cfea636033a629d601.svg',
+ size: 'svg-394',
+ title: 'This job requires a manual action',
+ content:
+ 'This job depends on a user to trigger its process. Often they are used to deploy code to production environments',
+ },
+ favicon:
+ 'https://gitlab.com/assets/ci_favicons/favicon_status_manual-829a0804612cef47d9efc1618dba38325483657c847dba0546c3b9f0295bb36c.png',
+ action: {
+ icon: 'stop',
+ title: 'Stop',
+ path: '/gitlab-org/gitlab-runner/-/jobs/72469034/play',
+ method: 'post',
+ button_title: 'Stop this environment',
+ },
+ },
+ jobs: [
+ {
+ id: 72469034,
+ name: 'review-docs-cleanup',
+ started: null,
+ archived: false,
+ build_path: '/gitlab-org/gitlab-runner/-/jobs/72469034',
+ play_path: '/gitlab-org/gitlab-runner/-/jobs/72469034/play',
+ playable: true,
+ scheduled: false,
+ created_at: '2018-06-05T11:31:30.760Z',
+ updated_at: '2018-06-05T11:31:56.037Z',
+ status: {
+ icon: 'status_manual',
+ text: 'manual',
+ label: 'manual stop action',
+ group: 'manual',
+ tooltip: 'manual action',
+ has_details: true,
+ details_path: '/gitlab-org/gitlab-runner/-/jobs/72469034',
+ illustration: {
+ image:
+ 'https://assets.gitlab-static.net/assets/illustrations/manual_action-2b4ca0d1bcfd92aebf33d484e36cbf7a102d007f76b5a0cfea636033a629d601.svg',
+ size: 'svg-394',
+ title: 'This job requires a manual action',
+ content:
+ 'This job depends on a user to trigger its process. Often they are used to deploy code to production environments',
+ },
+ favicon:
+ 'https://gitlab.com/assets/ci_favicons/favicon_status_manual-829a0804612cef47d9efc1618dba38325483657c847dba0546c3b9f0295bb36c.png',
+ action: {
+ icon: 'stop',
+ title: 'Stop',
+ path: '/gitlab-org/gitlab-runner/-/jobs/72469034/play',
+ method: 'post',
+ button_title: 'Stop this environment',
+ },
+ },
+ },
+ ],
+ },
+ ],
status: {
- icon: 'status_running',
- text: 'running',
- label: 'running',
- group: 'running',
+ icon: 'status_skipped',
+ text: 'skipped',
+ label: 'skipped',
+ group: 'skipped',
+ tooltip: 'skipped',
has_details: true,
- details_path: '/gitlab-org/gitlab-foss/pipelines/130',
+ details_path: '/gitlab-org/gitlab-runner/pipelines/23211253#cleanup',
+ illustration: null,
favicon:
- '/assets/ci_favicons/dev/favicon_status_running-c3ad2fc53ea6079c174e5b6c1351ff349e99ec3af5a5622fb77b0fe53ea279c1.ico',
+ 'https://gitlab.com/assets/ci_favicons/favicon_status_skipped-0b9c5e543588945e8c4ca57786bbf2d0c56631959c9f853300392d0315be829b.png',
},
+ path: '/gitlab-org/gitlab-runner/pipelines/23211253#cleanup',
+ dropdown_path: '/gitlab-org/gitlab-runner/pipelines/23211253/stage.json?stage=cleanup',
},
- flags: {
- latest: false,
- triggered: false,
- stuck: false,
- yaml_errors: false,
- retryable: true,
- cancelable: true,
+ ],
+ artifacts: [],
+ manual_actions: [
+ {
+ name: 'review-docs-cleanup',
+ path: '/gitlab-org/gitlab-runner/-/jobs/72469034/play',
+ playable: true,
+ scheduled: false,
},
- ref: {
- name: 'crowd',
- path: '/gitlab-org/gitlab-foss/commits/crowd',
- tag: false,
- branch: true,
+ {
+ name: 'review-docs-deploy',
+ path: '/gitlab-org/gitlab-runner/-/jobs/72469032/play',
+ playable: true,
+ scheduled: false,
},
- commit: {
- id: '6d7ced4a2311eeff037c5575cca1868a6d3f586f',
- short_id: '6d7ced4a',
- title: 'Whitespace fixes to patch',
- created_at: '2013-10-08T13:53:22.000-05:00',
- parent_ids: ['1875141a963a4238bda29011d8f7105839485253'],
- message: 'Whitespace fixes to patch\n',
- author_name: 'Dale Hamel',
- author_email: 'dale.hamel@srvthe.net',
- authored_date: '2013-10-08T13:53:22.000-05:00',
- committer_name: 'Dale Hamel',
- committer_email: 'dale.hamel@invenia.ca',
- committed_date: '2013-10-08T13:53:22.000-05:00',
- author_gravatar_url:
- 'http://www.gravatar.com/avatar/cd08930e69fa5ad1a669206e7bafe476?s=80&d=identicon',
- commit_url:
- 'http://localhost:3000/gitlab-org/gitlab-foss/commit/6d7ced4a2311eeff037c5575cca1868a6d3f586f',
- commit_path: '/gitlab-org/gitlab-foss/commit/6d7ced4a2311eeff037c5575cca1868a6d3f586f',
+ ],
+ scheduled_actions: [],
+ },
+ ref: {
+ name: 'docs/add-development-guide-to-readme',
+ path: '/gitlab-org/gitlab-runner/commits/docs/add-development-guide-to-readme',
+ tag: false,
+ branch: true,
+ merge_request: false,
+ },
+ commit: {
+ id: '8083eb0a920572214d0dccedd7981f05d535ad46',
+ short_id: '8083eb0a',
+ title: 'Add link to development guide in readme',
+ created_at: '2018-06-05T11:30:48.000Z',
+ parent_ids: ['1d7cf79b5a1a2121b9474ac20d61c1b8f621289d'],
+ message:
+ 'Add link to development guide in readme\n\nCloses https://gitlab.com/gitlab-org/gitlab-runner/issues/3122\n',
+ author_name: 'Achilleas Pipinellis',
+ author_email: 'axil@gitlab.com',
+ authored_date: '2018-06-05T11:30:48.000Z',
+ committer_name: 'Achilleas Pipinellis',
+ committer_email: 'axil@gitlab.com',
+ committed_date: '2018-06-05T11:30:48.000Z',
+ author: {
+ id: 3585,
+ name: 'Achilleas Pipinellis',
+ username: 'axil',
+ state: 'active',
+ avatar_url: 'https://assets.gitlab-static.net/uploads/-/system/user/avatar/3585/avatar.png',
+ web_url: 'https://gitlab.com/axil',
+ status_tooltip_html: null,
+ path: '/axil',
+ },
+ author_gravatar_url:
+ 'https://secure.gravatar.com/avatar/1d37af00eec153a8333a4ce18e9aea41?s=80\u0026d=identicon',
+ commit_url:
+ 'https://gitlab.com/gitlab-org/gitlab-runner/commit/8083eb0a920572214d0dccedd7981f05d535ad46',
+ commit_path: '/gitlab-org/gitlab-runner/commit/8083eb0a920572214d0dccedd7981f05d535ad46',
+ },
+ project: { id: 20 },
+ triggered_by: {
+ id: 12,
+ user: {
+ id: 376774,
+ name: 'Alessio Caiazza',
+ username: 'nolith',
+ state: 'active',
+ avatar_url: 'https://assets.gitlab-static.net/uploads/-/system/user/avatar/376774/avatar.png',
+ web_url: 'https://gitlab.com/nolith',
+ status_tooltip_html: null,
+ path: '/nolith',
+ },
+ active: false,
+ coverage: null,
+ source: 'pipeline',
+ path: '/gitlab-com/gitlab-docs/pipelines/34993051',
+ details: {
+ status: {
+ icon: 'status_failed',
+ text: 'failed',
+ label: 'failed',
+ group: 'failed',
+ tooltip: 'failed',
+ has_details: true,
+ details_path: '/gitlab-com/gitlab-docs/pipelines/34993051',
+ illustration: null,
+ favicon:
+ 'https://gitlab.com/assets/ci_favicons/favicon_status_failed-41304d7f7e3828808b0c26771f0309e55296819a9beea3ea9fbf6689d9857c12.png',
},
- retry_path: '/gitlab-org/gitlab-foss/pipelines/130/retry',
- cancel_path: '/gitlab-org/gitlab-foss/pipelines/130/cancel',
- created_at: '2017-05-24T14:46:24.630Z',
- updated_at: '2017-05-24T14:49:45.091Z',
+ duration: 118,
+ finished_at: '2018-10-31T16:41:40.615Z',
+ stages: [
+ {
+ name: 'build-images',
+ title: 'build-images: skipped',
+ groups: [
+ {
+ name: 'image:bootstrap',
+ size: 1,
+ status: {
+ icon: 'status_manual',
+ text: 'manual',
+ label: 'manual play action',
+ group: 'manual',
+ tooltip: 'manual action',
+ has_details: true,
+ details_path: '/gitlab-com/gitlab-docs/-/jobs/114982853',
+ illustration: {
+ image:
+ 'https://assets.gitlab-static.net/assets/illustrations/manual_action-2b4ca0d1bcfd92aebf33d484e36cbf7a102d007f76b5a0cfea636033a629d601.svg',
+ size: 'svg-394',
+ title: 'This job requires a manual action',
+ content:
+ 'This job depends on a user to trigger its process. Often they are used to deploy code to production environments',
+ },
+ favicon:
+ 'https://gitlab.com/assets/ci_favicons/favicon_status_manual-829a0804612cef47d9efc1618dba38325483657c847dba0546c3b9f0295bb36c.png',
+ action: {
+ icon: 'play',
+ title: 'Play',
+ path: '/gitlab-com/gitlab-docs/-/jobs/114982853/play',
+ method: 'post',
+ button_title: 'Trigger this manual action',
+ },
+ },
+ jobs: [
+ {
+ id: 11421321982853,
+ name: 'image:bootstrap',
+ started: null,
+ archived: false,
+ build_path: '/gitlab-com/gitlab-docs/-/jobs/114982853',
+ play_path: '/gitlab-com/gitlab-docs/-/jobs/114982853/play',
+ playable: true,
+ scheduled: false,
+ created_at: '2018-10-31T16:35:23.704Z',
+ updated_at: '2018-10-31T16:35:24.118Z',
+ status: {
+ icon: 'status_manual',
+ text: 'manual',
+ label: 'manual play action',
+ group: 'manual',
+ tooltip: 'manual action',
+ has_details: true,
+ details_path: '/gitlab-com/gitlab-docs/-/jobs/114982853',
+ illustration: {
+ image:
+ 'https://assets.gitlab-static.net/assets/illustrations/manual_action-2b4ca0d1bcfd92aebf33d484e36cbf7a102d007f76b5a0cfea636033a629d601.svg',
+ size: 'svg-394',
+ title: 'This job requires a manual action',
+ content:
+ 'This job depends on a user to trigger its process. Often they are used to deploy code to production environments',
+ },
+ favicon:
+ 'https://gitlab.com/assets/ci_favicons/favicon_status_manual-829a0804612cef47d9efc1618dba38325483657c847dba0546c3b9f0295bb36c.png',
+ action: {
+ icon: 'play',
+ title: 'Play',
+ path: '/gitlab-com/gitlab-docs/-/jobs/114982853/play',
+ method: 'post',
+ button_title: 'Trigger this manual action',
+ },
+ },
+ },
+ ],
+ },
+ {
+ name: 'image:builder-onbuild',
+ size: 1,
+ status: {
+ icon: 'status_manual',
+ text: 'manual',
+ label: 'manual play action',
+ group: 'manual',
+ tooltip: 'manual action',
+ has_details: true,
+ details_path: '/gitlab-com/gitlab-docs/-/jobs/114982854',
+ illustration: {
+ image:
+ 'https://assets.gitlab-static.net/assets/illustrations/manual_action-2b4ca0d1bcfd92aebf33d484e36cbf7a102d007f76b5a0cfea636033a629d601.svg',
+ size: 'svg-394',
+ title: 'This job requires a manual action',
+ content:
+ 'This job depends on a user to trigger its process. Often they are used to deploy code to production environments',
+ },
+ favicon:
+ 'https://gitlab.com/assets/ci_favicons/favicon_status_manual-829a0804612cef47d9efc1618dba38325483657c847dba0546c3b9f0295bb36c.png',
+ action: {
+ icon: 'play',
+ title: 'Play',
+ path: '/gitlab-com/gitlab-docs/-/jobs/114982854/play',
+ method: 'post',
+ button_title: 'Trigger this manual action',
+ },
+ },
+ jobs: [
+ {
+ id: 1149822131854,
+ name: 'image:builder-onbuild',
+ started: null,
+ archived: false,
+ build_path: '/gitlab-com/gitlab-docs/-/jobs/114982854',
+ play_path: '/gitlab-com/gitlab-docs/-/jobs/114982854/play',
+ playable: true,
+ scheduled: false,
+ created_at: '2018-10-31T16:35:23.728Z',
+ updated_at: '2018-10-31T16:35:24.070Z',
+ status: {
+ icon: 'status_manual',
+ text: 'manual',
+ label: 'manual play action',
+ group: 'manual',
+ tooltip: 'manual action',
+ has_details: true,
+ details_path: '/gitlab-com/gitlab-docs/-/jobs/114982854',
+ illustration: {
+ image:
+ 'https://assets.gitlab-static.net/assets/illustrations/manual_action-2b4ca0d1bcfd92aebf33d484e36cbf7a102d007f76b5a0cfea636033a629d601.svg',
+ size: 'svg-394',
+ title: 'This job requires a manual action',
+ content:
+ 'This job depends on a user to trigger its process. Often they are used to deploy code to production environments',
+ },
+ favicon:
+ 'https://gitlab.com/assets/ci_favicons/favicon_status_manual-829a0804612cef47d9efc1618dba38325483657c847dba0546c3b9f0295bb36c.png',
+ action: {
+ icon: 'play',
+ title: 'Play',
+ path: '/gitlab-com/gitlab-docs/-/jobs/114982854/play',
+ method: 'post',
+ button_title: 'Trigger this manual action',
+ },
+ },
+ },
+ ],
+ },
+ {
+ name: 'image:nginx-onbuild',
+ size: 1,
+ status: {
+ icon: 'status_manual',
+ text: 'manual',
+ label: 'manual play action',
+ group: 'manual',
+ tooltip: 'manual action',
+ has_details: true,
+ details_path: '/gitlab-com/gitlab-docs/-/jobs/114982855',
+ illustration: {
+ image:
+ 'https://assets.gitlab-static.net/assets/illustrations/manual_action-2b4ca0d1bcfd92aebf33d484e36cbf7a102d007f76b5a0cfea636033a629d601.svg',
+ size: 'svg-394',
+ title: 'This job requires a manual action',
+ content:
+ 'This job depends on a user to trigger its process. Often they are used to deploy code to production environments',
+ },
+ favicon:
+ 'https://gitlab.com/assets/ci_favicons/favicon_status_manual-829a0804612cef47d9efc1618dba38325483657c847dba0546c3b9f0295bb36c.png',
+ action: {
+ icon: 'play',
+ title: 'Play',
+ path: '/gitlab-com/gitlab-docs/-/jobs/114982855/play',
+ method: 'post',
+ button_title: 'Trigger this manual action',
+ },
+ },
+ jobs: [
+ {
+ id: 11498285523424,
+ name: 'image:nginx-onbuild',
+ started: null,
+ archived: false,
+ build_path: '/gitlab-com/gitlab-docs/-/jobs/114982855',
+ play_path: '/gitlab-com/gitlab-docs/-/jobs/114982855/play',
+ playable: true,
+ scheduled: false,
+ created_at: '2018-10-31T16:35:23.753Z',
+ updated_at: '2018-10-31T16:35:24.033Z',
+ status: {
+ icon: 'status_manual',
+ text: 'manual',
+ label: 'manual play action',
+ group: 'manual',
+ tooltip: 'manual action',
+ has_details: true,
+ details_path: '/gitlab-com/gitlab-docs/-/jobs/114982855',
+ illustration: {
+ image:
+ 'https://assets.gitlab-static.net/assets/illustrations/manual_action-2b4ca0d1bcfd92aebf33d484e36cbf7a102d007f76b5a0cfea636033a629d601.svg',
+ size: 'svg-394',
+ title: 'This job requires a manual action',
+ content:
+ 'This job depends on a user to trigger its process. Often they are used to deploy code to production environments',
+ },
+ favicon:
+ 'https://gitlab.com/assets/ci_favicons/favicon_status_manual-829a0804612cef47d9efc1618dba38325483657c847dba0546c3b9f0295bb36c.png',
+ action: {
+ icon: 'play',
+ title: 'Play',
+ path: '/gitlab-com/gitlab-docs/-/jobs/114982855/play',
+ method: 'post',
+ button_title: 'Trigger this manual action',
+ },
+ },
+ },
+ ],
+ },
+ ],
+ status: {
+ icon: 'status_skipped',
+ text: 'skipped',
+ label: 'skipped',
+ group: 'skipped',
+ tooltip: 'skipped',
+ has_details: true,
+ details_path: '/gitlab-com/gitlab-docs/pipelines/34993051#build-images',
+ illustration: null,
+ favicon:
+ 'https://gitlab.com/assets/ci_favicons/favicon_status_skipped-0b9c5e543588945e8c4ca57786bbf2d0c56631959c9f853300392d0315be829b.png',
+ },
+ path: '/gitlab-com/gitlab-docs/pipelines/34993051#build-images',
+ dropdown_path: '/gitlab-com/gitlab-docs/pipelines/34993051/stage.json?stage=build-images',
+ },
+ {
+ name: 'build',
+ title: 'build: failed',
+ groups: [
+ {
+ name: 'compile_dev',
+ size: 1,
+ status: {
+ icon: 'status_failed',
+ text: 'failed',
+ label: 'failed',
+ group: 'failed',
+ tooltip: 'failed - (script failure)',
+ has_details: true,
+ details_path: '/gitlab-com/gitlab-docs/-/jobs/114984694',
+ illustration: {
+ image:
+ 'https://assets.gitlab-static.net/assets/illustrations/skipped-job_empty-8b877955fbf175e42ae65b6cb95346e15282c6fc5b682756c329af3a0055225e.svg',
+ size: 'svg-430',
+ title: 'This job does not have a trace.',
+ },
+ favicon:
+ 'https://gitlab.com/assets/ci_favicons/favicon_status_failed-41304d7f7e3828808b0c26771f0309e55296819a9beea3ea9fbf6689d9857c12.png',
+ action: {
+ icon: 'retry',
+ title: 'Retry',
+ path: '/h5bp/html5-boilerplate/-/jobs/528/retry',
+ method: 'post',
+ button_title: 'Retry this job',
+ },
+ },
+ jobs: [
+ {
+ id: 1149846949786,
+ name: 'compile_dev',
+ started: '2018-10-31T16:39:41.598Z',
+ archived: false,
+ build_path: '/gitlab-com/gitlab-docs/-/jobs/114984694',
+ retry_path: '/gitlab-com/gitlab-docs/-/jobs/114984694/retry',
+ playable: false,
+ scheduled: false,
+ created_at: '2018-10-31T16:39:41.138Z',
+ updated_at: '2018-10-31T16:41:40.072Z',
+ status: {
+ icon: 'status_failed',
+ text: 'failed',
+ label: 'failed',
+ group: 'failed',
+ tooltip: 'failed - (script failure)',
+ has_details: true,
+ details_path: '/gitlab-com/gitlab-docs/-/jobs/114984694',
+ illustration: {
+ image:
+ 'https://assets.gitlab-static.net/assets/illustrations/skipped-job_empty-8b877955fbf175e42ae65b6cb95346e15282c6fc5b682756c329af3a0055225e.svg',
+ size: 'svg-430',
+ title: 'This job does not have a trace.',
+ },
+ favicon:
+ 'https://gitlab.com/assets/ci_favicons/favicon_status_failed-41304d7f7e3828808b0c26771f0309e55296819a9beea3ea9fbf6689d9857c12.png',
+ action: {
+ icon: 'retry',
+ title: 'Retry',
+ path: '/h5bp/html5-boilerplate/-/jobs/528/retry',
+ method: 'post',
+ button_title: 'Retry this job',
+ },
+ },
+ recoverable: false,
+ },
+ ],
+ },
+ ],
+ status: {
+ icon: 'status_failed',
+ text: 'failed',
+ label: 'failed',
+ group: 'failed',
+ tooltip: 'failed',
+ has_details: true,
+ details_path: '/gitlab-com/gitlab-docs/pipelines/34993051#build',
+ illustration: null,
+ favicon:
+ 'https://gitlab.com/assets/ci_favicons/favicon_status_failed-41304d7f7e3828808b0c26771f0309e55296819a9beea3ea9fbf6689d9857c12.png',
+ },
+ path: '/gitlab-com/gitlab-docs/pipelines/34993051#build',
+ dropdown_path: '/gitlab-com/gitlab-docs/pipelines/34993051/stage.json?stage=build',
+ },
+ {
+ name: 'deploy',
+ title: 'deploy: skipped',
+ groups: [
+ {
+ name: 'review',
+ size: 1,
+ status: {
+ icon: 'status_skipped',
+ text: 'skipped',
+ label: 'skipped',
+ group: 'skipped',
+ tooltip: 'skipped',
+ has_details: true,
+ details_path: '/gitlab-com/gitlab-docs/-/jobs/114982857',
+ illustration: {
+ image:
+ 'https://assets.gitlab-static.net/assets/illustrations/skipped-job_empty-8b877955fbf175e42ae65b6cb95346e15282c6fc5b682756c329af3a0055225e.svg',
+ size: 'svg-430',
+ title: 'This job has been skipped',
+ },
+ favicon:
+ 'https://gitlab.com/assets/ci_favicons/favicon_status_skipped-0b9c5e543588945e8c4ca57786bbf2d0c56631959c9f853300392d0315be829b.png',
+ },
+ jobs: [
+ {
+ id: 11498282342357,
+ name: 'review',
+ started: null,
+ archived: false,
+ build_path: '/gitlab-com/gitlab-docs/-/jobs/114982857',
+ playable: false,
+ scheduled: false,
+ created_at: '2018-10-31T16:35:23.805Z',
+ updated_at: '2018-10-31T16:41:40.569Z',
+ status: {
+ icon: 'status_skipped',
+ text: 'skipped',
+ label: 'skipped',
+ group: 'skipped',
+ tooltip: 'skipped',
+ has_details: true,
+ details_path: '/gitlab-com/gitlab-docs/-/jobs/114982857',
+ illustration: {
+ image:
+ 'https://assets.gitlab-static.net/assets/illustrations/skipped-job_empty-8b877955fbf175e42ae65b6cb95346e15282c6fc5b682756c329af3a0055225e.svg',
+ size: 'svg-430',
+ title: 'This job has been skipped',
+ },
+ favicon:
+ 'https://gitlab.com/assets/ci_favicons/favicon_status_skipped-0b9c5e543588945e8c4ca57786bbf2d0c56631959c9f853300392d0315be829b.png',
+ },
+ },
+ ],
+ },
+ {
+ name: 'review_stop',
+ size: 1,
+ status: {
+ icon: 'status_skipped',
+ text: 'skipped',
+ label: 'skipped',
+ group: 'skipped',
+ tooltip: 'skipped',
+ has_details: true,
+ details_path: '/gitlab-com/gitlab-docs/-/jobs/114982858',
+ illustration: {
+ image:
+ 'https://assets.gitlab-static.net/assets/illustrations/skipped-job_empty-8b877955fbf175e42ae65b6cb95346e15282c6fc5b682756c329af3a0055225e.svg',
+ size: 'svg-430',
+ title: 'This job has been skipped',
+ },
+ favicon:
+ 'https://gitlab.com/assets/ci_favicons/favicon_status_skipped-0b9c5e543588945e8c4ca57786bbf2d0c56631959c9f853300392d0315be829b.png',
+ },
+ jobs: [
+ {
+ id: 114982858,
+ name: 'review_stop',
+ started: null,
+ archived: false,
+ build_path: '/gitlab-com/gitlab-docs/-/jobs/114982858',
+ playable: false,
+ scheduled: false,
+ created_at: '2018-10-31T16:35:23.840Z',
+ updated_at: '2018-10-31T16:41:40.480Z',
+ status: {
+ icon: 'status_skipped',
+ text: 'skipped',
+ label: 'skipped',
+ group: 'skipped',
+ tooltip: 'skipped',
+ has_details: true,
+ details_path: '/gitlab-com/gitlab-docs/-/jobs/114982858',
+ illustration: {
+ image:
+ 'https://assets.gitlab-static.net/assets/illustrations/skipped-job_empty-8b877955fbf175e42ae65b6cb95346e15282c6fc5b682756c329af3a0055225e.svg',
+ size: 'svg-430',
+ title: 'This job has been skipped',
+ },
+ favicon:
+ 'https://gitlab.com/assets/ci_favicons/favicon_status_skipped-0b9c5e543588945e8c4ca57786bbf2d0c56631959c9f853300392d0315be829b.png',
+ },
+ },
+ ],
+ },
+ ],
+ status: {
+ icon: 'status_skipped',
+ text: 'skipped',
+ label: 'skipped',
+ group: 'skipped',
+ tooltip: 'skipped',
+ has_details: true,
+ details_path: '/gitlab-com/gitlab-docs/pipelines/34993051#deploy',
+ illustration: null,
+ favicon:
+ 'https://gitlab.com/assets/ci_favicons/favicon_status_skipped-0b9c5e543588945e8c4ca57786bbf2d0c56631959c9f853300392d0315be829b.png',
+ },
+ path: '/gitlab-com/gitlab-docs/pipelines/34993051#deploy',
+ dropdown_path: '/gitlab-com/gitlab-docs/pipelines/34993051/stage.json?stage=deploy',
+ },
+ ],
+ artifacts: [],
+ manual_actions: [
+ {
+ name: 'image:bootstrap',
+ path: '/gitlab-com/gitlab-docs/-/jobs/114982853/play',
+ playable: true,
+ scheduled: false,
+ },
+ {
+ name: 'image:builder-onbuild',
+ path: '/gitlab-com/gitlab-docs/-/jobs/114982854/play',
+ playable: true,
+ scheduled: false,
+ },
+ {
+ name: 'image:nginx-onbuild',
+ path: '/gitlab-com/gitlab-docs/-/jobs/114982855/play',
+ playable: true,
+ scheduled: false,
+ },
+ {
+ name: 'review_stop',
+ path: '/gitlab-com/gitlab-docs/-/jobs/114982858/play',
+ playable: false,
+ scheduled: false,
+ },
+ ],
+ scheduled_actions: [],
},
- {
- id: 131,
- active: true,
- path: '/gitlab-org/gitlab-foss/pipelines/132',
- project: {
- name: 'GitLabCE',
+ project: {
+ id: 20,
+ name: 'Test',
+ full_path: '/gitlab-com/gitlab-docs',
+ full_name: 'GitLab.com / GitLab Docs',
+ },
+ triggered_by: {
+ id: 349932310342451,
+ user: {
+ id: 376774,
+ name: 'Alessio Caiazza',
+ username: 'nolith',
+ state: 'active',
+ avatar_url:
+ 'https://assets.gitlab-static.net/uploads/-/system/user/avatar/376774/avatar.png',
+ web_url: 'https://gitlab.com/nolith',
+ status_tooltip_html: null,
+ path: '/nolith',
},
+ active: false,
+ coverage: null,
+ source: 'pipeline',
+ path: '/gitlab-com/gitlab-docs/pipelines/34993051',
details: {
status: {
- icon: 'status_running',
- text: 'running',
- label: 'running',
- group: 'running',
+ icon: 'status_failed',
+ text: 'failed',
+ label: 'failed',
+ group: 'failed',
+ tooltip: 'failed',
has_details: true,
- details_path: '/gitlab-org/gitlab-foss/pipelines/132',
+ details_path: '/gitlab-com/gitlab-docs/pipelines/34993051',
+ illustration: null,
favicon:
- '/assets/ci_favicons/dev/favicon_status_running-c3ad2fc53ea6079c174e5b6c1351ff349e99ec3af5a5622fb77b0fe53ea279c1.ico',
+ 'https://gitlab.com/assets/ci_favicons/favicon_status_failed-41304d7f7e3828808b0c26771f0309e55296819a9beea3ea9fbf6689d9857c12.png',
},
+ duration: 118,
+ finished_at: '2018-10-31T16:41:40.615Z',
+ stages: [
+ {
+ name: 'build-images',
+ title: 'build-images: skipped',
+ groups: [
+ {
+ name: 'image:bootstrap',
+ size: 1,
+ status: {
+ icon: 'status_manual',
+ text: 'manual',
+ label: 'manual play action',
+ group: 'manual',
+ tooltip: 'manual action',
+ has_details: true,
+ details_path: '/gitlab-com/gitlab-docs/-/jobs/114982853',
+ illustration: {
+ image:
+ 'https://assets.gitlab-static.net/assets/illustrations/manual_action-2b4ca0d1bcfd92aebf33d484e36cbf7a102d007f76b5a0cfea636033a629d601.svg',
+ size: 'svg-394',
+ title: 'This job requires a manual action',
+ content:
+ 'This job depends on a user to trigger its process. Often they are used to deploy code to production environments',
+ },
+ favicon:
+ 'https://gitlab.com/assets/ci_favicons/favicon_status_manual-829a0804612cef47d9efc1618dba38325483657c847dba0546c3b9f0295bb36c.png',
+ action: {
+ icon: 'play',
+ title: 'Play',
+ path: '/gitlab-com/gitlab-docs/-/jobs/114982853/play',
+ method: 'post',
+ button_title: 'Trigger this manual action',
+ },
+ },
+ jobs: [
+ {
+ id: 11421321982853,
+ name: 'image:bootstrap',
+ started: null,
+ archived: false,
+ build_path: '/gitlab-com/gitlab-docs/-/jobs/114982853',
+ play_path: '/gitlab-com/gitlab-docs/-/jobs/114982853/play',
+ playable: true,
+ scheduled: false,
+ created_at: '2018-10-31T16:35:23.704Z',
+ updated_at: '2018-10-31T16:35:24.118Z',
+ status: {
+ icon: 'status_manual',
+ text: 'manual',
+ label: 'manual play action',
+ group: 'manual',
+ tooltip: 'manual action',
+ has_details: true,
+ details_path: '/gitlab-com/gitlab-docs/-/jobs/114982853',
+ illustration: {
+ image:
+ 'https://assets.gitlab-static.net/assets/illustrations/manual_action-2b4ca0d1bcfd92aebf33d484e36cbf7a102d007f76b5a0cfea636033a629d601.svg',
+ size: 'svg-394',
+ title: 'This job requires a manual action',
+ content:
+ 'This job depends on a user to trigger its process. Often they are used to deploy code to production environments',
+ },
+ favicon:
+ 'https://gitlab.com/assets/ci_favicons/favicon_status_manual-829a0804612cef47d9efc1618dba38325483657c847dba0546c3b9f0295bb36c.png',
+ action: {
+ icon: 'play',
+ title: 'Play',
+ path: '/gitlab-com/gitlab-docs/-/jobs/114982853/play',
+ method: 'post',
+ button_title: 'Trigger this manual action',
+ },
+ },
+ },
+ ],
+ },
+ {
+ name: 'image:builder-onbuild',
+ size: 1,
+ status: {
+ icon: 'status_manual',
+ text: 'manual',
+ label: 'manual play action',
+ group: 'manual',
+ tooltip: 'manual action',
+ has_details: true,
+ details_path: '/gitlab-com/gitlab-docs/-/jobs/114982854',
+ illustration: {
+ image:
+ 'https://assets.gitlab-static.net/assets/illustrations/manual_action-2b4ca0d1bcfd92aebf33d484e36cbf7a102d007f76b5a0cfea636033a629d601.svg',
+ size: 'svg-394',
+ title: 'This job requires a manual action',
+ content:
+ 'This job depends on a user to trigger its process. Often they are used to deploy code to production environments',
+ },
+ favicon:
+ 'https://gitlab.com/assets/ci_favicons/favicon_status_manual-829a0804612cef47d9efc1618dba38325483657c847dba0546c3b9f0295bb36c.png',
+ action: {
+ icon: 'play',
+ title: 'Play',
+ path: '/gitlab-com/gitlab-docs/-/jobs/114982854/play',
+ method: 'post',
+ button_title: 'Trigger this manual action',
+ },
+ },
+ jobs: [
+ {
+ id: 1149822131854,
+ name: 'image:builder-onbuild',
+ started: null,
+ archived: false,
+ build_path: '/gitlab-com/gitlab-docs/-/jobs/114982854',
+ play_path: '/gitlab-com/gitlab-docs/-/jobs/114982854/play',
+ playable: true,
+ scheduled: false,
+ created_at: '2018-10-31T16:35:23.728Z',
+ updated_at: '2018-10-31T16:35:24.070Z',
+ status: {
+ icon: 'status_manual',
+ text: 'manual',
+ label: 'manual play action',
+ group: 'manual',
+ tooltip: 'manual action',
+ has_details: true,
+ details_path: '/gitlab-com/gitlab-docs/-/jobs/114982854',
+ illustration: {
+ image:
+ 'https://assets.gitlab-static.net/assets/illustrations/manual_action-2b4ca0d1bcfd92aebf33d484e36cbf7a102d007f76b5a0cfea636033a629d601.svg',
+ size: 'svg-394',
+ title: 'This job requires a manual action',
+ content:
+ 'This job depends on a user to trigger its process. Often they are used to deploy code to production environments',
+ },
+ favicon:
+ 'https://gitlab.com/assets/ci_favicons/favicon_status_manual-829a0804612cef47d9efc1618dba38325483657c847dba0546c3b9f0295bb36c.png',
+ action: {
+ icon: 'play',
+ title: 'Play',
+ path: '/gitlab-com/gitlab-docs/-/jobs/114982854/play',
+ method: 'post',
+ button_title: 'Trigger this manual action',
+ },
+ },
+ },
+ ],
+ },
+ {
+ name: 'image:nginx-onbuild',
+ size: 1,
+ status: {
+ icon: 'status_manual',
+ text: 'manual',
+ label: 'manual play action',
+ group: 'manual',
+ tooltip: 'manual action',
+ has_details: true,
+ details_path: '/gitlab-com/gitlab-docs/-/jobs/114982855',
+ illustration: {
+ image:
+ 'https://assets.gitlab-static.net/assets/illustrations/manual_action-2b4ca0d1bcfd92aebf33d484e36cbf7a102d007f76b5a0cfea636033a629d601.svg',
+ size: 'svg-394',
+ title: 'This job requires a manual action',
+ content:
+ 'This job depends on a user to trigger its process. Often they are used to deploy code to production environments',
+ },
+ favicon:
+ 'https://gitlab.com/assets/ci_favicons/favicon_status_manual-829a0804612cef47d9efc1618dba38325483657c847dba0546c3b9f0295bb36c.png',
+ action: {
+ icon: 'play',
+ title: 'Play',
+ path: '/gitlab-com/gitlab-docs/-/jobs/114982855/play',
+ method: 'post',
+ button_title: 'Trigger this manual action',
+ },
+ },
+ jobs: [
+ {
+ id: 11498285523424,
+ name: 'image:nginx-onbuild',
+ started: null,
+ archived: false,
+ build_path: '/gitlab-com/gitlab-docs/-/jobs/114982855',
+ play_path: '/gitlab-com/gitlab-docs/-/jobs/114982855/play',
+ playable: true,
+ scheduled: false,
+ created_at: '2018-10-31T16:35:23.753Z',
+ updated_at: '2018-10-31T16:35:24.033Z',
+ status: {
+ icon: 'status_manual',
+ text: 'manual',
+ label: 'manual play action',
+ group: 'manual',
+ tooltip: 'manual action',
+ has_details: true,
+ details_path: '/gitlab-com/gitlab-docs/-/jobs/114982855',
+ illustration: {
+ image:
+ 'https://assets.gitlab-static.net/assets/illustrations/manual_action-2b4ca0d1bcfd92aebf33d484e36cbf7a102d007f76b5a0cfea636033a629d601.svg',
+ size: 'svg-394',
+ title: 'This job requires a manual action',
+ content:
+ 'This job depends on a user to trigger its process. Often they are used to deploy code to production environments',
+ },
+ favicon:
+ 'https://gitlab.com/assets/ci_favicons/favicon_status_manual-829a0804612cef47d9efc1618dba38325483657c847dba0546c3b9f0295bb36c.png',
+ action: {
+ icon: 'play',
+ title: 'Play',
+ path: '/gitlab-com/gitlab-docs/-/jobs/114982855/play',
+ method: 'post',
+ button_title: 'Trigger this manual action',
+ },
+ },
+ },
+ ],
+ },
+ ],
+ status: {
+ icon: 'status_skipped',
+ text: 'skipped',
+ label: 'skipped',
+ group: 'skipped',
+ tooltip: 'skipped',
+ has_details: true,
+ details_path: '/gitlab-com/gitlab-docs/pipelines/34993051#build-images',
+ illustration: null,
+ favicon:
+ 'https://gitlab.com/assets/ci_favicons/favicon_status_skipped-0b9c5e543588945e8c4ca57786bbf2d0c56631959c9f853300392d0315be829b.png',
+ },
+ path: '/gitlab-com/gitlab-docs/pipelines/34993051#build-images',
+ dropdown_path:
+ '/gitlab-com/gitlab-docs/pipelines/34993051/stage.json?stage=build-images',
+ },
+ {
+ name: 'build',
+ title: 'build: failed',
+ groups: [
+ {
+ name: 'compile_dev',
+ size: 1,
+ status: {
+ icon: 'status_failed',
+ text: 'failed',
+ label: 'failed',
+ group: 'failed',
+ tooltip: 'failed - (script failure)',
+ has_details: true,
+ details_path: '/gitlab-com/gitlab-docs/-/jobs/114984694',
+ illustration: {
+ image:
+ 'https://assets.gitlab-static.net/assets/illustrations/skipped-job_empty-8b877955fbf175e42ae65b6cb95346e15282c6fc5b682756c329af3a0055225e.svg',
+ size: 'svg-430',
+ title: 'This job does not have a trace.',
+ },
+ favicon:
+ 'https://gitlab.com/assets/ci_favicons/favicon_status_failed-41304d7f7e3828808b0c26771f0309e55296819a9beea3ea9fbf6689d9857c12.png',
+ action: {
+ icon: 'retry',
+ title: 'Retry',
+ path: '/gitlab-com/gitlab-docs/-/jobs/114984694/retry',
+ method: 'post',
+ button_title: 'Retry this job',
+ },
+ },
+ jobs: [
+ {
+ id: 1149846949786,
+ name: 'compile_dev',
+ started: '2018-10-31T16:39:41.598Z',
+ archived: false,
+ build_path: '/gitlab-com/gitlab-docs/-/jobs/114984694',
+ retry_path: '/gitlab-com/gitlab-docs/-/jobs/114984694/retry',
+ playable: false,
+ scheduled: false,
+ created_at: '2018-10-31T16:39:41.138Z',
+ updated_at: '2018-10-31T16:41:40.072Z',
+ status: {
+ icon: 'status_failed',
+ text: 'failed',
+ label: 'failed',
+ group: 'failed',
+ tooltip: 'failed - (script failure)',
+ has_details: true,
+ details_path: '/gitlab-com/gitlab-docs/-/jobs/114984694',
+ illustration: {
+ image:
+ 'https://assets.gitlab-static.net/assets/illustrations/skipped-job_empty-8b877955fbf175e42ae65b6cb95346e15282c6fc5b682756c329af3a0055225e.svg',
+ size: 'svg-430',
+ title: 'This job does not have a trace.',
+ },
+ favicon:
+ 'https://gitlab.com/assets/ci_favicons/favicon_status_failed-41304d7f7e3828808b0c26771f0309e55296819a9beea3ea9fbf6689d9857c12.png',
+ action: {
+ icon: 'retry',
+ title: 'Retry',
+ path: '/gitlab-com/gitlab-docs/-/jobs/114984694/retry',
+ method: 'post',
+ button_title: 'Retry this job',
+ },
+ },
+ recoverable: false,
+ },
+ ],
+ },
+ ],
+ status: {
+ icon: 'status_failed',
+ text: 'failed',
+ label: 'failed',
+ group: 'failed',
+ tooltip: 'failed',
+ has_details: true,
+ details_path: '/gitlab-com/gitlab-docs/pipelines/34993051#build',
+ illustration: null,
+ favicon:
+ 'https://gitlab.com/assets/ci_favicons/favicon_status_failed-41304d7f7e3828808b0c26771f0309e55296819a9beea3ea9fbf6689d9857c12.png',
+ },
+ path: '/gitlab-com/gitlab-docs/pipelines/34993051#build',
+ dropdown_path: '/gitlab-com/gitlab-docs/pipelines/34993051/stage.json?stage=build',
+ },
+ {
+ name: 'deploy',
+ title: 'deploy: skipped',
+ groups: [
+ {
+ name: 'review',
+ size: 1,
+ status: {
+ icon: 'status_skipped',
+ text: 'skipped',
+ label: 'skipped',
+ group: 'skipped',
+ tooltip: 'skipped',
+ has_details: true,
+ details_path: '/gitlab-com/gitlab-docs/-/jobs/114982857',
+ illustration: {
+ image:
+ 'https://assets.gitlab-static.net/assets/illustrations/skipped-job_empty-8b877955fbf175e42ae65b6cb95346e15282c6fc5b682756c329af3a0055225e.svg',
+ size: 'svg-430',
+ title: 'This job has been skipped',
+ },
+ favicon:
+ 'https://gitlab.com/assets/ci_favicons/favicon_status_skipped-0b9c5e543588945e8c4ca57786bbf2d0c56631959c9f853300392d0315be829b.png',
+ },
+ jobs: [
+ {
+ id: 11498282342357,
+ name: 'review',
+ started: null,
+ archived: false,
+ build_path: '/gitlab-com/gitlab-docs/-/jobs/114982857',
+ playable: false,
+ scheduled: false,
+ created_at: '2018-10-31T16:35:23.805Z',
+ updated_at: '2018-10-31T16:41:40.569Z',
+ status: {
+ icon: 'status_skipped',
+ text: 'skipped',
+ label: 'skipped',
+ group: 'skipped',
+ tooltip: 'skipped',
+ has_details: true,
+ details_path: '/gitlab-com/gitlab-docs/-/jobs/114982857',
+ illustration: {
+ image:
+ 'https://assets.gitlab-static.net/assets/illustrations/skipped-job_empty-8b877955fbf175e42ae65b6cb95346e15282c6fc5b682756c329af3a0055225e.svg',
+ size: 'svg-430',
+ title: 'This job has been skipped',
+ },
+ favicon:
+ 'https://gitlab.com/assets/ci_favicons/favicon_status_skipped-0b9c5e543588945e8c4ca57786bbf2d0c56631959c9f853300392d0315be829b.png',
+ },
+ },
+ ],
+ },
+ {
+ name: 'review_stop',
+ size: 1,
+ status: {
+ icon: 'status_skipped',
+ text: 'skipped',
+ label: 'skipped',
+ group: 'skipped',
+ tooltip: 'skipped',
+ has_details: true,
+ details_path: '/gitlab-com/gitlab-docs/-/jobs/114982858',
+ illustration: {
+ image:
+ 'https://assets.gitlab-static.net/assets/illustrations/skipped-job_empty-8b877955fbf175e42ae65b6cb95346e15282c6fc5b682756c329af3a0055225e.svg',
+ size: 'svg-430',
+ title: 'This job has been skipped',
+ },
+ favicon:
+ 'https://gitlab.com/assets/ci_favicons/favicon_status_skipped-0b9c5e543588945e8c4ca57786bbf2d0c56631959c9f853300392d0315be829b.png',
+ },
+ jobs: [
+ {
+ id: 114982858,
+ name: 'review_stop',
+ started: null,
+ archived: false,
+ build_path: '/gitlab-com/gitlab-docs/-/jobs/114982858',
+ playable: false,
+ scheduled: false,
+ created_at: '2018-10-31T16:35:23.840Z',
+ updated_at: '2018-10-31T16:41:40.480Z',
+ status: {
+ icon: 'status_skipped',
+ text: 'skipped',
+ label: 'skipped',
+ group: 'skipped',
+ tooltip: 'skipped',
+ has_details: true,
+ details_path: '/gitlab-com/gitlab-docs/-/jobs/114982858',
+ illustration: {
+ image:
+ 'https://assets.gitlab-static.net/assets/illustrations/skipped-job_empty-8b877955fbf175e42ae65b6cb95346e15282c6fc5b682756c329af3a0055225e.svg',
+ size: 'svg-430',
+ title: 'This job has been skipped',
+ },
+ favicon:
+ 'https://gitlab.com/assets/ci_favicons/favicon_status_skipped-0b9c5e543588945e8c4ca57786bbf2d0c56631959c9f853300392d0315be829b.png',
+ },
+ },
+ ],
+ },
+ ],
+ status: {
+ icon: 'status_skipped',
+ text: 'skipped',
+ label: 'skipped',
+ group: 'skipped',
+ tooltip: 'skipped',
+ has_details: true,
+ details_path: '/gitlab-com/gitlab-docs/pipelines/34993051#deploy',
+ illustration: null,
+ favicon:
+ 'https://gitlab.com/assets/ci_favicons/favicon_status_skipped-0b9c5e543588945e8c4ca57786bbf2d0c56631959c9f853300392d0315be829b.png',
+ },
+ path: '/gitlab-com/gitlab-docs/pipelines/34993051#deploy',
+ dropdown_path: '/gitlab-com/gitlab-docs/pipelines/34993051/stage.json?stage=deploy',
+ },
+ ],
+ artifacts: [],
+ manual_actions: [
+ {
+ name: 'image:bootstrap',
+ path: '/gitlab-com/gitlab-docs/-/jobs/114982853/play',
+ playable: true,
+ scheduled: false,
+ },
+ {
+ name: 'image:builder-onbuild',
+ path: '/gitlab-com/gitlab-docs/-/jobs/114982854/play',
+ playable: true,
+ scheduled: false,
+ },
+ {
+ name: 'image:nginx-onbuild',
+ path: '/gitlab-com/gitlab-docs/-/jobs/114982855/play',
+ playable: true,
+ scheduled: false,
+ },
+ {
+ name: 'review_stop',
+ path: '/gitlab-com/gitlab-docs/-/jobs/114982858/play',
+ playable: false,
+ scheduled: false,
+ },
+ ],
+ scheduled_actions: [],
},
- flags: {
- latest: false,
- triggered: false,
- stuck: false,
- yaml_errors: false,
- retryable: true,
- cancelable: true,
- },
- ref: {
- name: 'crowd',
- path: '/gitlab-org/gitlab-foss/commits/crowd',
- tag: false,
- branch: true,
- },
- commit: {
- id: 'b9d58c4cecd06be74c3cc32ccfb522b31544ab2e',
- short_id: 'b9d58c4c',
- title: 'getting user keys publically through http without any authentication, the github…',
- created_at: '2013-10-03T12:50:33.000+05:30',
- parent_ids: ['e219cf7246c6a0495e4507deaffeba11e79f13b8'],
- message:
- 'getting user keys publically through http without any authentication, the github way. E.g: http://github.com/devaroop.keys\n\nchangelog updated to include ssh key retrieval feature update\n',
- author_name: 'devaroop',
- author_email: 'devaroop123@yahoo.co.in',
- authored_date: '2013-10-02T20:39:29.000+05:30',
- committer_name: 'devaroop',
- committer_email: 'devaroop123@yahoo.co.in',
- committed_date: '2013-10-03T12:50:33.000+05:30',
- author_gravatar_url:
- 'http://www.gravatar.com/avatar/35df4b155ec66a3127d53459941cf8a2?s=80&d=identicon',
- commit_url:
- 'http://localhost:3000/gitlab-org/gitlab-foss/commit/b9d58c4cecd06be74c3cc32ccfb522b31544ab2e',
- commit_path: '/gitlab-org/gitlab-foss/commit/b9d58c4cecd06be74c3cc32ccfb522b31544ab2e',
+ project: {
+ id: 20,
+ name: 'GitLab Docs',
+ full_path: '/gitlab-com/gitlab-docs',
+ full_name: 'GitLab.com / GitLab Docs',
},
- retry_path: '/gitlab-org/gitlab-foss/pipelines/132/retry',
- cancel_path: '/gitlab-org/gitlab-foss/pipelines/132/cancel',
- created_at: '2017-05-24T14:46:24.644Z',
- updated_at: '2017-05-24T14:48:55.226Z',
},
+ triggered: [],
+ },
+ triggered: [
{
- id: 134,
- active: true,
- path: '/gitlab-org/gitlab-foss/pipelines/133',
- project: {
- name: 'GitLabCE',
+ id: 34993051,
+ user: {
+ id: 376774,
+ name: 'Alessio Caiazza',
+ username: 'nolith',
+ state: 'active',
+ avatar_url:
+ 'https://assets.gitlab-static.net/uploads/-/system/user/avatar/376774/avatar.png',
+ web_url: 'https://gitlab.com/nolith',
+ status_tooltip_html: null,
+ path: '/nolith',
},
+ active: false,
+ coverage: null,
+ source: 'pipeline',
+ path: '/gitlab-com/gitlab-docs/pipelines/34993051',
details: {
status: {
- icon: 'status_running',
- text: 'running',
- label: 'running',
- group: 'running',
+ icon: 'status_failed',
+ text: 'failed',
+ label: 'failed',
+ group: 'failed',
+ tooltip: 'failed',
has_details: true,
- details_path: '/gitlab-org/gitlab-foss/pipelines/133',
+ details_path: '/gitlab-com/gitlab-docs/pipelines/34993051',
+ illustration: null,
favicon:
- '/assets/ci_favicons/dev/favicon_status_running-c3ad2fc53ea6079c174e5b6c1351ff349e99ec3af5a5622fb77b0fe53ea279c1.ico',
+ 'https://gitlab.com/assets/ci_favicons/favicon_status_failed-41304d7f7e3828808b0c26771f0309e55296819a9beea3ea9fbf6689d9857c12.png',
},
+ duration: 118,
+ finished_at: '2018-10-31T16:41:40.615Z',
+ stages: [
+ {
+ name: 'build-images',
+ title: 'build-images: skipped',
+ groups: [
+ {
+ name: 'image:bootstrap',
+ size: 1,
+ status: {
+ icon: 'status_manual',
+ text: 'manual',
+ label: 'manual play action',
+ group: 'manual',
+ tooltip: 'manual action',
+ has_details: true,
+ details_path: '/gitlab-com/gitlab-docs/-/jobs/114982853',
+ illustration: {
+ image:
+ 'https://assets.gitlab-static.net/assets/illustrations/manual_action-2b4ca0d1bcfd92aebf33d484e36cbf7a102d007f76b5a0cfea636033a629d601.svg',
+ size: 'svg-394',
+ title: 'This job requires a manual action',
+ content:
+ 'This job depends on a user to trigger its process. Often they are used to deploy code to production environments',
+ },
+ favicon:
+ 'https://gitlab.com/assets/ci_favicons/favicon_status_manual-829a0804612cef47d9efc1618dba38325483657c847dba0546c3b9f0295bb36c.png',
+ action: {
+ icon: 'play',
+ title: 'Play',
+ path: '/gitlab-com/gitlab-docs/-/jobs/114982853/play',
+ method: 'post',
+ button_title: 'Trigger this manual action',
+ },
+ },
+ jobs: [
+ {
+ id: 114982853,
+ name: 'image:bootstrap',
+ started: null,
+ archived: false,
+ build_path: '/gitlab-com/gitlab-docs/-/jobs/114982853',
+ play_path: '/gitlab-com/gitlab-docs/-/jobs/114982853/play',
+ playable: true,
+ scheduled: false,
+ created_at: '2018-10-31T16:35:23.704Z',
+ updated_at: '2018-10-31T16:35:24.118Z',
+ status: {
+ icon: 'status_manual',
+ text: 'manual',
+ label: 'manual play action',
+ group: 'manual',
+ tooltip: 'manual action',
+ has_details: true,
+ details_path: '/gitlab-com/gitlab-docs/-/jobs/114982853',
+ illustration: {
+ image:
+ 'https://assets.gitlab-static.net/assets/illustrations/manual_action-2b4ca0d1bcfd92aebf33d484e36cbf7a102d007f76b5a0cfea636033a629d601.svg',
+ size: 'svg-394',
+ title: 'This job requires a manual action',
+ content:
+ 'This job depends on a user to trigger its process. Often they are used to deploy code to production environments',
+ },
+ favicon:
+ 'https://gitlab.com/assets/ci_favicons/favicon_status_manual-829a0804612cef47d9efc1618dba38325483657c847dba0546c3b9f0295bb36c.png',
+ action: {
+ icon: 'play',
+ title: 'Play',
+ path: '/gitlab-com/gitlab-docs/-/jobs/114982853/play',
+ method: 'post',
+ button_title: 'Trigger this manual action',
+ },
+ },
+ },
+ ],
+ },
+ {
+ name: 'image:builder-onbuild',
+ size: 1,
+ status: {
+ icon: 'status_manual',
+ text: 'manual',
+ label: 'manual play action',
+ group: 'manual',
+ tooltip: 'manual action',
+ has_details: true,
+ details_path: '/gitlab-com/gitlab-docs/-/jobs/114982854',
+ illustration: {
+ image:
+ 'https://assets.gitlab-static.net/assets/illustrations/manual_action-2b4ca0d1bcfd92aebf33d484e36cbf7a102d007f76b5a0cfea636033a629d601.svg',
+ size: 'svg-394',
+ title: 'This job requires a manual action',
+ content:
+ 'This job depends on a user to trigger its process. Often they are used to deploy code to production environments',
+ },
+ favicon:
+ 'https://gitlab.com/assets/ci_favicons/favicon_status_manual-829a0804612cef47d9efc1618dba38325483657c847dba0546c3b9f0295bb36c.png',
+ action: {
+ icon: 'play',
+ title: 'Play',
+ path: '/gitlab-com/gitlab-docs/-/jobs/114982854/play',
+ method: 'post',
+ button_title: 'Trigger this manual action',
+ },
+ },
+ jobs: [
+ {
+ id: 114982854,
+ name: 'image:builder-onbuild',
+ started: null,
+ archived: false,
+ build_path: '/gitlab-com/gitlab-docs/-/jobs/114982854',
+ play_path: '/gitlab-com/gitlab-docs/-/jobs/114982854/play',
+ playable: true,
+ scheduled: false,
+ created_at: '2018-10-31T16:35:23.728Z',
+ updated_at: '2018-10-31T16:35:24.070Z',
+ status: {
+ icon: 'status_manual',
+ text: 'manual',
+ label: 'manual play action',
+ group: 'manual',
+ tooltip: 'manual action',
+ has_details: true,
+ details_path: '/gitlab-com/gitlab-docs/-/jobs/114982854',
+ illustration: {
+ image:
+ 'https://assets.gitlab-static.net/assets/illustrations/manual_action-2b4ca0d1bcfd92aebf33d484e36cbf7a102d007f76b5a0cfea636033a629d601.svg',
+ size: 'svg-394',
+ title: 'This job requires a manual action',
+ content:
+ 'This job depends on a user to trigger its process. Often they are used to deploy code to production environments',
+ },
+ favicon:
+ 'https://gitlab.com/assets/ci_favicons/favicon_status_manual-829a0804612cef47d9efc1618dba38325483657c847dba0546c3b9f0295bb36c.png',
+ action: {
+ icon: 'play',
+ title: 'Play',
+ path: '/gitlab-com/gitlab-docs/-/jobs/114982854/play',
+ method: 'post',
+ button_title: 'Trigger this manual action',
+ },
+ },
+ },
+ ],
+ },
+ {
+ name: 'image:nginx-onbuild',
+ size: 1,
+ status: {
+ icon: 'status_manual',
+ text: 'manual',
+ label: 'manual play action',
+ group: 'manual',
+ tooltip: 'manual action',
+ has_details: true,
+ details_path: '/gitlab-com/gitlab-docs/-/jobs/114982855',
+ illustration: {
+ image:
+ 'https://assets.gitlab-static.net/assets/illustrations/manual_action-2b4ca0d1bcfd92aebf33d484e36cbf7a102d007f76b5a0cfea636033a629d601.svg',
+ size: 'svg-394',
+ title: 'This job requires a manual action',
+ content:
+ 'This job depends on a user to trigger its process. Often they are used to deploy code to production environments',
+ },
+ favicon:
+ 'https://gitlab.com/assets/ci_favicons/favicon_status_manual-829a0804612cef47d9efc1618dba38325483657c847dba0546c3b9f0295bb36c.png',
+ action: {
+ icon: 'play',
+ title: 'Play',
+ path: '/gitlab-com/gitlab-docs/-/jobs/114982855/play',
+ method: 'post',
+ button_title: 'Trigger this manual action',
+ },
+ },
+ jobs: [
+ {
+ id: 114982855,
+ name: 'image:nginx-onbuild',
+ started: null,
+ archived: false,
+ build_path: '/gitlab-com/gitlab-docs/-/jobs/114982855',
+ play_path: '/gitlab-com/gitlab-docs/-/jobs/114982855/play',
+ playable: true,
+ scheduled: false,
+ created_at: '2018-10-31T16:35:23.753Z',
+ updated_at: '2018-10-31T16:35:24.033Z',
+ status: {
+ icon: 'status_manual',
+ text: 'manual',
+ label: 'manual play action',
+ group: 'manual',
+ tooltip: 'manual action',
+ has_details: true,
+ details_path: '/gitlab-com/gitlab-docs/-/jobs/114982855',
+ illustration: {
+ image:
+ 'https://assets.gitlab-static.net/assets/illustrations/manual_action-2b4ca0d1bcfd92aebf33d484e36cbf7a102d007f76b5a0cfea636033a629d601.svg',
+ size: 'svg-394',
+ title: 'This job requires a manual action',
+ content:
+ 'This job depends on a user to trigger its process. Often they are used to deploy code to production environments',
+ },
+ favicon:
+ 'https://gitlab.com/assets/ci_favicons/favicon_status_manual-829a0804612cef47d9efc1618dba38325483657c847dba0546c3b9f0295bb36c.png',
+ action: {
+ icon: 'play',
+ title: 'Play',
+ path: '/gitlab-com/gitlab-docs/-/jobs/114982855/play',
+ method: 'post',
+ button_title: 'Trigger this manual action',
+ },
+ },
+ },
+ ],
+ },
+ ],
+ status: {
+ icon: 'status_skipped',
+ text: 'skipped',
+ label: 'skipped',
+ group: 'skipped',
+ tooltip: 'skipped',
+ has_details: true,
+ details_path: '/gitlab-com/gitlab-docs/pipelines/34993051#build-images',
+ illustration: null,
+ favicon:
+ 'https://gitlab.com/assets/ci_favicons/favicon_status_skipped-0b9c5e543588945e8c4ca57786bbf2d0c56631959c9f853300392d0315be829b.png',
+ },
+ path: '/gitlab-com/gitlab-docs/pipelines/34993051#build-images',
+ dropdown_path:
+ '/gitlab-com/gitlab-docs/pipelines/34993051/stage.json?stage=build-images',
+ },
+ {
+ name: 'build',
+ title: 'build: failed',
+ groups: [
+ {
+ name: 'compile_dev',
+ size: 1,
+ status: {
+ icon: 'status_failed',
+ text: 'failed',
+ label: 'failed',
+ group: 'failed',
+ tooltip: 'failed - (script failure)',
+ has_details: true,
+ details_path: '/gitlab-com/gitlab-docs/-/jobs/114984694',
+ illustration: {
+ image:
+ 'https://assets.gitlab-static.net/assets/illustrations/skipped-job_empty-8b877955fbf175e42ae65b6cb95346e15282c6fc5b682756c329af3a0055225e.svg',
+ size: 'svg-430',
+ title: 'This job does not have a trace.',
+ },
+ favicon:
+ 'https://gitlab.com/assets/ci_favicons/favicon_status_failed-41304d7f7e3828808b0c26771f0309e55296819a9beea3ea9fbf6689d9857c12.png',
+ action: {
+ icon: 'retry',
+ title: 'Retry',
+ path: '/h5bp/html5-boilerplate/-/jobs/528/retry',
+ method: 'post',
+ button_title: 'Retry this job',
+ },
+ },
+ jobs: [
+ {
+ id: 114984694,
+ name: 'compile_dev',
+ started: '2018-10-31T16:39:41.598Z',
+ archived: false,
+ build_path: '/gitlab-com/gitlab-docs/-/jobs/114984694',
+ retry_path: '/gitlab-com/gitlab-docs/-/jobs/114984694/retry',
+ playable: false,
+ scheduled: false,
+ created_at: '2018-10-31T16:39:41.138Z',
+ updated_at: '2018-10-31T16:41:40.072Z',
+ status: {
+ icon: 'status_failed',
+ text: 'failed',
+ label: 'failed',
+ group: 'failed',
+ tooltip: 'failed - (script failure)',
+ has_details: true,
+ details_path: '/gitlab-com/gitlab-docs/-/jobs/114984694',
+ illustration: {
+ image:
+ 'https://assets.gitlab-static.net/assets/illustrations/skipped-job_empty-8b877955fbf175e42ae65b6cb95346e15282c6fc5b682756c329af3a0055225e.svg',
+ size: 'svg-430',
+ title: 'This job does not have a trace.',
+ },
+ favicon:
+ 'https://gitlab.com/assets/ci_favicons/favicon_status_failed-41304d7f7e3828808b0c26771f0309e55296819a9beea3ea9fbf6689d9857c12.png',
+ action: {
+ icon: 'retry',
+ title: 'Retry',
+ path: '/h5bp/html5-boilerplate/-/jobs/528/retry',
+ method: 'post',
+ button_title: 'Retry this job',
+ },
+ },
+ recoverable: false,
+ },
+ ],
+ },
+ ],
+ status: {
+ icon: 'status_failed',
+ text: 'failed',
+ label: 'failed',
+ group: 'failed',
+ tooltip: 'failed',
+ has_details: true,
+ details_path: '/gitlab-com/gitlab-docs/pipelines/34993051#build',
+ illustration: null,
+ favicon:
+ 'https://gitlab.com/assets/ci_favicons/favicon_status_failed-41304d7f7e3828808b0c26771f0309e55296819a9beea3ea9fbf6689d9857c12.png',
+ },
+ path: '/gitlab-com/gitlab-docs/pipelines/34993051#build',
+ dropdown_path: '/gitlab-com/gitlab-docs/pipelines/34993051/stage.json?stage=build',
+ },
+ {
+ name: 'deploy',
+ title: 'deploy: skipped',
+ groups: [
+ {
+ name: 'review',
+ size: 1,
+ status: {
+ icon: 'status_skipped',
+ text: 'skipped',
+ label: 'skipped',
+ group: 'skipped',
+ tooltip: 'skipped',
+ has_details: true,
+ details_path: '/gitlab-com/gitlab-docs/-/jobs/114982857',
+ illustration: {
+ image:
+ 'https://assets.gitlab-static.net/assets/illustrations/skipped-job_empty-8b877955fbf175e42ae65b6cb95346e15282c6fc5b682756c329af3a0055225e.svg',
+ size: 'svg-430',
+ title: 'This job has been skipped',
+ },
+ favicon:
+ 'https://gitlab.com/assets/ci_favicons/favicon_status_skipped-0b9c5e543588945e8c4ca57786bbf2d0c56631959c9f853300392d0315be829b.png',
+ },
+ jobs: [
+ {
+ id: 114982857,
+ name: 'review',
+ started: null,
+ archived: false,
+ build_path: '/gitlab-com/gitlab-docs/-/jobs/114982857',
+ playable: false,
+ scheduled: false,
+ created_at: '2018-10-31T16:35:23.805Z',
+ updated_at: '2018-10-31T16:41:40.569Z',
+ status: {
+ icon: 'status_skipped',
+ text: 'skipped',
+ label: 'skipped',
+ group: 'skipped',
+ tooltip: 'skipped',
+ has_details: true,
+ details_path: '/gitlab-com/gitlab-docs/-/jobs/114982857',
+ illustration: {
+ image:
+ 'https://assets.gitlab-static.net/assets/illustrations/skipped-job_empty-8b877955fbf175e42ae65b6cb95346e15282c6fc5b682756c329af3a0055225e.svg',
+ size: 'svg-430',
+ title: 'This job has been skipped',
+ },
+ favicon:
+ 'https://gitlab.com/assets/ci_favicons/favicon_status_skipped-0b9c5e543588945e8c4ca57786bbf2d0c56631959c9f853300392d0315be829b.png',
+ },
+ },
+ ],
+ },
+ {
+ name: 'review_stop',
+ size: 1,
+ status: {
+ icon: 'status_skipped',
+ text: 'skipped',
+ label: 'skipped',
+ group: 'skipped',
+ tooltip: 'skipped',
+ has_details: true,
+ details_path: '/gitlab-com/gitlab-docs/-/jobs/114982858',
+ illustration: {
+ image:
+ 'https://assets.gitlab-static.net/assets/illustrations/skipped-job_empty-8b877955fbf175e42ae65b6cb95346e15282c6fc5b682756c329af3a0055225e.svg',
+ size: 'svg-430',
+ title: 'This job has been skipped',
+ },
+ favicon:
+ 'https://gitlab.com/assets/ci_favicons/favicon_status_skipped-0b9c5e543588945e8c4ca57786bbf2d0c56631959c9f853300392d0315be829b.png',
+ },
+ jobs: [
+ {
+ id: 114982858,
+ name: 'review_stop',
+ started: null,
+ archived: false,
+ build_path: '/gitlab-com/gitlab-docs/-/jobs/114982858',
+ playable: false,
+ scheduled: false,
+ created_at: '2018-10-31T16:35:23.840Z',
+ updated_at: '2018-10-31T16:41:40.480Z',
+ status: {
+ icon: 'status_skipped',
+ text: 'skipped',
+ label: 'skipped',
+ group: 'skipped',
+ tooltip: 'skipped',
+ has_details: true,
+ details_path: '/gitlab-com/gitlab-docs/-/jobs/114982858',
+ illustration: {
+ image:
+ 'https://assets.gitlab-static.net/assets/illustrations/skipped-job_empty-8b877955fbf175e42ae65b6cb95346e15282c6fc5b682756c329af3a0055225e.svg',
+ size: 'svg-430',
+ title: 'This job has been skipped',
+ },
+ favicon:
+ 'https://gitlab.com/assets/ci_favicons/favicon_status_skipped-0b9c5e543588945e8c4ca57786bbf2d0c56631959c9f853300392d0315be829b.png',
+ },
+ },
+ ],
+ },
+ ],
+ status: {
+ icon: 'status_skipped',
+ text: 'skipped',
+ label: 'skipped',
+ group: 'skipped',
+ tooltip: 'skipped',
+ has_details: true,
+ details_path: '/gitlab-com/gitlab-docs/pipelines/34993051#deploy',
+ illustration: null,
+ favicon:
+ 'https://gitlab.com/assets/ci_favicons/favicon_status_skipped-0b9c5e543588945e8c4ca57786bbf2d0c56631959c9f853300392d0315be829b.png',
+ },
+ path: '/gitlab-com/gitlab-docs/pipelines/34993051#deploy',
+ dropdown_path: '/gitlab-com/gitlab-docs/pipelines/34993051/stage.json?stage=deploy',
+ },
+ ],
+ artifacts: [],
+ manual_actions: [
+ {
+ name: 'image:bootstrap',
+ path: '/gitlab-com/gitlab-docs/-/jobs/114982853/play',
+ playable: true,
+ scheduled: false,
+ },
+ {
+ name: 'image:builder-onbuild',
+ path: '/gitlab-com/gitlab-docs/-/jobs/114982854/play',
+ playable: true,
+ scheduled: false,
+ },
+ {
+ name: 'image:nginx-onbuild',
+ path: '/gitlab-com/gitlab-docs/-/jobs/114982855/play',
+ playable: true,
+ scheduled: false,
+ },
+ {
+ name: 'review_stop',
+ path: '/gitlab-com/gitlab-docs/-/jobs/114982858/play',
+ playable: false,
+ scheduled: false,
+ },
+ ],
+ scheduled_actions: [],
},
- flags: {
- latest: false,
- triggered: false,
- stuck: false,
- yaml_errors: false,
- retryable: true,
- cancelable: true,
- },
- ref: {
- name: 'crowd',
- path: '/gitlab-org/gitlab-foss/commits/crowd',
- tag: false,
- branch: true,
- },
- commit: {
- id: 'b6bd4856a33df3d144be66c4ed1f1396009bb08b',
- short_id: 'b6bd4856',
- title: 'getting user keys publically through http without any authentication, the github…',
- created_at: '2013-10-02T20:39:29.000+05:30',
- parent_ids: ['e219cf7246c6a0495e4507deaffeba11e79f13b8'],
- message:
- 'getting user keys publically through http without any authentication, the github way. E.g: http://github.com/devaroop.keys\n',
- author_name: 'devaroop',
- author_email: 'devaroop123@yahoo.co.in',
- authored_date: '2013-10-02T20:39:29.000+05:30',
- committer_name: 'devaroop',
- committer_email: 'devaroop123@yahoo.co.in',
- committed_date: '2013-10-02T20:39:29.000+05:30',
- author_gravatar_url:
- 'http://www.gravatar.com/avatar/35df4b155ec66a3127d53459941cf8a2?s=80&d=identicon',
- commit_url:
- 'http://localhost:3000/gitlab-org/gitlab-foss/commit/b6bd4856a33df3d144be66c4ed1f1396009bb08b',
- commit_path: '/gitlab-org/gitlab-foss/commit/b6bd4856a33df3d144be66c4ed1f1396009bb08b',
+ project: {
+ id: 20,
+ name: 'GitLab Docs',
+ full_path: '/gitlab-com/gitlab-docs',
+ full_name: 'GitLab.com / GitLab Docs',
},
- retry_path: '/gitlab-org/gitlab-foss/pipelines/133/retry',
- cancel_path: '/gitlab-org/gitlab-foss/pipelines/133/cancel',
- created_at: '2017-05-24T14:46:24.648Z',
- updated_at: '2017-05-24T14:48:59.673Z',
},
{
- id: 135,
- active: true,
- path: '/gitlab-org/gitlab-foss/pipelines/130',
- project: {
- name: 'GitLabCE',
+ id: 34993052,
+ user: {
+ id: 376774,
+ name: 'Alessio Caiazza',
+ username: 'nolith',
+ state: 'active',
+ avatar_url:
+ 'https://assets.gitlab-static.net/uploads/-/system/user/avatar/376774/avatar.png',
+ web_url: 'https://gitlab.com/nolith',
+ status_tooltip_html: null,
+ path: '/nolith',
},
+ active: false,
+ coverage: null,
+ source: 'pipeline',
+ path: '/gitlab-com/gitlab-docs/pipelines/34993051',
details: {
status: {
- icon: 'status_running',
- text: 'running',
- label: 'running',
- group: 'running',
+ icon: 'status_failed',
+ text: 'failed',
+ label: 'failed',
+ group: 'failed',
+ tooltip: 'failed',
has_details: true,
- details_path: '/gitlab-org/gitlab-foss/pipelines/130',
+ details_path: '/gitlab-com/gitlab-docs/pipelines/34993051',
+ illustration: null,
favicon:
- '/assets/ci_favicons/dev/favicon_status_running-c3ad2fc53ea6079c174e5b6c1351ff349e99ec3af5a5622fb77b0fe53ea279c1.ico',
+ 'https://gitlab.com/assets/ci_favicons/favicon_status_failed-41304d7f7e3828808b0c26771f0309e55296819a9beea3ea9fbf6689d9857c12.png',
},
+ duration: 118,
+ finished_at: '2018-10-31T16:41:40.615Z',
+ stages: [
+ {
+ name: 'build-images',
+ title: 'build-images: skipped',
+ groups: [
+ {
+ name: 'image:bootstrap',
+ size: 1,
+ status: {
+ icon: 'status_manual',
+ text: 'manual',
+ label: 'manual play action',
+ group: 'manual',
+ tooltip: 'manual action',
+ has_details: true,
+ details_path: '/gitlab-com/gitlab-docs/-/jobs/114982853',
+ illustration: {
+ image:
+ 'https://assets.gitlab-static.net/assets/illustrations/manual_action-2b4ca0d1bcfd92aebf33d484e36cbf7a102d007f76b5a0cfea636033a629d601.svg',
+ size: 'svg-394',
+ title: 'This job requires a manual action',
+ content:
+ 'This job depends on a user to trigger its process. Often they are used to deploy code to production environments',
+ },
+ favicon:
+ 'https://gitlab.com/assets/ci_favicons/favicon_status_manual-829a0804612cef47d9efc1618dba38325483657c847dba0546c3b9f0295bb36c.png',
+ action: {
+ icon: 'play',
+ title: 'Play',
+ path: '/gitlab-com/gitlab-docs/-/jobs/114982853/play',
+ method: 'post',
+ button_title: 'Trigger this manual action',
+ },
+ },
+ jobs: [
+ {
+ id: 114982853,
+ name: 'image:bootstrap',
+ started: null,
+ archived: false,
+ build_path: '/gitlab-com/gitlab-docs/-/jobs/114982853',
+ play_path: '/gitlab-com/gitlab-docs/-/jobs/114982853/play',
+ playable: true,
+ scheduled: false,
+ created_at: '2018-10-31T16:35:23.704Z',
+ updated_at: '2018-10-31T16:35:24.118Z',
+ status: {
+ icon: 'status_manual',
+ text: 'manual',
+ label: 'manual play action',
+ group: 'manual',
+ tooltip: 'manual action',
+ has_details: true,
+ details_path: '/gitlab-com/gitlab-docs/-/jobs/114982853',
+ illustration: {
+ image:
+ 'https://assets.gitlab-static.net/assets/illustrations/manual_action-2b4ca0d1bcfd92aebf33d484e36cbf7a102d007f76b5a0cfea636033a629d601.svg',
+ size: 'svg-394',
+ title: 'This job requires a manual action',
+ content:
+ 'This job depends on a user to trigger its process. Often they are used to deploy code to production environments',
+ },
+ favicon:
+ 'https://gitlab.com/assets/ci_favicons/favicon_status_manual-829a0804612cef47d9efc1618dba38325483657c847dba0546c3b9f0295bb36c.png',
+ action: {
+ icon: 'play',
+ title: 'Play',
+ path: '/gitlab-com/gitlab-docs/-/jobs/114982853/play',
+ method: 'post',
+ button_title: 'Trigger this manual action',
+ },
+ },
+ },
+ ],
+ },
+ {
+ name: 'image:builder-onbuild',
+ size: 1,
+ status: {
+ icon: 'status_manual',
+ text: 'manual',
+ label: 'manual play action',
+ group: 'manual',
+ tooltip: 'manual action',
+ has_details: true,
+ details_path: '/gitlab-com/gitlab-docs/-/jobs/114982854',
+ illustration: {
+ image:
+ 'https://assets.gitlab-static.net/assets/illustrations/manual_action-2b4ca0d1bcfd92aebf33d484e36cbf7a102d007f76b5a0cfea636033a629d601.svg',
+ size: 'svg-394',
+ title: 'This job requires a manual action',
+ content:
+ 'This job depends on a user to trigger its process. Often they are used to deploy code to production environments',
+ },
+ favicon:
+ 'https://gitlab.com/assets/ci_favicons/favicon_status_manual-829a0804612cef47d9efc1618dba38325483657c847dba0546c3b9f0295bb36c.png',
+ action: {
+ icon: 'play',
+ title: 'Play',
+ path: '/gitlab-com/gitlab-docs/-/jobs/114982854/play',
+ method: 'post',
+ button_title: 'Trigger this manual action',
+ },
+ },
+ jobs: [
+ {
+ id: 114982854,
+ name: 'image:builder-onbuild',
+ started: null,
+ archived: false,
+ build_path: '/gitlab-com/gitlab-docs/-/jobs/114982854',
+ play_path: '/gitlab-com/gitlab-docs/-/jobs/114982854/play',
+ playable: true,
+ scheduled: false,
+ created_at: '2018-10-31T16:35:23.728Z',
+ updated_at: '2018-10-31T16:35:24.070Z',
+ status: {
+ icon: 'status_manual',
+ text: 'manual',
+ label: 'manual play action',
+ group: 'manual',
+ tooltip: 'manual action',
+ has_details: true,
+ details_path: '/gitlab-com/gitlab-docs/-/jobs/114982854',
+ illustration: {
+ image:
+ 'https://assets.gitlab-static.net/assets/illustrations/manual_action-2b4ca0d1bcfd92aebf33d484e36cbf7a102d007f76b5a0cfea636033a629d601.svg',
+ size: 'svg-394',
+ title: 'This job requires a manual action',
+ content:
+ 'This job depends on a user to trigger its process. Often they are used to deploy code to production environments',
+ },
+ favicon:
+ 'https://gitlab.com/assets/ci_favicons/favicon_status_manual-829a0804612cef47d9efc1618dba38325483657c847dba0546c3b9f0295bb36c.png',
+ action: {
+ icon: 'play',
+ title: 'Play',
+ path: '/gitlab-com/gitlab-docs/-/jobs/114982854/play',
+ method: 'post',
+ button_title: 'Trigger this manual action',
+ },
+ },
+ },
+ ],
+ },
+ {
+ name: 'image:nginx-onbuild',
+ size: 1,
+ status: {
+ icon: 'status_manual',
+ text: 'manual',
+ label: 'manual play action',
+ group: 'manual',
+ tooltip: 'manual action',
+ has_details: true,
+ details_path: '/gitlab-com/gitlab-docs/-/jobs/114982855',
+ illustration: {
+ image:
+ 'https://assets.gitlab-static.net/assets/illustrations/manual_action-2b4ca0d1bcfd92aebf33d484e36cbf7a102d007f76b5a0cfea636033a629d601.svg',
+ size: 'svg-394',
+ title: 'This job requires a manual action',
+ content:
+ 'This job depends on a user to trigger its process. Often they are used to deploy code to production environments',
+ },
+ favicon:
+ 'https://gitlab.com/assets/ci_favicons/favicon_status_manual-829a0804612cef47d9efc1618dba38325483657c847dba0546c3b9f0295bb36c.png',
+ action: {
+ icon: 'play',
+ title: 'Play',
+ path: '/gitlab-com/gitlab-docs/-/jobs/114982855/play',
+ method: 'post',
+ button_title: 'Trigger this manual action',
+ },
+ },
+ jobs: [
+ {
+ id: 1224982855,
+ name: 'image:nginx-onbuild',
+ started: null,
+ archived: false,
+ build_path: '/gitlab-com/gitlab-docs/-/jobs/114982855',
+ play_path: '/gitlab-com/gitlab-docs/-/jobs/114982855/play',
+ playable: true,
+ scheduled: false,
+ created_at: '2018-10-31T16:35:23.753Z',
+ updated_at: '2018-10-31T16:35:24.033Z',
+ status: {
+ icon: 'status_manual',
+ text: 'manual',
+ label: 'manual play action',
+ group: 'manual',
+ tooltip: 'manual action',
+ has_details: true,
+ details_path: '/gitlab-com/gitlab-docs/-/jobs/114982855',
+ illustration: {
+ image:
+ 'https://assets.gitlab-static.net/assets/illustrations/manual_action-2b4ca0d1bcfd92aebf33d484e36cbf7a102d007f76b5a0cfea636033a629d601.svg',
+ size: 'svg-394',
+ title: 'This job requires a manual action',
+ content:
+ 'This job depends on a user to trigger its process. Often they are used to deploy code to production environments',
+ },
+ favicon:
+ 'https://gitlab.com/assets/ci_favicons/favicon_status_manual-829a0804612cef47d9efc1618dba38325483657c847dba0546c3b9f0295bb36c.png',
+ action: {
+ icon: 'play',
+ title: 'Play',
+ path: '/gitlab-com/gitlab-docs/-/jobs/114982855/play',
+ method: 'post',
+ button_title: 'Trigger this manual action',
+ },
+ },
+ },
+ ],
+ },
+ ],
+ status: {
+ icon: 'status_skipped',
+ text: 'skipped',
+ label: 'skipped',
+ group: 'skipped',
+ tooltip: 'skipped',
+ has_details: true,
+ details_path: '/gitlab-com/gitlab-docs/pipelines/34993051#build-images',
+ illustration: null,
+ favicon:
+ 'https://gitlab.com/assets/ci_favicons/favicon_status_skipped-0b9c5e543588945e8c4ca57786bbf2d0c56631959c9f853300392d0315be829b.png',
+ },
+ path: '/gitlab-com/gitlab-docs/pipelines/34993051#build-images',
+ dropdown_path:
+ '/gitlab-com/gitlab-docs/pipelines/34993051/stage.json?stage=build-images',
+ },
+ {
+ name: 'build',
+ title: 'build: failed',
+ groups: [
+ {
+ name: 'compile_dev',
+ size: 1,
+ status: {
+ icon: 'status_failed',
+ text: 'failed',
+ label: 'failed',
+ group: 'failed',
+ tooltip: 'failed - (script failure)',
+ has_details: true,
+ details_path: '/gitlab-com/gitlab-docs/-/jobs/114984694',
+ illustration: {
+ image:
+ 'https://assets.gitlab-static.net/assets/illustrations/skipped-job_empty-8b877955fbf175e42ae65b6cb95346e15282c6fc5b682756c329af3a0055225e.svg',
+ size: 'svg-430',
+ title: 'This job does not have a trace.',
+ },
+ favicon:
+ 'https://gitlab.com/assets/ci_favicons/favicon_status_failed-41304d7f7e3828808b0c26771f0309e55296819a9beea3ea9fbf6689d9857c12.png',
+ action: {
+ icon: 'retry',
+ title: 'Retry',
+ path: '/gitlab-com/gitlab-docs/-/jobs/114984694/retry',
+ method: 'post',
+ button_title: 'Retry this job',
+ },
+ },
+ jobs: [
+ {
+ id: 1123984694,
+ name: 'compile_dev',
+ started: '2018-10-31T16:39:41.598Z',
+ archived: false,
+ build_path: '/gitlab-com/gitlab-docs/-/jobs/114984694',
+ retry_path: '/gitlab-com/gitlab-docs/-/jobs/114984694/retry',
+ playable: false,
+ scheduled: false,
+ created_at: '2018-10-31T16:39:41.138Z',
+ updated_at: '2018-10-31T16:41:40.072Z',
+ status: {
+ icon: 'status_failed',
+ text: 'failed',
+ label: 'failed',
+ group: 'failed',
+ tooltip: 'failed - (script failure)',
+ has_details: true,
+ details_path: '/gitlab-com/gitlab-docs/-/jobs/114984694',
+ illustration: {
+ image:
+ 'https://assets.gitlab-static.net/assets/illustrations/skipped-job_empty-8b877955fbf175e42ae65b6cb95346e15282c6fc5b682756c329af3a0055225e.svg',
+ size: 'svg-430',
+ title: 'This job does not have a trace.',
+ },
+ favicon:
+ 'https://gitlab.com/assets/ci_favicons/favicon_status_failed-41304d7f7e3828808b0c26771f0309e55296819a9beea3ea9fbf6689d9857c12.png',
+ action: {
+ icon: 'retry',
+ title: 'Retry',
+ path: '/gitlab-com/gitlab-docs/-/jobs/114984694/retry',
+ method: 'post',
+ button_title: 'Retry this job',
+ },
+ },
+ recoverable: false,
+ },
+ ],
+ },
+ ],
+ status: {
+ icon: 'status_failed',
+ text: 'failed',
+ label: 'failed',
+ group: 'failed',
+ tooltip: 'failed',
+ has_details: true,
+ details_path: '/gitlab-com/gitlab-docs/pipelines/34993051#build',
+ illustration: null,
+ favicon:
+ 'https://gitlab.com/assets/ci_favicons/favicon_status_failed-41304d7f7e3828808b0c26771f0309e55296819a9beea3ea9fbf6689d9857c12.png',
+ },
+ path: '/gitlab-com/gitlab-docs/pipelines/34993051#build',
+ dropdown_path: '/gitlab-com/gitlab-docs/pipelines/34993051/stage.json?stage=build',
+ },
+ {
+ name: 'deploy',
+ title: 'deploy: skipped',
+ groups: [
+ {
+ name: 'review',
+ size: 1,
+ status: {
+ icon: 'status_skipped',
+ text: 'skipped',
+ label: 'skipped',
+ group: 'skipped',
+ tooltip: 'skipped',
+ has_details: true,
+ details_path: '/gitlab-com/gitlab-docs/-/jobs/114982857',
+ illustration: {
+ image:
+ 'https://assets.gitlab-static.net/assets/illustrations/skipped-job_empty-8b877955fbf175e42ae65b6cb95346e15282c6fc5b682756c329af3a0055225e.svg',
+ size: 'svg-430',
+ title: 'This job has been skipped',
+ },
+ favicon:
+ 'https://gitlab.com/assets/ci_favicons/favicon_status_skipped-0b9c5e543588945e8c4ca57786bbf2d0c56631959c9f853300392d0315be829b.png',
+ },
+ jobs: [
+ {
+ id: 1143232982857,
+ name: 'review',
+ started: null,
+ archived: false,
+ build_path: '/gitlab-com/gitlab-docs/-/jobs/114982857',
+ playable: false,
+ scheduled: false,
+ created_at: '2018-10-31T16:35:23.805Z',
+ updated_at: '2018-10-31T16:41:40.569Z',
+ status: {
+ icon: 'status_skipped',
+ text: 'skipped',
+ label: 'skipped',
+ group: 'skipped',
+ tooltip: 'skipped',
+ has_details: true,
+ details_path: '/gitlab-com/gitlab-docs/-/jobs/114982857',
+ illustration: {
+ image:
+ 'https://assets.gitlab-static.net/assets/illustrations/skipped-job_empty-8b877955fbf175e42ae65b6cb95346e15282c6fc5b682756c329af3a0055225e.svg',
+ size: 'svg-430',
+ title: 'This job has been skipped',
+ },
+ favicon:
+ 'https://gitlab.com/assets/ci_favicons/favicon_status_skipped-0b9c5e543588945e8c4ca57786bbf2d0c56631959c9f853300392d0315be829b.png',
+ },
+ },
+ ],
+ },
+ {
+ name: 'review_stop',
+ size: 1,
+ status: {
+ icon: 'status_skipped',
+ text: 'skipped',
+ label: 'skipped',
+ group: 'skipped',
+ tooltip: 'skipped',
+ has_details: true,
+ details_path: '/gitlab-com/gitlab-docs/-/jobs/114982858',
+ illustration: {
+ image:
+ 'https://assets.gitlab-static.net/assets/illustrations/skipped-job_empty-8b877955fbf175e42ae65b6cb95346e15282c6fc5b682756c329af3a0055225e.svg',
+ size: 'svg-430',
+ title: 'This job has been skipped',
+ },
+ favicon:
+ 'https://gitlab.com/assets/ci_favicons/favicon_status_skipped-0b9c5e543588945e8c4ca57786bbf2d0c56631959c9f853300392d0315be829b.png',
+ },
+ jobs: [
+ {
+ id: 114921313182858,
+ name: 'review_stop',
+ started: null,
+ archived: false,
+ build_path: '/gitlab-com/gitlab-docs/-/jobs/114982858',
+ playable: false,
+ scheduled: false,
+ created_at: '2018-10-31T16:35:23.840Z',
+ updated_at: '2018-10-31T16:41:40.480Z',
+ status: {
+ icon: 'status_skipped',
+ text: 'skipped',
+ label: 'skipped',
+ group: 'skipped',
+ tooltip: 'skipped',
+ has_details: true,
+ details_path: '/gitlab-com/gitlab-docs/-/jobs/114982858',
+ illustration: {
+ image:
+ 'https://assets.gitlab-static.net/assets/illustrations/skipped-job_empty-8b877955fbf175e42ae65b6cb95346e15282c6fc5b682756c329af3a0055225e.svg',
+ size: 'svg-430',
+ title: 'This job has been skipped',
+ },
+ favicon:
+ 'https://gitlab.com/assets/ci_favicons/favicon_status_skipped-0b9c5e543588945e8c4ca57786bbf2d0c56631959c9f853300392d0315be829b.png',
+ },
+ },
+ ],
+ },
+ ],
+ status: {
+ icon: 'status_skipped',
+ text: 'skipped',
+ label: 'skipped',
+ group: 'skipped',
+ tooltip: 'skipped',
+ has_details: true,
+ details_path: '/gitlab-com/gitlab-docs/pipelines/34993051#deploy',
+ illustration: null,
+ favicon:
+ 'https://gitlab.com/assets/ci_favicons/favicon_status_skipped-0b9c5e543588945e8c4ca57786bbf2d0c56631959c9f853300392d0315be829b.png',
+ },
+ path: '/gitlab-com/gitlab-docs/pipelines/34993051#deploy',
+ dropdown_path: '/gitlab-com/gitlab-docs/pipelines/34993051/stage.json?stage=deploy',
+ },
+ ],
+ artifacts: [],
+ manual_actions: [
+ {
+ name: 'image:bootstrap',
+ path: '/gitlab-com/gitlab-docs/-/jobs/114982853/play',
+ playable: true,
+ scheduled: false,
+ },
+ {
+ name: 'image:builder-onbuild',
+ path: '/gitlab-com/gitlab-docs/-/jobs/114982854/play',
+ playable: true,
+ scheduled: false,
+ },
+ {
+ name: 'image:nginx-onbuild',
+ path: '/gitlab-com/gitlab-docs/-/jobs/114982855/play',
+ playable: true,
+ scheduled: false,
+ },
+ {
+ name: 'review_stop',
+ path: '/gitlab-com/gitlab-docs/-/jobs/114982858/play',
+ playable: false,
+ scheduled: false,
+ },
+ ],
+ scheduled_actions: [],
},
- flags: {
- latest: false,
- triggered: false,
- stuck: false,
- yaml_errors: false,
- retryable: true,
- cancelable: true,
- },
- ref: {
- name: 'crowd',
- path: '/gitlab-org/gitlab-foss/commits/crowd',
- tag: false,
- branch: true,
- },
- commit: {
- id: '6d7ced4a2311eeff037c5575cca1868a6d3f586f',
- short_id: '6d7ced4a',
- title: 'Whitespace fixes to patch',
- created_at: '2013-10-08T13:53:22.000-05:00',
- parent_ids: ['1875141a963a4238bda29011d8f7105839485253'],
- message: 'Whitespace fixes to patch\n',
- author_name: 'Dale Hamel',
- author_email: 'dale.hamel@srvthe.net',
- authored_date: '2013-10-08T13:53:22.000-05:00',
- committer_name: 'Dale Hamel',
- committer_email: 'dale.hamel@invenia.ca',
- committed_date: '2013-10-08T13:53:22.000-05:00',
- author_gravatar_url:
- 'http://www.gravatar.com/avatar/cd08930e69fa5ad1a669206e7bafe476?s=80&d=identicon',
- commit_url:
- 'http://localhost:3000/gitlab-org/gitlab-foss/commit/6d7ced4a2311eeff037c5575cca1868a6d3f586f',
- commit_path: '/gitlab-org/gitlab-foss/commit/6d7ced4a2311eeff037c5575cca1868a6d3f586f',
+ project: {
+ id: 20,
+ name: 'GitLab Docs',
+ full_path: '/gitlab-com/gitlab-docs',
+ full_name: 'GitLab.com / GitLab Docs',
},
- retry_path: '/gitlab-org/gitlab-foss/pipelines/130/retry',
- cancel_path: '/gitlab-org/gitlab-foss/pipelines/130/cancel',
- created_at: '2017-05-24T14:46:24.630Z',
- updated_at: '2017-05-24T14:49:45.091Z',
+ triggered: [
+ {
+ id: 26,
+ user: null,
+ active: false,
+ coverage: null,
+ source: 'push',
+ created_at: '2019-01-06T17:48:37.599Z',
+ updated_at: '2019-01-06T17:48:38.371Z',
+ path: '/h5bp/html5-boilerplate/pipelines/26',
+ flags: {
+ latest: true,
+ stuck: false,
+ auto_devops: false,
+ merge_request: false,
+ yaml_errors: false,
+ retryable: true,
+ cancelable: false,
+ failure_reason: false,
+ },
+ details: {
+ status: {
+ icon: 'status_warning',
+ text: 'passed',
+ label: 'passed with warnings',
+ group: 'success-with-warnings',
+ tooltip: 'passed',
+ has_details: true,
+ details_path: '/h5bp/html5-boilerplate/pipelines/26',
+ illustration: null,
+ favicon:
+ '/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png',
+ },
+ duration: null,
+ finished_at: '2019-01-06T17:48:38.370Z',
+ stages: [
+ {
+ name: 'build',
+ title: 'build: passed',
+ groups: [
+ {
+ name: 'build:linux',
+ size: 1,
+ status: {
+ icon: 'status_success',
+ text: 'passed',
+ label: 'passed',
+ group: 'success',
+ tooltip: 'passed',
+ has_details: true,
+ details_path: '/h5bp/html5-boilerplate/-/jobs/526',
+ illustration: {
+ image:
+ '/assets/illustrations/skipped-job_empty-8b877955fbf175e42ae65b6cb95346e15282c6fc5b682756c329af3a0055225e.svg',
+ size: 'svg-430',
+ title: 'This job does not have a trace.',
+ },
+ favicon:
+ '/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png',
+ action: {
+ icon: 'retry',
+ title: 'Retry',
+ path: '/h5bp/html5-boilerplate/-/jobs/526/retry',
+ method: 'post',
+ button_title: 'Retry this job',
+ },
+ },
+ jobs: [
+ {
+ id: 526,
+ name: 'build:linux',
+ started: '2019-01-06T08:48:20.236Z',
+ archived: false,
+ build_path: '/h5bp/html5-boilerplate/-/jobs/526',
+ retry_path: '/h5bp/html5-boilerplate/-/jobs/526/retry',
+ playable: false,
+ scheduled: false,
+ created_at: '2019-01-06T17:48:37.806Z',
+ updated_at: '2019-01-06T17:48:37.806Z',
+ status: {
+ icon: 'status_success',
+ text: 'passed',
+ label: 'passed',
+ group: 'success',
+ tooltip: 'passed',
+ has_details: true,
+ details_path: '/h5bp/html5-boilerplate/-/jobs/526',
+ illustration: {
+ image:
+ '/assets/illustrations/skipped-job_empty-8b877955fbf175e42ae65b6cb95346e15282c6fc5b682756c329af3a0055225e.svg',
+ size: 'svg-430',
+ title: 'This job does not have a trace.',
+ },
+ favicon:
+ '/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png',
+ action: {
+ icon: 'retry',
+ title: 'Retry',
+ path: '/h5bp/html5-boilerplate/-/jobs/526/retry',
+ method: 'post',
+ button_title: 'Retry this job',
+ },
+ },
+ },
+ ],
+ },
+ {
+ name: 'build:osx',
+ size: 1,
+ status: {
+ icon: 'status_success',
+ text: 'passed',
+ label: 'passed',
+ group: 'success',
+ tooltip: 'passed',
+ has_details: true,
+ details_path: '/h5bp/html5-boilerplate/-/jobs/527',
+ illustration: {
+ image:
+ '/assets/illustrations/skipped-job_empty-8b877955fbf175e42ae65b6cb95346e15282c6fc5b682756c329af3a0055225e.svg',
+ size: 'svg-430',
+ title: 'This job does not have a trace.',
+ },
+ favicon:
+ '/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png',
+ action: {
+ icon: 'retry',
+ title: 'Retry',
+ path: '/h5bp/html5-boilerplate/-/jobs/527/retry',
+ method: 'post',
+ button_title: 'Retry this job',
+ },
+ },
+ jobs: [
+ {
+ id: 527,
+ name: 'build:osx',
+ started: '2019-01-06T07:48:20.237Z',
+ archived: false,
+ build_path: '/h5bp/html5-boilerplate/-/jobs/527',
+ retry_path: '/h5bp/html5-boilerplate/-/jobs/527/retry',
+ playable: false,
+ scheduled: false,
+ created_at: '2019-01-06T17:48:37.846Z',
+ updated_at: '2019-01-06T17:48:37.846Z',
+ status: {
+ icon: 'status_success',
+ text: 'passed',
+ label: 'passed',
+ group: 'success',
+ tooltip: 'passed',
+ has_details: true,
+ details_path: '/h5bp/html5-boilerplate/-/jobs/527',
+ illustration: {
+ image:
+ '/assets/illustrations/skipped-job_empty-8b877955fbf175e42ae65b6cb95346e15282c6fc5b682756c329af3a0055225e.svg',
+ size: 'svg-430',
+ title: 'This job does not have a trace.',
+ },
+ favicon:
+ '/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png',
+ action: {
+ icon: 'retry',
+ title: 'Retry',
+ path: '/h5bp/html5-boilerplate/-/jobs/527/retry',
+ method: 'post',
+ button_title: 'Retry this job',
+ },
+ },
+ },
+ ],
+ },
+ ],
+ status: {
+ icon: 'status_success',
+ text: 'passed',
+ label: 'passed',
+ group: 'success',
+ tooltip: 'passed',
+ has_details: true,
+ details_path: '/h5bp/html5-boilerplate/pipelines/26#build',
+ illustration: null,
+ favicon:
+ '/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png',
+ },
+ path: '/h5bp/html5-boilerplate/pipelines/26#build',
+ dropdown_path: '/h5bp/html5-boilerplate/pipelines/26/stage.json?stage=build',
+ },
+ {
+ name: 'test',
+ title: 'test: passed with warnings',
+ groups: [
+ {
+ name: 'jenkins',
+ size: 1,
+ status: {
+ icon: 'status_success',
+ text: 'passed',
+ label: null,
+ group: 'success',
+ tooltip: null,
+ has_details: false,
+ details_path: null,
+ illustration: null,
+ favicon:
+ '/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png',
+ },
+ jobs: [
+ {
+ id: 546,
+ name: 'jenkins',
+ started: '2019-01-06T11:48:20.237Z',
+ archived: false,
+ build_path: '/h5bp/html5-boilerplate/-/jobs/546',
+ playable: false,
+ scheduled: false,
+ created_at: '2019-01-06T17:48:38.359Z',
+ updated_at: '2019-01-06T17:48:38.359Z',
+ status: {
+ icon: 'status_success',
+ text: 'passed',
+ label: null,
+ group: 'success',
+ tooltip: null,
+ has_details: false,
+ details_path: null,
+ illustration: null,
+ favicon:
+ '/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png',
+ },
+ },
+ ],
+ },
+ {
+ name: 'rspec:linux',
+ size: 3,
+ status: {
+ icon: 'status_success',
+ text: 'passed',
+ label: 'passed',
+ group: 'success',
+ tooltip: 'passed',
+ has_details: false,
+ details_path: null,
+ illustration: null,
+ favicon:
+ '/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png',
+ },
+ jobs: [
+ {
+ id: 528,
+ name: 'rspec:linux 0 3',
+ started: '2019-01-06T09:48:20.237Z',
+ archived: false,
+ build_path: '/h5bp/html5-boilerplate/-/jobs/528',
+ retry_path: '/h5bp/html5-boilerplate/-/jobs/528/retry',
+ playable: false,
+ scheduled: false,
+ created_at: '2019-01-06T17:48:37.885Z',
+ updated_at: '2019-01-06T17:48:37.885Z',
+ status: {
+ icon: 'status_success',
+ text: 'passed',
+ label: 'passed',
+ group: 'success',
+ tooltip: 'passed',
+ has_details: true,
+ details_path: '/h5bp/html5-boilerplate/-/jobs/528',
+ illustration: {
+ image:
+ '/assets/illustrations/skipped-job_empty-8b877955fbf175e42ae65b6cb95346e15282c6fc5b682756c329af3a0055225e.svg',
+ size: 'svg-430',
+ title: 'This job does not have a trace.',
+ },
+ favicon:
+ '/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png',
+ action: {
+ icon: 'retry',
+ title: 'Retry',
+ path: '/h5bp/html5-boilerplate/-/jobs/528/retry',
+ method: 'post',
+ button_title: 'Retry this job',
+ },
+ },
+ },
+ {
+ id: 529,
+ name: 'rspec:linux 1 3',
+ started: '2019-01-06T09:48:20.237Z',
+ archived: false,
+ build_path: '/h5bp/html5-boilerplate/-/jobs/529',
+ retry_path: '/h5bp/html5-boilerplate/-/jobs/529/retry',
+ playable: false,
+ scheduled: false,
+ created_at: '2019-01-06T17:48:37.907Z',
+ updated_at: '2019-01-06T17:48:37.907Z',
+ status: {
+ icon: 'status_success',
+ text: 'passed',
+ label: 'passed',
+ group: 'success',
+ tooltip: 'passed',
+ has_details: true,
+ details_path: '/h5bp/html5-boilerplate/-/jobs/529',
+ illustration: {
+ image:
+ '/assets/illustrations/skipped-job_empty-8b877955fbf175e42ae65b6cb95346e15282c6fc5b682756c329af3a0055225e.svg',
+ size: 'svg-430',
+ title: 'This job does not have a trace.',
+ },
+ favicon:
+ '/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png',
+ action: {
+ icon: 'retry',
+ title: 'Retry',
+ path: '/h5bp/html5-boilerplate/-/jobs/529/retry',
+ method: 'post',
+ button_title: 'Retry this job',
+ },
+ },
+ },
+ {
+ id: 530,
+ name: 'rspec:linux 2 3',
+ started: '2019-01-06T09:48:20.237Z',
+ archived: false,
+ build_path: '/h5bp/html5-boilerplate/-/jobs/530',
+ retry_path: '/h5bp/html5-boilerplate/-/jobs/530/retry',
+ playable: false,
+ scheduled: false,
+ created_at: '2019-01-06T17:48:37.927Z',
+ updated_at: '2019-01-06T17:48:37.927Z',
+ status: {
+ icon: 'status_success',
+ text: 'passed',
+ label: 'passed',
+ group: 'success',
+ tooltip: 'passed',
+ has_details: true,
+ details_path: '/h5bp/html5-boilerplate/-/jobs/530',
+ illustration: {
+ image:
+ '/assets/illustrations/skipped-job_empty-8b877955fbf175e42ae65b6cb95346e15282c6fc5b682756c329af3a0055225e.svg',
+ size: 'svg-430',
+ title: 'This job does not have a trace.',
+ },
+ favicon:
+ '/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png',
+ action: {
+ icon: 'retry',
+ title: 'Retry',
+ path: '/h5bp/html5-boilerplate/-/jobs/530/retry',
+ method: 'post',
+ button_title: 'Retry this job',
+ },
+ },
+ },
+ ],
+ },
+ {
+ name: 'rspec:osx',
+ size: 1,
+ status: {
+ icon: 'status_success',
+ text: 'passed',
+ label: 'passed',
+ group: 'success',
+ tooltip: 'passed',
+ has_details: true,
+ details_path: '/h5bp/html5-boilerplate/-/jobs/535',
+ illustration: {
+ image:
+ '/assets/illustrations/skipped-job_empty-8b877955fbf175e42ae65b6cb95346e15282c6fc5b682756c329af3a0055225e.svg',
+ size: 'svg-430',
+ title: 'This job does not have a trace.',
+ },
+ favicon:
+ '/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png',
+ action: {
+ icon: 'retry',
+ title: 'Retry',
+ path: '/h5bp/html5-boilerplate/-/jobs/535/retry',
+ method: 'post',
+ button_title: 'Retry this job',
+ },
+ },
+ jobs: [
+ {
+ id: 535,
+ name: 'rspec:osx',
+ started: '2019-01-06T09:48:20.237Z',
+ archived: false,
+ build_path: '/h5bp/html5-boilerplate/-/jobs/535',
+ retry_path: '/h5bp/html5-boilerplate/-/jobs/535/retry',
+ playable: false,
+ scheduled: false,
+ created_at: '2019-01-06T17:48:38.018Z',
+ updated_at: '2019-01-06T17:48:38.018Z',
+ status: {
+ icon: 'status_success',
+ text: 'passed',
+ label: 'passed',
+ group: 'success',
+ tooltip: 'passed',
+ has_details: true,
+ details_path: '/h5bp/html5-boilerplate/-/jobs/535',
+ illustration: {
+ image:
+ '/assets/illustrations/skipped-job_empty-8b877955fbf175e42ae65b6cb95346e15282c6fc5b682756c329af3a0055225e.svg',
+ size: 'svg-430',
+ title: 'This job does not have a trace.',
+ },
+ favicon:
+ '/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png',
+ action: {
+ icon: 'retry',
+ title: 'Retry',
+ path: '/h5bp/html5-boilerplate/-/jobs/535/retry',
+ method: 'post',
+ button_title: 'Retry this job',
+ },
+ },
+ },
+ ],
+ },
+ {
+ name: 'rspec:windows',
+ size: 3,
+ status: {
+ icon: 'status_success',
+ text: 'passed',
+ label: 'passed',
+ group: 'success',
+ tooltip: 'passed',
+ has_details: false,
+ details_path: null,
+ illustration: null,
+ favicon:
+ '/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png',
+ },
+ jobs: [
+ {
+ id: 531,
+ name: 'rspec:windows 0 3',
+ started: '2019-01-06T09:48:20.237Z',
+ archived: false,
+ build_path: '/h5bp/html5-boilerplate/-/jobs/531',
+ retry_path: '/h5bp/html5-boilerplate/-/jobs/531/retry',
+ playable: false,
+ scheduled: false,
+ created_at: '2019-01-06T17:48:37.944Z',
+ updated_at: '2019-01-06T17:48:37.944Z',
+ status: {
+ icon: 'status_success',
+ text: 'passed',
+ label: 'passed',
+ group: 'success',
+ tooltip: 'passed',
+ has_details: true,
+ details_path: '/h5bp/html5-boilerplate/-/jobs/531',
+ illustration: {
+ image:
+ '/assets/illustrations/skipped-job_empty-8b877955fbf175e42ae65b6cb95346e15282c6fc5b682756c329af3a0055225e.svg',
+ size: 'svg-430',
+ title: 'This job does not have a trace.',
+ },
+ favicon:
+ '/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png',
+ action: {
+ icon: 'retry',
+ title: 'Retry',
+ path: '/h5bp/html5-boilerplate/-/jobs/531/retry',
+ method: 'post',
+ button_title: 'Retry this job',
+ },
+ },
+ },
+ {
+ id: 532,
+ name: 'rspec:windows 1 3',
+ started: '2019-01-06T09:48:20.237Z',
+ archived: false,
+ build_path: '/h5bp/html5-boilerplate/-/jobs/532',
+ retry_path: '/h5bp/html5-boilerplate/-/jobs/532/retry',
+ playable: false,
+ scheduled: false,
+ created_at: '2019-01-06T17:48:37.962Z',
+ updated_at: '2019-01-06T17:48:37.962Z',
+ status: {
+ icon: 'status_success',
+ text: 'passed',
+ label: 'passed',
+ group: 'success',
+ tooltip: 'passed',
+ has_details: true,
+ details_path: '/h5bp/html5-boilerplate/-/jobs/532',
+ illustration: {
+ image:
+ '/assets/illustrations/skipped-job_empty-8b877955fbf175e42ae65b6cb95346e15282c6fc5b682756c329af3a0055225e.svg',
+ size: 'svg-430',
+ title: 'This job does not have a trace.',
+ },
+ favicon:
+ '/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png',
+ action: {
+ icon: 'retry',
+ title: 'Retry',
+ path: '/h5bp/html5-boilerplate/-/jobs/532/retry',
+ method: 'post',
+ button_title: 'Retry this job',
+ },
+ },
+ },
+ {
+ id: 534,
+ name: 'rspec:windows 2 3',
+ started: '2019-01-06T09:48:20.237Z',
+ archived: false,
+ build_path: '/h5bp/html5-boilerplate/-/jobs/534',
+ retry_path: '/h5bp/html5-boilerplate/-/jobs/534/retry',
+ playable: false,
+ scheduled: false,
+ created_at: '2019-01-06T17:48:37.999Z',
+ updated_at: '2019-01-06T17:48:37.999Z',
+ status: {
+ icon: 'status_success',
+ text: 'passed',
+ label: 'passed',
+ group: 'success',
+ tooltip: 'passed',
+ has_details: true,
+ details_path: '/h5bp/html5-boilerplate/-/jobs/534',
+ illustration: {
+ image:
+ '/assets/illustrations/skipped-job_empty-8b877955fbf175e42ae65b6cb95346e15282c6fc5b682756c329af3a0055225e.svg',
+ size: 'svg-430',
+ title: 'This job does not have a trace.',
+ },
+ favicon:
+ '/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png',
+ action: {
+ icon: 'retry',
+ title: 'Retry',
+ path: '/h5bp/html5-boilerplate/-/jobs/534/retry',
+ method: 'post',
+ button_title: 'Retry this job',
+ },
+ },
+ },
+ ],
+ },
+ {
+ name: 'spinach:linux',
+ size: 1,
+ status: {
+ icon: 'status_success',
+ text: 'passed',
+ label: 'passed',
+ group: 'success',
+ tooltip: 'passed',
+ has_details: true,
+ details_path: '/h5bp/html5-boilerplate/-/jobs/536',
+ illustration: {
+ image:
+ '/assets/illustrations/skipped-job_empty-8b877955fbf175e42ae65b6cb95346e15282c6fc5b682756c329af3a0055225e.svg',
+ size: 'svg-430',
+ title: 'This job does not have a trace.',
+ },
+ favicon:
+ '/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png',
+ action: {
+ icon: 'retry',
+ title: 'Retry',
+ path: '/h5bp/html5-boilerplate/-/jobs/536/retry',
+ method: 'post',
+ button_title: 'Retry this job',
+ },
+ },
+ jobs: [
+ {
+ id: 536,
+ name: 'spinach:linux',
+ started: '2019-01-06T09:48:20.237Z',
+ archived: false,
+ build_path: '/h5bp/html5-boilerplate/-/jobs/536',
+ retry_path: '/h5bp/html5-boilerplate/-/jobs/536/retry',
+ playable: false,
+ scheduled: false,
+ created_at: '2019-01-06T17:48:38.050Z',
+ updated_at: '2019-01-06T17:48:38.050Z',
+ status: {
+ icon: 'status_success',
+ text: 'passed',
+ label: 'passed',
+ group: 'success',
+ tooltip: 'passed',
+ has_details: true,
+ details_path: '/h5bp/html5-boilerplate/-/jobs/536',
+ illustration: {
+ image:
+ '/assets/illustrations/skipped-job_empty-8b877955fbf175e42ae65b6cb95346e15282c6fc5b682756c329af3a0055225e.svg',
+ size: 'svg-430',
+ title: 'This job does not have a trace.',
+ },
+ favicon:
+ '/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png',
+ action: {
+ icon: 'retry',
+ title: 'Retry',
+ path: '/h5bp/html5-boilerplate/-/jobs/536/retry',
+ method: 'post',
+ button_title: 'Retry this job',
+ },
+ },
+ },
+ ],
+ },
+ {
+ name: 'spinach:osx',
+ size: 1,
+ status: {
+ icon: 'status_warning',
+ text: 'failed',
+ label: 'failed (allowed to fail)',
+ group: 'failed-with-warnings',
+ tooltip: 'failed - (unknown failure) (allowed to fail)',
+ has_details: true,
+ details_path: '/h5bp/html5-boilerplate/-/jobs/537',
+ illustration: {
+ image:
+ '/assets/illustrations/skipped-job_empty-8b877955fbf175e42ae65b6cb95346e15282c6fc5b682756c329af3a0055225e.svg',
+ size: 'svg-430',
+ title: 'This job does not have a trace.',
+ },
+ favicon:
+ '/assets/ci_favicons/favicon_status_failed-41304d7f7e3828808b0c26771f0309e55296819a9beea3ea9fbf6689d9857c12.png',
+ action: {
+ icon: 'retry',
+ title: 'Retry',
+ path: '/h5bp/html5-boilerplate/-/jobs/537/retry',
+ method: 'post',
+ button_title: 'Retry this job',
+ },
+ },
+ jobs: [
+ {
+ id: 537,
+ name: 'spinach:osx',
+ started: '2019-01-06T09:48:20.237Z',
+ archived: false,
+ build_path: '/h5bp/html5-boilerplate/-/jobs/537',
+ retry_path: '/h5bp/html5-boilerplate/-/jobs/537/retry',
+ playable: false,
+ scheduled: false,
+ created_at: '2019-01-06T17:48:38.069Z',
+ updated_at: '2019-01-06T17:48:38.069Z',
+ status: {
+ icon: 'status_warning',
+ text: 'failed',
+ label: 'failed (allowed to fail)',
+ group: 'failed-with-warnings',
+ tooltip: 'failed - (unknown failure) (allowed to fail)',
+ has_details: true,
+ details_path: '/h5bp/html5-boilerplate/-/jobs/537',
+ illustration: {
+ image:
+ '/assets/illustrations/skipped-job_empty-8b877955fbf175e42ae65b6cb95346e15282c6fc5b682756c329af3a0055225e.svg',
+ size: 'svg-430',
+ title: 'This job does not have a trace.',
+ },
+ favicon:
+ '/assets/ci_favicons/favicon_status_failed-41304d7f7e3828808b0c26771f0309e55296819a9beea3ea9fbf6689d9857c12.png',
+ action: {
+ icon: 'retry',
+ title: 'Retry',
+ path: '/h5bp/html5-boilerplate/-/jobs/537/retry',
+ method: 'post',
+ button_title: 'Retry this job',
+ },
+ },
+ callout_message: 'There is an unknown failure, please try again',
+ recoverable: true,
+ },
+ ],
+ },
+ ],
+ status: {
+ icon: 'status_warning',
+ text: 'passed',
+ label: 'passed with warnings',
+ group: 'success-with-warnings',
+ tooltip: 'passed',
+ has_details: true,
+ details_path: '/h5bp/html5-boilerplate/pipelines/26#test',
+ illustration: null,
+ favicon:
+ '/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png',
+ },
+ path: '/h5bp/html5-boilerplate/pipelines/26#test',
+ dropdown_path: '/h5bp/html5-boilerplate/pipelines/26/stage.json?stage=test',
+ },
+ {
+ name: 'security',
+ title: 'security: passed',
+ groups: [
+ {
+ name: 'container_scanning',
+ size: 1,
+ status: {
+ icon: 'status_success',
+ text: 'passed',
+ label: 'passed',
+ group: 'success',
+ tooltip: 'passed',
+ has_details: true,
+ details_path: '/h5bp/html5-boilerplate/-/jobs/541',
+ illustration: {
+ image:
+ '/assets/illustrations/skipped-job_empty-8b877955fbf175e42ae65b6cb95346e15282c6fc5b682756c329af3a0055225e.svg',
+ size: 'svg-430',
+ title: 'This job does not have a trace.',
+ },
+ favicon:
+ '/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png',
+ action: {
+ icon: 'retry',
+ title: 'Retry',
+ path: '/h5bp/html5-boilerplate/-/jobs/541/retry',
+ method: 'post',
+ button_title: 'Retry this job',
+ },
+ },
+ jobs: [
+ {
+ id: 541,
+ name: 'container_scanning',
+ started: '2019-01-06T09:48:20.237Z',
+ archived: false,
+ build_path: '/h5bp/html5-boilerplate/-/jobs/541',
+ retry_path: '/h5bp/html5-boilerplate/-/jobs/541/retry',
+ playable: false,
+ scheduled: false,
+ created_at: '2019-01-06T17:48:38.186Z',
+ updated_at: '2019-01-06T17:48:38.186Z',
+ status: {
+ icon: 'status_success',
+ text: 'passed',
+ label: 'passed',
+ group: 'success',
+ tooltip: 'passed',
+ has_details: true,
+ details_path: '/h5bp/html5-boilerplate/-/jobs/541',
+ illustration: {
+ image:
+ '/assets/illustrations/skipped-job_empty-8b877955fbf175e42ae65b6cb95346e15282c6fc5b682756c329af3a0055225e.svg',
+ size: 'svg-430',
+ title: 'This job does not have a trace.',
+ },
+ favicon:
+ '/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png',
+ action: {
+ icon: 'retry',
+ title: 'Retry',
+ path: '/h5bp/html5-boilerplate/-/jobs/541/retry',
+ method: 'post',
+ button_title: 'Retry this job',
+ },
+ },
+ },
+ ],
+ },
+ {
+ name: 'dast',
+ size: 1,
+ status: {
+ icon: 'status_success',
+ text: 'passed',
+ label: 'passed',
+ group: 'success',
+ tooltip: 'passed',
+ has_details: true,
+ details_path: '/h5bp/html5-boilerplate/-/jobs/538',
+ illustration: {
+ image:
+ '/assets/illustrations/skipped-job_empty-8b877955fbf175e42ae65b6cb95346e15282c6fc5b682756c329af3a0055225e.svg',
+ size: 'svg-430',
+ title: 'This job does not have a trace.',
+ },
+ favicon:
+ '/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png',
+ action: {
+ icon: 'retry',
+ title: 'Retry',
+ path: '/h5bp/html5-boilerplate/-/jobs/538/retry',
+ method: 'post',
+ button_title: 'Retry this job',
+ },
+ },
+ jobs: [
+ {
+ id: 538,
+ name: 'dast',
+ started: '2019-01-06T09:48:20.237Z',
+ archived: false,
+ build_path: '/h5bp/html5-boilerplate/-/jobs/538',
+ retry_path: '/h5bp/html5-boilerplate/-/jobs/538/retry',
+ playable: false,
+ scheduled: false,
+ created_at: '2019-01-06T17:48:38.087Z',
+ updated_at: '2019-01-06T17:48:38.087Z',
+ status: {
+ icon: 'status_success',
+ text: 'passed',
+ label: 'passed',
+ group: 'success',
+ tooltip: 'passed',
+ has_details: true,
+ details_path: '/h5bp/html5-boilerplate/-/jobs/538',
+ illustration: {
+ image:
+ '/assets/illustrations/skipped-job_empty-8b877955fbf175e42ae65b6cb95346e15282c6fc5b682756c329af3a0055225e.svg',
+ size: 'svg-430',
+ title: 'This job does not have a trace.',
+ },
+ favicon:
+ '/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png',
+ action: {
+ icon: 'retry',
+ title: 'Retry',
+ path: '/h5bp/html5-boilerplate/-/jobs/538/retry',
+ method: 'post',
+ button_title: 'Retry this job',
+ },
+ },
+ },
+ ],
+ },
+ {
+ name: 'dependency_scanning',
+ size: 1,
+ status: {
+ icon: 'status_success',
+ text: 'passed',
+ label: 'passed',
+ group: 'success',
+ tooltip: 'passed',
+ has_details: true,
+ details_path: '/h5bp/html5-boilerplate/-/jobs/540',
+ illustration: {
+ image:
+ '/assets/illustrations/skipped-job_empty-8b877955fbf175e42ae65b6cb95346e15282c6fc5b682756c329af3a0055225e.svg',
+ size: 'svg-430',
+ title: 'This job does not have a trace.',
+ },
+ favicon:
+ '/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png',
+ action: {
+ icon: 'retry',
+ title: 'Retry',
+ path: '/h5bp/html5-boilerplate/-/jobs/540/retry',
+ method: 'post',
+ button_title: 'Retry this job',
+ },
+ },
+ jobs: [
+ {
+ id: 540,
+ name: 'dependency_scanning',
+ started: '2019-01-06T09:48:20.237Z',
+ archived: false,
+ build_path: '/h5bp/html5-boilerplate/-/jobs/540',
+ retry_path: '/h5bp/html5-boilerplate/-/jobs/540/retry',
+ playable: false,
+ scheduled: false,
+ created_at: '2019-01-06T17:48:38.153Z',
+ updated_at: '2019-01-06T17:48:38.153Z',
+ status: {
+ icon: 'status_success',
+ text: 'passed',
+ label: 'passed',
+ group: 'success',
+ tooltip: 'passed',
+ has_details: true,
+ details_path: '/h5bp/html5-boilerplate/-/jobs/540',
+ illustration: {
+ image:
+ '/assets/illustrations/skipped-job_empty-8b877955fbf175e42ae65b6cb95346e15282c6fc5b682756c329af3a0055225e.svg',
+ size: 'svg-430',
+ title: 'This job does not have a trace.',
+ },
+ favicon:
+ '/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png',
+ action: {
+ icon: 'retry',
+ title: 'Retry',
+ path: '/h5bp/html5-boilerplate/-/jobs/540/retry',
+ method: 'post',
+ button_title: 'Retry this job',
+ },
+ },
+ },
+ ],
+ },
+ {
+ name: 'sast',
+ size: 1,
+ status: {
+ icon: 'status_success',
+ text: 'passed',
+ label: 'passed',
+ group: 'success',
+ tooltip: 'passed',
+ has_details: true,
+ details_path: '/h5bp/html5-boilerplate/-/jobs/539',
+ illustration: {
+ image:
+ '/assets/illustrations/skipped-job_empty-8b877955fbf175e42ae65b6cb95346e15282c6fc5b682756c329af3a0055225e.svg',
+ size: 'svg-430',
+ title: 'This job does not have a trace.',
+ },
+ favicon:
+ '/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png',
+ action: {
+ icon: 'retry',
+ title: 'Retry',
+ path: '/h5bp/html5-boilerplate/-/jobs/539/retry',
+ method: 'post',
+ button_title: 'Retry this job',
+ },
+ },
+ jobs: [
+ {
+ id: 539,
+ name: 'sast',
+ started: '2019-01-06T09:48:20.237Z',
+ archived: false,
+ build_path: '/h5bp/html5-boilerplate/-/jobs/539',
+ retry_path: '/h5bp/html5-boilerplate/-/jobs/539/retry',
+ playable: false,
+ scheduled: false,
+ created_at: '2019-01-06T17:48:38.121Z',
+ updated_at: '2019-01-06T17:48:38.121Z',
+ status: {
+ icon: 'status_success',
+ text: 'passed',
+ label: 'passed',
+ group: 'success',
+ tooltip: 'passed',
+ has_details: true,
+ details_path: '/h5bp/html5-boilerplate/-/jobs/539',
+ illustration: {
+ image:
+ '/assets/illustrations/skipped-job_empty-8b877955fbf175e42ae65b6cb95346e15282c6fc5b682756c329af3a0055225e.svg',
+ size: 'svg-430',
+ title: 'This job does not have a trace.',
+ },
+ favicon:
+ '/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png',
+ action: {
+ icon: 'retry',
+ title: 'Retry',
+ path: '/h5bp/html5-boilerplate/-/jobs/539/retry',
+ method: 'post',
+ button_title: 'Retry this job',
+ },
+ },
+ },
+ ],
+ },
+ ],
+ status: {
+ icon: 'status_success',
+ text: 'passed',
+ label: 'passed',
+ group: 'success',
+ tooltip: 'passed',
+ has_details: true,
+ details_path: '/h5bp/html5-boilerplate/pipelines/26#security',
+ illustration: null,
+ favicon:
+ '/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png',
+ },
+ path: '/h5bp/html5-boilerplate/pipelines/26#security',
+ dropdown_path: '/h5bp/html5-boilerplate/pipelines/26/stage.json?stage=security',
+ },
+ {
+ name: 'deploy',
+ title: 'deploy: passed',
+ groups: [
+ {
+ name: 'production',
+ size: 1,
+ status: {
+ icon: 'status_skipped',
+ text: 'skipped',
+ label: 'skipped',
+ group: 'skipped',
+ tooltip: 'skipped',
+ has_details: true,
+ details_path: '/h5bp/html5-boilerplate/-/jobs/544',
+ illustration: {
+ image:
+ '/assets/illustrations/skipped-job_empty-8b877955fbf175e42ae65b6cb95346e15282c6fc5b682756c329af3a0055225e.svg',
+ size: 'svg-430',
+ title: 'This job has been skipped',
+ },
+ favicon:
+ '/assets/ci_favicons/favicon_status_skipped-0b9c5e543588945e8c4ca57786bbf2d0c56631959c9f853300392d0315be829b.png',
+ },
+ jobs: [
+ {
+ id: 544,
+ name: 'production',
+ started: null,
+ archived: false,
+ build_path: '/h5bp/html5-boilerplate/-/jobs/544',
+ playable: false,
+ scheduled: false,
+ created_at: '2019-01-06T17:48:38.313Z',
+ updated_at: '2019-01-06T17:48:38.313Z',
+ status: {
+ icon: 'status_skipped',
+ text: 'skipped',
+ label: 'skipped',
+ group: 'skipped',
+ tooltip: 'skipped',
+ has_details: true,
+ details_path: '/h5bp/html5-boilerplate/-/jobs/544',
+ illustration: {
+ image:
+ '/assets/illustrations/skipped-job_empty-8b877955fbf175e42ae65b6cb95346e15282c6fc5b682756c329af3a0055225e.svg',
+ size: 'svg-430',
+ title: 'This job has been skipped',
+ },
+ favicon:
+ '/assets/ci_favicons/favicon_status_skipped-0b9c5e543588945e8c4ca57786bbf2d0c56631959c9f853300392d0315be829b.png',
+ },
+ },
+ ],
+ },
+ {
+ name: 'staging',
+ size: 1,
+ status: {
+ icon: 'status_success',
+ text: 'passed',
+ label: 'passed',
+ group: 'success',
+ tooltip: 'passed',
+ has_details: true,
+ details_path: '/h5bp/html5-boilerplate/-/jobs/542',
+ illustration: {
+ image:
+ '/assets/illustrations/skipped-job_empty-8b877955fbf175e42ae65b6cb95346e15282c6fc5b682756c329af3a0055225e.svg',
+ size: 'svg-430',
+ title: 'This job does not have a trace.',
+ },
+ favicon:
+ '/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png',
+ action: {
+ icon: 'retry',
+ title: 'Retry',
+ path: '/h5bp/html5-boilerplate/-/jobs/542/retry',
+ method: 'post',
+ button_title: 'Retry this job',
+ },
+ },
+ jobs: [
+ {
+ id: 542,
+ name: 'staging',
+ started: '2019-01-06T11:48:20.237Z',
+ archived: false,
+ build_path: '/h5bp/html5-boilerplate/-/jobs/542',
+ retry_path: '/h5bp/html5-boilerplate/-/jobs/542/retry',
+ playable: false,
+ scheduled: false,
+ created_at: '2019-01-06T17:48:38.219Z',
+ updated_at: '2019-01-06T17:48:38.219Z',
+ status: {
+ icon: 'status_success',
+ text: 'passed',
+ label: 'passed',
+ group: 'success',
+ tooltip: 'passed',
+ has_details: true,
+ details_path: '/h5bp/html5-boilerplate/-/jobs/542',
+ illustration: {
+ image:
+ '/assets/illustrations/skipped-job_empty-8b877955fbf175e42ae65b6cb95346e15282c6fc5b682756c329af3a0055225e.svg',
+ size: 'svg-430',
+ title: 'This job does not have a trace.',
+ },
+ favicon:
+ '/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png',
+ action: {
+ icon: 'retry',
+ title: 'Retry',
+ path: '/h5bp/html5-boilerplate/-/jobs/542/retry',
+ method: 'post',
+ button_title: 'Retry this job',
+ },
+ },
+ },
+ ],
+ },
+ {
+ name: 'stop staging',
+ size: 1,
+ status: {
+ icon: 'status_skipped',
+ text: 'skipped',
+ label: 'skipped',
+ group: 'skipped',
+ tooltip: 'skipped',
+ has_details: true,
+ details_path: '/h5bp/html5-boilerplate/-/jobs/543',
+ illustration: {
+ image:
+ '/assets/illustrations/skipped-job_empty-8b877955fbf175e42ae65b6cb95346e15282c6fc5b682756c329af3a0055225e.svg',
+ size: 'svg-430',
+ title: 'This job has been skipped',
+ },
+ favicon:
+ '/assets/ci_favicons/favicon_status_skipped-0b9c5e543588945e8c4ca57786bbf2d0c56631959c9f853300392d0315be829b.png',
+ },
+ jobs: [
+ {
+ id: 543,
+ name: 'stop staging',
+ started: null,
+ archived: false,
+ build_path: '/h5bp/html5-boilerplate/-/jobs/543',
+ playable: false,
+ scheduled: false,
+ created_at: '2019-01-06T17:48:38.283Z',
+ updated_at: '2019-01-06T17:48:38.283Z',
+ status: {
+ icon: 'status_skipped',
+ text: 'skipped',
+ label: 'skipped',
+ group: 'skipped',
+ tooltip: 'skipped',
+ has_details: true,
+ details_path: '/h5bp/html5-boilerplate/-/jobs/543',
+ illustration: {
+ image:
+ '/assets/illustrations/skipped-job_empty-8b877955fbf175e42ae65b6cb95346e15282c6fc5b682756c329af3a0055225e.svg',
+ size: 'svg-430',
+ title: 'This job has been skipped',
+ },
+ favicon:
+ '/assets/ci_favicons/favicon_status_skipped-0b9c5e543588945e8c4ca57786bbf2d0c56631959c9f853300392d0315be829b.png',
+ },
+ },
+ ],
+ },
+ ],
+ status: {
+ icon: 'status_success',
+ text: 'passed',
+ label: 'passed',
+ group: 'success',
+ tooltip: 'passed',
+ has_details: true,
+ details_path: '/h5bp/html5-boilerplate/pipelines/26#deploy',
+ illustration: null,
+ favicon:
+ '/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png',
+ },
+ path: '/h5bp/html5-boilerplate/pipelines/26#deploy',
+ dropdown_path: '/h5bp/html5-boilerplate/pipelines/26/stage.json?stage=deploy',
+ },
+ {
+ name: 'notify',
+ title: 'notify: passed',
+ groups: [
+ {
+ name: 'slack',
+ size: 1,
+ status: {
+ icon: 'status_success',
+ text: 'passed',
+ label: 'manual play action',
+ group: 'success',
+ tooltip: 'passed',
+ has_details: true,
+ details_path: '/h5bp/html5-boilerplate/-/jobs/545',
+ illustration: {
+ image:
+ '/assets/illustrations/manual_action-2b4ca0d1bcfd92aebf33d484e36cbf7a102d007f76b5a0cfea636033a629d601.svg',
+ size: 'svg-394',
+ title: 'This job requires a manual action',
+ content:
+ 'This job depends on a user to trigger its process. Often they are used to deploy code to production environments',
+ },
+ favicon:
+ '/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png',
+ action: {
+ icon: 'play',
+ title: 'Play',
+ path: '/h5bp/html5-boilerplate/-/jobs/545/play',
+ method: 'post',
+ button_title: 'Trigger this manual action',
+ },
+ },
+ jobs: [
+ {
+ id: 545,
+ name: 'slack',
+ started: null,
+ archived: false,
+ build_path: '/h5bp/html5-boilerplate/-/jobs/545',
+ retry_path: '/h5bp/html5-boilerplate/-/jobs/545/retry',
+ play_path: '/h5bp/html5-boilerplate/-/jobs/545/play',
+ playable: true,
+ scheduled: false,
+ created_at: '2019-01-06T17:48:38.341Z',
+ updated_at: '2019-01-06T17:48:38.341Z',
+ status: {
+ icon: 'status_success',
+ text: 'passed',
+ label: 'manual play action',
+ group: 'success',
+ tooltip: 'passed',
+ has_details: true,
+ details_path: '/h5bp/html5-boilerplate/-/jobs/545',
+ illustration: {
+ image:
+ '/assets/illustrations/manual_action-2b4ca0d1bcfd92aebf33d484e36cbf7a102d007f76b5a0cfea636033a629d601.svg',
+ size: 'svg-394',
+ title: 'This job requires a manual action',
+ content:
+ 'This job depends on a user to trigger its process. Often they are used to deploy code to production environments',
+ },
+ favicon:
+ '/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png',
+ action: {
+ icon: 'play',
+ title: 'Play',
+ path: '/h5bp/html5-boilerplate/-/jobs/545/play',
+ method: 'post',
+ button_title: 'Trigger this manual action',
+ },
+ },
+ },
+ ],
+ },
+ ],
+ status: {
+ icon: 'status_success',
+ text: 'passed',
+ label: 'passed',
+ group: 'success',
+ tooltip: 'passed',
+ has_details: true,
+ details_path: '/h5bp/html5-boilerplate/pipelines/26#notify',
+ illustration: null,
+ favicon:
+ '/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png',
+ },
+ path: '/h5bp/html5-boilerplate/pipelines/26#notify',
+ dropdown_path: '/h5bp/html5-boilerplate/pipelines/26/stage.json?stage=notify',
+ },
+ ],
+ artifacts: [
+ {
+ name: 'build:linux',
+ expired: null,
+ expire_at: null,
+ path: '/h5bp/html5-boilerplate/-/jobs/526/artifacts/download',
+ browse_path: '/h5bp/html5-boilerplate/-/jobs/526/artifacts/browse',
+ },
+ {
+ name: 'build:osx',
+ expired: null,
+ expire_at: null,
+ path: '/h5bp/html5-boilerplate/-/jobs/527/artifacts/download',
+ browse_path: '/h5bp/html5-boilerplate/-/jobs/527/artifacts/browse',
+ },
+ ],
+ manual_actions: [
+ {
+ name: 'stop staging',
+ path: '/h5bp/html5-boilerplate/-/jobs/543/play',
+ playable: false,
+ scheduled: false,
+ },
+ {
+ name: 'production',
+ path: '/h5bp/html5-boilerplate/-/jobs/544/play',
+ playable: false,
+ scheduled: false,
+ },
+ {
+ name: 'slack',
+ path: '/h5bp/html5-boilerplate/-/jobs/545/play',
+ playable: true,
+ scheduled: false,
+ },
+ ],
+ scheduled_actions: [],
+ },
+ ref: {
+ name: 'master',
+ path: '/h5bp/html5-boilerplate/commits/master',
+ tag: false,
+ branch: true,
+ merge_request: false,
+ },
+ commit: {
+ id: 'bad98c453eab56d20057f3929989251d45cd1a8b',
+ short_id: 'bad98c45',
+ title: 'remove instances of shrink-to-fit=no (#2103)',
+ created_at: '2018-12-17T20:52:18.000Z',
+ parent_ids: ['49130f6cfe9ff1f749015d735649a2bc6f66cf3a'],
+ message:
+ 'remove instances of shrink-to-fit=no (#2103)\n\ncloses #2102\r\n\r\nPer my findings, the need for it as a default was rectified with the release of iOS 9.3, where the viewport no longer shrunk to accommodate overflow, as was introduced in iOS 9.',
+ author_name: "Scott O'Hara",
+ author_email: 'scottaohara@users.noreply.github.com',
+ authored_date: '2018-12-17T20:52:18.000Z',
+ committer_name: 'Rob Larsen',
+ committer_email: 'rob@drunkenfist.com',
+ committed_date: '2018-12-17T20:52:18.000Z',
+ author: null,
+ author_gravatar_url:
+ 'https://www.gravatar.com/avatar/6d597df7cf998d16cbe00ccac063b31e?s=80\u0026d=identicon',
+ commit_url:
+ 'http://localhost:3001/h5bp/html5-boilerplate/commit/bad98c453eab56d20057f3929989251d45cd1a8b',
+ commit_path: '/h5bp/html5-boilerplate/commit/bad98c453eab56d20057f3929989251d45cd1a8b',
+ },
+ retry_path: '/h5bp/html5-boilerplate/pipelines/26/retry',
+ triggered_by: {
+ id: 4,
+ user: null,
+ active: false,
+ coverage: null,
+ source: 'push',
+ path: '/gitlab-org/gitlab-test/pipelines/4',
+ details: {
+ status: {
+ icon: 'status_warning',
+ text: 'passed',
+ label: 'passed with warnings',
+ group: 'success-with-warnings',
+ tooltip: 'passed',
+ has_details: true,
+ details_path: '/gitlab-org/gitlab-test/pipelines/4',
+ illustration: null,
+ favicon:
+ '/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png',
+ },
+ },
+ project: {
+ id: 1,
+ name: 'Gitlab Test',
+ full_path: '/gitlab-org/gitlab-test',
+ full_name: 'Gitlab Org / Gitlab Test',
+ },
+ },
+ triggered: [],
+ project: {
+ id: 20,
+ name: 'GitLab Docs',
+ full_path: '/gitlab-com/gitlab-docs',
+ full_name: 'GitLab.com / GitLab Docs',
+ },
+ },
+ ],
},
],
};
diff --git a/spec/frontend/pipelines/graph/mock_data.js b/spec/frontend/pipelines/graph/mock_data.js
new file mode 100644
index 00000000000..a4a5d78f906
--- /dev/null
+++ b/spec/frontend/pipelines/graph/mock_data.js
@@ -0,0 +1,261 @@
+export default {
+ id: 123,
+ user: {
+ name: 'Root',
+ username: 'root',
+ id: 1,
+ state: 'active',
+ avatar_url: null,
+ web_url: 'http://localhost:3000/root',
+ },
+ active: false,
+ coverage: null,
+ path: '/root/ci-mock/pipelines/123',
+ details: {
+ status: {
+ icon: 'status_success',
+ text: 'passed',
+ label: 'passed',
+ group: 'success',
+ has_details: true,
+ details_path: '/root/ci-mock/pipelines/123',
+ favicon:
+ '/assets/ci_favicons/favicon_status_success-308b4fc054cdd1b68d0865e6cfb7b02e92e3472f201507418f8eddb74ac11a59.png',
+ },
+ duration: 9,
+ finished_at: '2017-04-19T14:30:27.542Z',
+ stages: [
+ {
+ name: 'test',
+ title: 'test: passed',
+ groups: [
+ {
+ name: 'test',
+ size: 1,
+ status: {
+ icon: 'status_success',
+ text: 'passed',
+ label: 'passed',
+ group: 'success',
+ has_details: true,
+ details_path: '/root/ci-mock/builds/4153',
+ favicon:
+ '/assets/ci_favicons/favicon_status_success-308b4fc054cdd1b68d0865e6cfb7b02e92e3472f201507418f8eddb74ac11a59.png',
+ action: {
+ icon: 'retry',
+ title: 'Retry',
+ path: '/root/ci-mock/builds/4153/retry',
+ method: 'post',
+ },
+ },
+ jobs: [
+ {
+ id: 4153,
+ name: 'test',
+ build_path: '/root/ci-mock/builds/4153',
+ retry_path: '/root/ci-mock/builds/4153/retry',
+ playable: false,
+ created_at: '2017-04-13T09:25:18.959Z',
+ updated_at: '2017-04-13T09:25:23.118Z',
+ status: {
+ icon: 'status_success',
+ text: 'passed',
+ label: 'passed',
+ group: 'success',
+ has_details: true,
+ details_path: '/root/ci-mock/builds/4153',
+ favicon:
+ '/assets/ci_favicons/favicon_status_success-308b4fc054cdd1b68d0865e6cfb7b02e92e3472f201507418f8eddb74ac11a59.png',
+ action: {
+ icon: 'retry',
+ title: 'Retry',
+ path: '/root/ci-mock/builds/4153/retry',
+ method: 'post',
+ },
+ },
+ },
+ ],
+ },
+ ],
+ status: {
+ icon: 'status_success',
+ text: 'passed',
+ label: 'passed',
+ group: 'success',
+ has_details: true,
+ details_path: '/root/ci-mock/pipelines/123#test',
+ favicon:
+ '/assets/ci_favicons/favicon_status_success-308b4fc054cdd1b68d0865e6cfb7b02e92e3472f201507418f8eddb74ac11a59.png',
+ },
+ path: '/root/ci-mock/pipelines/123#test',
+ dropdown_path: '/root/ci-mock/pipelines/123/stage.json?stage=test',
+ },
+ {
+ name: 'deploy <img src=x onerror=alert(document.domain)>',
+ title: 'deploy: passed',
+ groups: [
+ {
+ name: 'deploy to production',
+ size: 1,
+ status: {
+ icon: 'status_success',
+ text: 'passed',
+ label: 'passed',
+ group: 'success',
+ has_details: true,
+ details_path: '/root/ci-mock/builds/4166',
+ favicon:
+ '/assets/ci_favicons/favicon_status_success-308b4fc054cdd1b68d0865e6cfb7b02e92e3472f201507418f8eddb74ac11a59.png',
+ action: {
+ icon: 'retry',
+ title: 'Retry',
+ path: '/root/ci-mock/builds/4166/retry',
+ method: 'post',
+ },
+ },
+ jobs: [
+ {
+ id: 4166,
+ name: 'deploy to production',
+ build_path: '/root/ci-mock/builds/4166',
+ retry_path: '/root/ci-mock/builds/4166/retry',
+ playable: false,
+ created_at: '2017-04-19T14:29:46.463Z',
+ updated_at: '2017-04-19T14:30:27.498Z',
+ status: {
+ icon: 'status_success',
+ text: 'passed',
+ label: 'passed',
+ group: 'success',
+ has_details: true,
+ details_path: '/root/ci-mock/builds/4166',
+ favicon:
+ '/assets/ci_favicons/favicon_status_success-308b4fc054cdd1b68d0865e6cfb7b02e92e3472f201507418f8eddb74ac11a59.png',
+ action: {
+ icon: 'retry',
+ title: 'Retry',
+ path: '/root/ci-mock/builds/4166/retry',
+ method: 'post',
+ },
+ },
+ },
+ ],
+ },
+ {
+ name: 'deploy to staging',
+ size: 1,
+ status: {
+ icon: 'status_success',
+ text: 'passed',
+ label: 'passed',
+ group: 'success',
+ has_details: true,
+ details_path: '/root/ci-mock/builds/4159',
+ favicon:
+ '/assets/ci_favicons/favicon_status_success-308b4fc054cdd1b68d0865e6cfb7b02e92e3472f201507418f8eddb74ac11a59.png',
+ action: {
+ icon: 'retry',
+ title: 'Retry',
+ path: '/root/ci-mock/builds/4159/retry',
+ method: 'post',
+ },
+ },
+ jobs: [
+ {
+ id: 4159,
+ name: 'deploy to staging',
+ build_path: '/root/ci-mock/builds/4159',
+ retry_path: '/root/ci-mock/builds/4159/retry',
+ playable: false,
+ created_at: '2017-04-18T16:32:08.420Z',
+ updated_at: '2017-04-18T16:32:12.631Z',
+ status: {
+ icon: 'status_success',
+ text: 'passed',
+ label: 'passed',
+ group: 'success',
+ has_details: true,
+ details_path: '/root/ci-mock/builds/4159',
+ favicon:
+ '/assets/ci_favicons/favicon_status_success-308b4fc054cdd1b68d0865e6cfb7b02e92e3472f201507418f8eddb74ac11a59.png',
+ action: {
+ icon: 'retry',
+ title: 'Retry',
+ path: '/root/ci-mock/builds/4159/retry',
+ method: 'post',
+ },
+ },
+ },
+ ],
+ },
+ ],
+ status: {
+ icon: 'status_success',
+ text: 'passed',
+ label: 'passed',
+ group: 'success',
+ has_details: true,
+ details_path: '/root/ci-mock/pipelines/123#deploy',
+ favicon:
+ '/assets/ci_favicons/favicon_status_success-308b4fc054cdd1b68d0865e6cfb7b02e92e3472f201507418f8eddb74ac11a59.png',
+ },
+ path: '/root/ci-mock/pipelines/123#deploy',
+ dropdown_path: '/root/ci-mock/pipelines/123/stage.json?stage=deploy',
+ },
+ ],
+ artifacts: [],
+ manual_actions: [
+ {
+ name: 'deploy to production',
+ path: '/root/ci-mock/builds/4166/play',
+ playable: false,
+ },
+ ],
+ },
+ flags: {
+ latest: true,
+ triggered: false,
+ stuck: false,
+ yaml_errors: false,
+ retryable: false,
+ cancelable: false,
+ },
+ ref: {
+ name: 'master',
+ path: '/root/ci-mock/tree/master',
+ tag: false,
+ branch: true,
+ },
+ commit: {
+ id: '798e5f902592192afaba73f4668ae30e56eae492',
+ short_id: '798e5f90',
+ title: "Merge branch 'new-branch' into 'master'\r",
+ created_at: '2017-04-13T10:25:17.000+01:00',
+ parent_ids: [
+ '54d483b1ed156fbbf618886ddf7ab023e24f8738',
+ 'c8e2d38a6c538822e81c57022a6e3a0cfedebbcc',
+ ],
+ message:
+ "Merge branch 'new-branch' into 'master'\r\n\r\nAdd new file\r\n\r\nSee merge request !1",
+ author_name: 'Root',
+ author_email: 'admin@example.com',
+ authored_date: '2017-04-13T10:25:17.000+01:00',
+ committer_name: 'Root',
+ committer_email: 'admin@example.com',
+ committed_date: '2017-04-13T10:25:17.000+01:00',
+ author: {
+ name: 'Root',
+ username: 'root',
+ id: 1,
+ state: 'active',
+ avatar_url: null,
+ web_url: 'http://localhost:3000/root',
+ },
+ author_gravatar_url: null,
+ commit_url:
+ 'http://localhost:3000/root/ci-mock/commit/798e5f902592192afaba73f4668ae30e56eae492',
+ commit_path: '/root/ci-mock/commit/798e5f902592192afaba73f4668ae30e56eae492',
+ },
+ created_at: '2017-04-13T09:25:18.881Z',
+ updated_at: '2017-04-19T14:30:27.561Z',
+};
diff --git a/spec/frontend/pipelines/graph/stage_column_component_spec.js b/spec/frontend/pipelines/graph/stage_column_component_spec.js
new file mode 100644
index 00000000000..88e56eee1d6
--- /dev/null
+++ b/spec/frontend/pipelines/graph/stage_column_component_spec.js
@@ -0,0 +1,136 @@
+import { shallowMount } from '@vue/test-utils';
+
+import stageColumnComponent from '~/pipelines/components/graph/stage_column_component.vue';
+
+describe('stage column component', () => {
+ const mockJob = {
+ id: 4250,
+ name: 'test',
+ status: {
+ icon: 'status_success',
+ text: 'passed',
+ label: 'passed',
+ group: 'success',
+ details_path: '/root/ci-mock/builds/4250',
+ action: {
+ icon: 'retry',
+ title: 'Retry',
+ path: '/root/ci-mock/builds/4250/retry',
+ method: 'post',
+ },
+ },
+ };
+
+ let wrapper;
+
+ beforeEach(() => {
+ const mockGroups = [];
+ for (let i = 0; i < 3; i += 1) {
+ const mockedJob = Object.assign({}, mockJob);
+ mockedJob.id += i;
+ mockGroups.push(mockedJob);
+ }
+
+ wrapper = shallowMount(stageColumnComponent, {
+ propsData: {
+ title: 'foo',
+ groups: mockGroups,
+ hasTriggeredBy: false,
+ },
+ });
+ });
+
+ it('should render provided title', () => {
+ expect(
+ wrapper
+ .find('.stage-name')
+ .text()
+ .trim(),
+ ).toBe('foo');
+ });
+
+ it('should render the provided groups', () => {
+ expect(wrapper.findAll('.builds-container > ul > li').length).toBe(
+ wrapper.props('groups').length,
+ );
+ });
+
+ describe('jobId', () => {
+ it('escapes job name', () => {
+ wrapper = shallowMount(stageColumnComponent, {
+ propsData: {
+ groups: [
+ {
+ id: 4259,
+ name: '<img src=x onerror=alert(document.domain)>',
+ status: {
+ icon: 'status_success',
+ label: 'success',
+ tooltip: '<img src=x onerror=alert(document.domain)>',
+ },
+ },
+ ],
+ title: 'test',
+ hasTriggeredBy: false,
+ },
+ });
+
+ expect(wrapper.find('.builds-container li').attributes('id')).toBe(
+ 'ci-badge-&lt;img src=x onerror=alert(document.domain)&gt;',
+ );
+ });
+ });
+
+ describe('with action', () => {
+ it('renders action button', () => {
+ wrapper = shallowMount(stageColumnComponent, {
+ propsData: {
+ groups: [
+ {
+ id: 4259,
+ name: '<img src=x onerror=alert(document.domain)>',
+ status: {
+ icon: 'status_success',
+ label: 'success',
+ tooltip: '<img src=x onerror=alert(document.domain)>',
+ },
+ },
+ ],
+ title: 'test',
+ hasTriggeredBy: false,
+ action: {
+ icon: 'play',
+ title: 'Play all',
+ path: 'action',
+ },
+ },
+ });
+
+ expect(wrapper.find('.js-stage-action').exists()).toBe(true);
+ });
+ });
+
+ describe('without action', () => {
+ it('does not render action button', () => {
+ wrapper = shallowMount(stageColumnComponent, {
+ propsData: {
+ groups: [
+ {
+ id: 4259,
+ name: '<img src=x onerror=alert(document.domain)>',
+ status: {
+ icon: 'status_success',
+ label: 'success',
+ tooltip: '<img src=x onerror=alert(document.domain)>',
+ },
+ },
+ ],
+ title: 'test',
+ hasTriggeredBy: false,
+ },
+ });
+
+ expect(wrapper.find('.js-stage-action').exists()).toBe(false);
+ });
+ });
+});