summaryrefslogtreecommitdiff
path: root/app/views/projects/builds/_sidebar.html.haml
blob: c4159ce1a3624af7c88978b6eb8ae47a0bc40d2b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
- builds = @build.pipeline.builds.to_a

%aside.right-sidebar.right-sidebar-expanded.build-sidebar.js-build-sidebar.js-right-sidebar{ data: { "offset-top" => "153", "spy" => "affix" } }
  .block.build-sidebar-header.visible-xs-block.visible-sm-block.append-bottom-default
    Job
    %strong ##{@build.id}
    %a.gutter-toggle.pull-right.js-sidebar-build-toggle{ href: "#" }
      = icon('angle-double-right')
  - if @build.coverage
    .block.coverage
      .title
        Test coverage
      %p.build-detail-row
        #{@build.coverage}%

  .blocks-container
    - if can?(current_user, :read_build, @project) && (@build.artifacts? || @build.artifacts_expired?)
      .block{ class: ("block-first" if !@build.coverage) }
        .title
          Job artifacts
        - if @build.artifacts_expired?
          %p.build-detail-row
            The artifacts were removed
            #{time_ago_with_tooltip(@build.artifacts_expire_at)}
        - elsif @build.has_expiring_artifacts?
          %p.build-detail-row
            The artifacts will be removed in
            %span.js-artifacts-remove= @build.artifacts_expire_at

        - if @build.artifacts?
          .btn-group.btn-group-justified{ role: :group }
            - if @build.has_expiring_artifacts? && can?(current_user, :update_build, @build)
              = link_to keep_namespace_project_build_artifacts_path(@project.namespace, @project, @build), class: 'btn btn-sm btn-default', method: :post do
                Keep

            = link_to download_namespace_project_build_artifacts_path(@project.namespace, @project, @build), rel: 'nofollow', download: '', class: 'btn btn-sm btn-default' do
              Download

            - if @build.artifacts_metadata?
              = link_to browse_namespace_project_build_artifacts_path(@project.namespace, @project, @build), class: 'btn btn-sm btn-default' do
                Browse

    .block{ class: ("block-first" if !@build.coverage && !(can?(current_user, :read_build, @project) && (@build.artifacts? || @build.artifacts_expired?))) }
      .title
        Job details
        - if can?(current_user, :update_build, @build) && @build.retryable?
          = link_to "Retry job", retry_namespace_project_build_path(@project.namespace, @project, @build), class: 'pull-right retry-link', method: :post
      - if @build.merge_request
        %p.build-detail-row
          %span.build-light-text Merge Request:
          = link_to "#{@build.merge_request.to_reference}", merge_request_path(@build.merge_request)
      - if @build.duration
        %p.build-detail-row
          %span.build-light-text Duration:
          = time_interval_in_words(@build.duration)
      - if @build.finished_at
        %p.build-detail-row
          %span.build-light-text Finished:
          #{time_ago_with_tooltip(@build.finished_at)}
      - if @build.erased_at
        %p.build-detail-row
          %span.build-light-text Erased:
          #{time_ago_with_tooltip(@build.erased_at)}
      %p.build-detail-row
        %span.build-light-text Runner:
        - if @build.runner && current_user && current_user.admin
          = link_to "##{@build.runner.id}", admin_runner_path(@build.runner.id)
        - elsif @build.runner
          \##{@build.runner.id}
      .btn-group.btn-group-justified{ role: :group }
        - if @build.has_trace?
          = link_to 'Raw', raw_namespace_project_build_path(@project.namespace, @project, @build), class: 'btn btn-sm btn-default'
        - if @build.active?
          = link_to "Cancel", cancel_namespace_project_build_path(@project.namespace, @project, @build), class: 'btn btn-sm btn-default', method: :post
        - if can?(current_user, :update_build, @project) && @build.erasable?
          = link_to erase_namespace_project_build_path(@project.namespace, @project, @build),
                    class: "btn btn-sm btn-default", method: :post,
                    data: { confirm: "Are you sure you want to erase this build?" } do
            Erase

    - if @build.trigger_request
      .build-widget
        %h4.title
          Trigger

        %p
          %span.build-light-text Token:
          #{@build.trigger_request.trigger.short_token}

        - if @build.trigger_request.variables
          %p
            %button.btn.group.btn-group-justified.reveal-variables Reveal Variables


          - @build.trigger_request.variables.each do |key, value|
            .hide.js-build
              .js-build-variable= key
              .js-build-value= value

    .block
      .title
        Commit title
      %p.build-light-text.append-bottom-0
        #{@build.pipeline.git_commit_title}

    - if @build.tags.any?
      .block
        .title
          Tags
        - @build.tag_list.each do |tag|
          %span.label.label-primary
            = tag

    - if @build.pipeline.stages_count > 1
      .dropdown.build-dropdown
        .title Stage
        %button.dropdown-menu-toggle{ type: 'button', 'data-toggle' => 'dropdown' }
          %span.stage-selection More
          = icon('chevron-down')
        %ul.dropdown-menu
          - @build.pipeline.stages.each do |stage|
            %li
              %a.stage-item= stage.name

  .builds-container
    - HasStatus::ORDERED_STATUSES.each do |build_status|
      - builds.select{|build| build.status == build_status}.each do |build|
        .build-job{ class: sidebar_build_class(build, @build), data: { stage: build.stage } }
          = link_to namespace_project_build_path(@project.namespace, @project, build) do
            = icon('arrow-right')
            %span{ class: "ci-status-icon-#{build.status}" }
              = ci_icon_for_status(build.status)
            %span
              - if build.name
                = build.name
              - else
                = build.id
            - if build.retried?
              %i.fa.fa-spinner.has-tooltip{ data: { container: 'body', placement: 'bottom' }, title: 'Job was retried' }

:javascript
  new Sidebar();