shipit-engine 0.27.1 → 0.28.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +30 -1
- data/app/assets/stylesheets/_pages/_commits.scss +2 -0
- data/app/assets/stylesheets/_pages/_deploy.scss +6 -0
- data/app/controllers/shipit/api/release_statuses_controller.rb +22 -0
- data/app/controllers/shipit/api/stacks_controller.rb +6 -1
- data/app/controllers/shipit/commits_controller.rb +12 -1
- data/app/controllers/shipit/deploys_controller.rb +11 -0
- data/app/controllers/shipit/stacks_controller.rb +29 -1
- data/app/controllers/shipit/tasks_controller.rb +13 -1
- data/app/helpers/shipit/merge_status_helper.rb +2 -2
- data/app/helpers/shipit/stacks_helper.rb +10 -4
- data/app/jobs/shipit/perform_task_job.rb +1 -0
- data/app/jobs/shipit/update_github_last_deployed_ref_job.rb +41 -0
- data/app/models/shipit/command_line_user.rb +58 -0
- data/app/models/shipit/commit.rb +42 -2
- data/app/models/shipit/deploy.rb +31 -2
- data/app/models/shipit/deploy_spec/lerna_discovery.rb +43 -19
- data/app/models/shipit/deploy_spec/pypi_discovery.rb +5 -1
- data/app/models/shipit/rollback.rb +4 -2
- data/app/models/shipit/stack.rb +72 -15
- data/app/models/shipit/task.rb +30 -0
- data/app/models/shipit/undeployed_commit.rb +10 -1
- data/app/serializers/shipit/command_line_user_serializer.rb +4 -0
- data/app/views/layouts/shipit.html.erb +5 -1
- data/app/views/shipit/commits/_commit.html.erb +7 -2
- data/app/views/shipit/merge_status/_commit_count_warning.html.erb +1 -5
- data/app/views/shipit/merge_status/backlogged.html.erb +1 -1
- data/app/views/shipit/merge_status/failure.html.erb +1 -1
- data/app/views/shipit/merge_status/locked.html.erb +1 -1
- data/app/views/shipit/merge_status/success.html.erb +1 -1
- data/app/views/shipit/stacks/show.html.erb +10 -1
- data/app/views/shipit/tasks/_task_output.html.erb +2 -2
- data/config/locales/en.yml +2 -1
- data/config/routes.rb +8 -1
- data/db/migrate/20190502020249_add_lock_author_id_to_commits.rb +5 -0
- data/lib/shipit.rb +14 -2
- data/lib/shipit/cast_value.rb +9 -0
- data/lib/shipit/command.rb +62 -16
- data/lib/shipit/line_buffer.rb +42 -0
- data/lib/shipit/version.rb +1 -1
- data/lib/tasks/shipit.rake +27 -0
- data/test/controllers/api/release_statuses_controller_test.rb +66 -0
- data/test/controllers/api/stacks_controller_test.rb +19 -0
- data/test/controllers/commits_controller_test.rb +30 -6
- data/test/controllers/deploys_controller_test.rb +51 -2
- data/test/controllers/tasks_controller_test.rb +24 -0
- data/test/dummy/db/schema.rb +2 -1
- data/test/dummy/db/seeds.rb +2 -0
- data/test/fixtures/shipit/check_runs.yml +11 -0
- data/test/fixtures/shipit/commits.yml +104 -0
- data/test/fixtures/shipit/stacks.yml +98 -3
- data/test/fixtures/shipit/tasks.yml +42 -0
- data/test/jobs/update_github_last_deployed_ref_job_test.rb +88 -0
- data/test/models/commits_test.rb +88 -1
- data/test/models/deploy_spec_test.rb +34 -6
- data/test/models/deploys_test.rb +308 -6
- data/test/models/rollbacks_test.rb +17 -11
- data/test/models/stacks_test.rb +217 -4
- data/test/models/tasks_test.rb +13 -0
- data/test/models/undeployed_commits_test.rb +62 -3
- data/test/test_helper.rb +0 -1
- data/test/unit/command_test.rb +55 -0
- data/test/unit/line_buffer_test.rb +20 -0
- metadata +142 -128
@@ -107,6 +107,25 @@ module Shipit
|
|
107
107
|
assert_response :ok
|
108
108
|
assert_json 'last_deployed_at', @stack.last_deployed_at
|
109
109
|
end
|
110
|
+
|
111
|
+
test "#destroy schedules stack deletion job" do
|
112
|
+
assert_enqueued_with(job: DestroyStackJob) do
|
113
|
+
delete :destroy, params: {id: @stack.to_param}
|
114
|
+
end
|
115
|
+
assert_response :accepted
|
116
|
+
end
|
117
|
+
|
118
|
+
test "#destroy fails with insufficient permissions" do
|
119
|
+
@client.permissions.delete('write:stack')
|
120
|
+
@client.save!
|
121
|
+
|
122
|
+
assert_no_difference 'Stack.count' do
|
123
|
+
delete :destroy, params: {id: @stack.to_param}
|
124
|
+
end
|
125
|
+
|
126
|
+
assert_response :forbidden
|
127
|
+
assert_json 'message', 'This operation requires the `write:stack` permission'
|
128
|
+
end
|
110
129
|
end
|
111
130
|
end
|
112
131
|
end
|
@@ -5,14 +5,38 @@ module Shipit
|
|
5
5
|
setup do
|
6
6
|
@stack = shipit_stacks(:shipit)
|
7
7
|
@commit = shipit_commits(:first)
|
8
|
-
|
8
|
+
@user = shipit_users(:walrus)
|
9
|
+
session[:user_id] = @user.id
|
9
10
|
end
|
10
11
|
|
11
|
-
test "#update allows to lock
|
12
|
-
refute_predicate
|
13
|
-
|
14
|
-
|
15
|
-
|
12
|
+
test "#update allows commits to be locked and sets the lock author" do
|
13
|
+
refute_predicate(@commit, :locked?)
|
14
|
+
|
15
|
+
patch(:update, params: {
|
16
|
+
stack_id: @stack.to_param,
|
17
|
+
id: @commit.id,
|
18
|
+
commit: {locked: true},
|
19
|
+
})
|
20
|
+
|
21
|
+
assert_response(:ok)
|
22
|
+
@commit.reload
|
23
|
+
assert_predicate(@commit, :locked?)
|
24
|
+
assert_equal(@user, @commit.lock_author)
|
25
|
+
end
|
26
|
+
|
27
|
+
test "#update allows commits to be unlocked and clears the lock author" do
|
28
|
+
@commit.lock(@user)
|
29
|
+
|
30
|
+
patch(:update, params: {
|
31
|
+
stack_id: @stack.to_param,
|
32
|
+
id: @commit.id,
|
33
|
+
commit: {locked: false},
|
34
|
+
})
|
35
|
+
|
36
|
+
assert_response(:ok)
|
37
|
+
@commit.reload
|
38
|
+
refute_predicate(@commit, :locked?)
|
39
|
+
assert_nil(@commit.lock_author_id)
|
16
40
|
end
|
17
41
|
end
|
18
42
|
end
|
@@ -7,11 +7,12 @@ module Shipit
|
|
7
7
|
@stack = shipit_stacks(:shipit)
|
8
8
|
@deploy = shipit_deploys(:shipit)
|
9
9
|
@commit = shipit_commits(:second)
|
10
|
-
|
10
|
+
@user = shipit_users(:walrus)
|
11
|
+
session[:user_id] = @user.id
|
11
12
|
end
|
12
13
|
|
13
14
|
test ":show is success" do
|
14
|
-
get :show, params: {stack_id: @stack.to_param, id: @
|
15
|
+
get :show, params: {stack_id: @stack.to_param, id: @stack.deploys.last.id}
|
15
16
|
assert_response :success
|
16
17
|
end
|
17
18
|
|
@@ -100,6 +101,54 @@ module Shipit
|
|
100
101
|
assert_select '#new_rollback #force', 1
|
101
102
|
end
|
102
103
|
|
104
|
+
test ":rollback button shows deploy and commit ids" do
|
105
|
+
previous_deploy = @stack.deploys.second_to_last
|
106
|
+
previous_deploy.status = "success"
|
107
|
+
previous_deploy.type = "Shipit::Deploy"
|
108
|
+
previous_deploy.since_commit_id = 1
|
109
|
+
previous_deploy.until_commit_id = 2
|
110
|
+
previous_deploy.save
|
111
|
+
|
112
|
+
latest_deploy = @stack.deploys.last
|
113
|
+
latest_deploy.status = "running"
|
114
|
+
latest_deploy.type = "Shipit::Deploy"
|
115
|
+
latest_deploy.since_commit_id = 3
|
116
|
+
latest_deploy.until_commit_id = 4
|
117
|
+
latest_deploy.save
|
118
|
+
|
119
|
+
rollback_commit = @stack.commits.where(id: 2).first
|
120
|
+
|
121
|
+
get :show, params: {stack_id: @stack, id: latest_deploy.id, format: 'html'}
|
122
|
+
|
123
|
+
expected_result = "Abort and Rollback to <span class=\"short-sha-no-bg\">#{rollback_commit.short_sha}</span>"
|
124
|
+
expected_rolling_back_element = "Aborting with Rollback... to <span class=\"short-sha-no-bg\">#{rollback_commit.short_sha}</span>"
|
125
|
+
|
126
|
+
assert_select 'span.caption--ready', {html: expected_result}, "rollback button element was not found, or did not match the expected result of '#{expected_result}'"
|
127
|
+
assert_select 'span.caption--pending', {html: expected_rolling_back_element}, "ready rollback button element was not found, or did not match the expected result of '#{expected_rolling_back_element}'"
|
128
|
+
end
|
129
|
+
|
130
|
+
test ":rollback (regression) works correctly when a previous deploy is not found" do
|
131
|
+
rollback_commit_id = 3
|
132
|
+
latest_deploy = @stack.deploys.last
|
133
|
+
latest_deploy.status = "running"
|
134
|
+
latest_deploy.type = "Shipit::Deploy"
|
135
|
+
latest_deploy.since_commit_id = rollback_commit_id
|
136
|
+
latest_deploy.until_commit_id = 4
|
137
|
+
latest_deploy.save
|
138
|
+
|
139
|
+
@stack.deploys.where.not(id: latest_deploy.id).delete_all
|
140
|
+
|
141
|
+
rollback_commit = @stack.commits.where(id: rollback_commit_id).take
|
142
|
+
|
143
|
+
get :show, params: {stack_id: @stack, id: latest_deploy.id, format: 'html'}
|
144
|
+
|
145
|
+
expected_result = "Abort and Rollback to <span class=\"short-sha-no-bg\">#{rollback_commit.short_sha}</span>"
|
146
|
+
expected_rolling_back_element = "Aborting with Rollback... to <span class=\"short-sha-no-bg\">#{rollback_commit.short_sha}</span>"
|
147
|
+
|
148
|
+
assert_select 'span.caption--ready', {html: expected_result}, "rollback button element was not found, or did not match the expected result of '#{expected_result}'"
|
149
|
+
assert_select 'span.caption--pending', {html: expected_rolling_back_element}, "ready rollback button element was not found, or did not match the expected result of '#{expected_rolling_back_element}'"
|
150
|
+
end
|
151
|
+
|
103
152
|
test ":revert redirect to the proper rollback page" do
|
104
153
|
get :revert, params: {stack_id: @stack.to_param, id: shipit_deploys(:shipit2).id}
|
105
154
|
assert_redirected_to rollback_stack_deploy_path(@stack, shipit_deploys(:shipit))
|
@@ -123,5 +123,29 @@ module Shipit
|
|
123
123
|
assert_response :success
|
124
124
|
assert_json_keys %w(status output rollback_url)
|
125
125
|
end
|
126
|
+
|
127
|
+
test ":lookup returns stack task url if the task is an instance of Task" do
|
128
|
+
@task = shipit_tasks(:shipit_restart)
|
129
|
+
|
130
|
+
get :lookup, params: {id: @task.id}
|
131
|
+
|
132
|
+
assert_redirected_to stack_task_path(@task.stack, @task)
|
133
|
+
end
|
134
|
+
|
135
|
+
test ":lookup returns stack deploy url if the task is an instance of Deploy" do
|
136
|
+
@task = shipit_tasks(:shipit)
|
137
|
+
|
138
|
+
get :lookup, params: {id: @task.id}
|
139
|
+
|
140
|
+
assert_redirected_to stack_deploy_path(@task.stack, @task)
|
141
|
+
end
|
142
|
+
|
143
|
+
test ":lookup returns stack deploy url if the task is an instance of Rollback" do
|
144
|
+
@task = shipit_tasks(:shipit_rollback)
|
145
|
+
|
146
|
+
get :lookup, params: {id: @task.id}
|
147
|
+
|
148
|
+
assert_redirected_to stack_deploy_path(@task.stack, @task)
|
149
|
+
end
|
126
150
|
end
|
127
151
|
end
|
data/test/dummy/db/schema.rb
CHANGED
@@ -10,7 +10,7 @@
|
|
10
10
|
#
|
11
11
|
# It's strongly recommended that you check this file into your version control system.
|
12
12
|
|
13
|
-
ActiveRecord::Schema.define(version:
|
13
|
+
ActiveRecord::Schema.define(version: 2019_05_02_020249) do
|
14
14
|
|
15
15
|
create_table "api_clients", force: :cascade do |t|
|
16
16
|
t.text "permissions", limit: 65535
|
@@ -76,6 +76,7 @@ ActiveRecord::Schema.define(version: 2018_10_10_150947) do
|
|
76
76
|
t.string "pull_request_title", limit: 1024
|
77
77
|
t.integer "pull_request_id"
|
78
78
|
t.boolean "locked", default: false, null: false
|
79
|
+
t.integer "lock_author_id", limit: 4
|
79
80
|
t.index ["author_id"], name: "index_commits_on_author_id"
|
80
81
|
t.index ["committer_id"], name: "index_commits_on_committer_id"
|
81
82
|
t.index ["created_at"], name: "index_commits_on_created_at"
|
data/test/dummy/db/seeds.rb
CHANGED
@@ -9,6 +9,8 @@ module Shipit
|
|
9
9
|
Stack.send(:define_method, :sync_github) {}
|
10
10
|
Commit.send(:define_method, :fetch_stats!) {}
|
11
11
|
Commit.send(:define_method, :refresh_statuses!) {}
|
12
|
+
Commit.send(:define_method, :refresh_check_runs!) {}
|
13
|
+
ReleaseStatus.send(:define_method, :create_status_on_github!) {}
|
12
14
|
|
13
15
|
users = 3.times.map do
|
14
16
|
User.create!(
|
@@ -9,6 +9,17 @@ second_pending_travis:
|
|
9
9
|
details_url: "http://www.example.com/build/424242"
|
10
10
|
created_at: <%= 10.days.ago.to_s(:db) %>
|
11
11
|
|
12
|
+
check_runs_first_pending_coveralls:
|
13
|
+
stack: check_runs
|
14
|
+
commit_id: 201 # check_runs_first
|
15
|
+
github_id: 43
|
16
|
+
title: lets go
|
17
|
+
name: Coverage metrics
|
18
|
+
created_at: <%= 10.days.ago.to_s(:db) %>
|
19
|
+
conclusion: pending
|
20
|
+
html_url: "http://www.example.com/run/434343"
|
21
|
+
details_url: "http://www.example.com/build/434343"
|
22
|
+
|
12
23
|
check_runs_first_success_coveralls:
|
13
24
|
stack: check_runs
|
14
25
|
commit_id: 201 # check_runs_first
|
@@ -246,3 +246,107 @@ canaries_fifth:
|
|
246
246
|
additions: 1
|
247
247
|
deletions: 24
|
248
248
|
updated_at: <%= 8.days.ago.to_s(:db) %>
|
249
|
+
|
250
|
+
undeployed_1:
|
251
|
+
id: 401
|
252
|
+
sha: 4d9278037b872fd9a6690523e411ecb3aa181355
|
253
|
+
message: "lets go"
|
254
|
+
stack: shipit_undeployed
|
255
|
+
author: walrus
|
256
|
+
committer: walrus
|
257
|
+
authored_at: <%= 10.days.ago.to_s(:db) %>
|
258
|
+
committed_at: <%= 9.days.ago.to_s(:db) %>
|
259
|
+
additions: 42
|
260
|
+
deletions: 24
|
261
|
+
updated_at: <%= 8.days.ago.to_s(:db) %>
|
262
|
+
|
263
|
+
undeployed_2:
|
264
|
+
id: 402
|
265
|
+
sha: 4890fd8b5f2be05d1fedb763a3605ee461c39074
|
266
|
+
message: "sheep it!"
|
267
|
+
stack: shipit_undeployed
|
268
|
+
author: walrus
|
269
|
+
committer: walrus
|
270
|
+
authored_at: <%= 8.days.ago.to_s(:db) %>
|
271
|
+
committed_at: <%= 7.days.ago.to_s(:db) %>
|
272
|
+
additions: 1
|
273
|
+
deletions: 1
|
274
|
+
updated_at: <%= 8.days.ago.to_s(:db) %>
|
275
|
+
|
276
|
+
undeployed_3:
|
277
|
+
id: 403
|
278
|
+
sha: 467578b362bf2b4df5903e1c7960929361c39074
|
279
|
+
message: "fix it!"
|
280
|
+
stack: shipit_undeployed
|
281
|
+
author: walrus
|
282
|
+
committer: walrus
|
283
|
+
authored_at: <%= 6.days.ago.to_s(:db) %>
|
284
|
+
committed_at: <%= 5.days.ago.to_s(:db) %>
|
285
|
+
additions: 12
|
286
|
+
deletions: 64
|
287
|
+
updated_at: <%= 8.days.ago.to_s(:db) %>
|
288
|
+
|
289
|
+
undeployed_4:
|
290
|
+
id: 404
|
291
|
+
sha: 447578b362bf2b4df5903e1c7960929361c3435a
|
292
|
+
message: "Merge pull request #7 from shipit-engine/yoloshipit\n\nyoloshipit!"
|
293
|
+
stack: shipit_undeployed
|
294
|
+
author: walrus
|
295
|
+
committer: walrus
|
296
|
+
authored_at: <%= 4.days.ago.to_s(:db) %>
|
297
|
+
committed_at: <%= 3.days.ago.to_s(:db) %>
|
298
|
+
additions: 420
|
299
|
+
deletions: 342
|
300
|
+
updated_at: <%= 8.days.ago.to_s(:db) %>
|
301
|
+
|
302
|
+
undeployed_5:
|
303
|
+
id: 405
|
304
|
+
sha: 457578b362bf2b4df5903e1c7960929361c3435a
|
305
|
+
message: "Merge pull request #7 from shipit-engine/yoloshipit\n\nyoloshipit!"
|
306
|
+
stack: shipit_undeployed
|
307
|
+
author: walrus
|
308
|
+
committer: walrus
|
309
|
+
authored_at: <%= 4.days.ago.to_s(:db) %>
|
310
|
+
committed_at: <%= 3.days.ago.to_s(:db) %>
|
311
|
+
additions: 420
|
312
|
+
deletions: 342
|
313
|
+
updated_at: <%= 8.days.ago.to_s(:db) %>
|
314
|
+
|
315
|
+
undeployed_6:
|
316
|
+
id: 406
|
317
|
+
sha: 467578b362bf2b4df5903e1c7960929361c3435a
|
318
|
+
message: "Merge pull request #7 from shipit-engine/yoloshipit\n\nyoloshipit!"
|
319
|
+
stack: shipit_undeployed
|
320
|
+
author: walrus
|
321
|
+
committer: walrus
|
322
|
+
authored_at: <%= 4.days.ago.to_s(:db) %>
|
323
|
+
committed_at: <%= 3.days.ago.to_s(:db) %>
|
324
|
+
additions: 420
|
325
|
+
deletions: 342
|
326
|
+
updated_at: <%= 8.days.ago.to_s(:db) %>
|
327
|
+
|
328
|
+
undeployed_7:
|
329
|
+
id: 407
|
330
|
+
sha: 477578b362bf2b4df5903e1c7960929361c3435a
|
331
|
+
message: "Merge pull request #7 from shipit-engine/yoloshipit\n\nyoloshipit!"
|
332
|
+
stack: shipit_undeployed
|
333
|
+
author: walrus
|
334
|
+
committer: walrus
|
335
|
+
authored_at: <%= 4.days.ago.to_s(:db) %>
|
336
|
+
committed_at: <%= 3.days.ago.to_s(:db) %>
|
337
|
+
additions: 420
|
338
|
+
deletions: 342
|
339
|
+
updated_at: <%= 8.days.ago.to_s(:db) %>
|
340
|
+
|
341
|
+
single:
|
342
|
+
id: 501
|
343
|
+
sha: 547578b362bf2b4df5903e1c7960929361c3435a
|
344
|
+
message: "first commit"
|
345
|
+
stack: shipit_single
|
346
|
+
author: walrus
|
347
|
+
committer: walrus
|
348
|
+
authored_at: <%= 4.days.ago.to_s(:db) %>
|
349
|
+
committed_at: <%= 3.days.ago.to_s(:db) %>
|
350
|
+
additions: 420
|
351
|
+
deletions: 342
|
352
|
+
updated_at: <%= 8.days.ago.to_s(:db) %>
|
@@ -5,8 +5,8 @@ shipit:
|
|
5
5
|
branch: master
|
6
6
|
ignore_ci: false
|
7
7
|
merge_queue_enabled: true
|
8
|
-
tasks_count:
|
9
|
-
undeployed_commits_count:
|
8
|
+
tasks_count: 8
|
9
|
+
undeployed_commits_count: 2
|
10
10
|
cached_deploy_spec: >
|
11
11
|
{
|
12
12
|
"machine": {"environment": {}},
|
@@ -62,6 +62,7 @@ shipit_canaries:
|
|
62
62
|
merge_queue_enabled: true
|
63
63
|
tasks_count: 3
|
64
64
|
undeployed_commits_count: 1
|
65
|
+
continuous_deployment: true
|
65
66
|
cached_deploy_spec: >
|
66
67
|
{
|
67
68
|
"machine": {"environment": {}},
|
@@ -224,4 +225,98 @@ check_runs:
|
|
224
225
|
environment: production
|
225
226
|
branch: master
|
226
227
|
tasks_count: 0
|
227
|
-
undeployed_commits_count: 1
|
228
|
+
undeployed_commits_count: 1
|
229
|
+
|
230
|
+
shipit_undeployed:
|
231
|
+
repo_owner: "shopify"
|
232
|
+
repo_name: "shipit-engine"
|
233
|
+
environment: "undeployed"
|
234
|
+
branch: master
|
235
|
+
ignore_ci: true
|
236
|
+
merge_queue_enabled: true
|
237
|
+
tasks_count: 2
|
238
|
+
undeployed_commits_count: 6
|
239
|
+
continuous_deployment: true
|
240
|
+
cached_deploy_spec: >
|
241
|
+
{
|
242
|
+
"machine": {"environment": {}},
|
243
|
+
"review": {
|
244
|
+
"checklist": ["foo", "bar", "baz"],
|
245
|
+
"monitoring": [
|
246
|
+
{"image": "https://example.com/monitor.png", "width": 200, "height": 300}
|
247
|
+
]
|
248
|
+
},
|
249
|
+
"dependencies": {"override": []},
|
250
|
+
"deploy": {"override": null, "interval": 60, "max_commits": 3, "variables": [{"name": "SAFETY_DISABLED", "title": "Set to 1 to do dangerous things", "default": 0}]},
|
251
|
+
"rollback": {"override": ["echo 'Rollback!'"]},
|
252
|
+
"fetch": ["echo '42'"],
|
253
|
+
"tasks": {
|
254
|
+
"restart": {
|
255
|
+
"action": "Restart application",
|
256
|
+
"description": "Restart app and job servers",
|
257
|
+
"variables": [
|
258
|
+
{"name": "FOO", "title": "Set to 0 to foo", "default": 1},
|
259
|
+
{"name": "BAR", "title": "Set to 1 to bar", "default": 0},
|
260
|
+
{"name": "WALRUS", "title": "Walrus without a default value"}
|
261
|
+
],
|
262
|
+
"steps": [
|
263
|
+
"cap $ENVIRONMENT deploy:restart"
|
264
|
+
]
|
265
|
+
},
|
266
|
+
"flush_cache": {
|
267
|
+
"action": "Flush cache",
|
268
|
+
"description": "Flush the application cache",
|
269
|
+
"steps": [
|
270
|
+
"cap $ENVIRONMENT cache:flush"
|
271
|
+
],
|
272
|
+
"allow_concurrency": true
|
273
|
+
}
|
274
|
+
},
|
275
|
+
"merge": {
|
276
|
+
"revalidate_after": 900
|
277
|
+
},
|
278
|
+
"ci": {
|
279
|
+
"hide": ["ci/hidden"],
|
280
|
+
"allow_failures": ["ci/ok_to_fail"]
|
281
|
+
}
|
282
|
+
}
|
283
|
+
last_deployed_at: <%= 8.days.ago.to_s(:db) %>
|
284
|
+
updated_at: <%= 8.days.ago.to_s(:db) %>
|
285
|
+
|
286
|
+
shipit_single:
|
287
|
+
repo_owner: "shopify"
|
288
|
+
repo_name: "shipit-engine"
|
289
|
+
environment: "single"
|
290
|
+
branch: master
|
291
|
+
ignore_ci: false
|
292
|
+
merge_queue_enabled: true
|
293
|
+
tasks_count: 2
|
294
|
+
undeployed_commits_count: 1
|
295
|
+
cached_deploy_spec: >
|
296
|
+
{
|
297
|
+
"machine": {"environment": {}},
|
298
|
+
"review": {
|
299
|
+
"checklist": ["foo", "bar", "baz"],
|
300
|
+
"monitoring": [
|
301
|
+
{"image": "https://example.com/monitor.png", "width": 200, "height": 300}
|
302
|
+
]
|
303
|
+
},
|
304
|
+
"dependencies": {"override": []},
|
305
|
+
"deploy": {"override": null},
|
306
|
+
"rollback": {"override": ["echo 'Rollback!'"]},
|
307
|
+
"fetch": ["echo '42'"],
|
308
|
+
"tasks": {
|
309
|
+
"restart": {
|
310
|
+
"action": "Restart application",
|
311
|
+
"description": "Restart app and job servers",
|
312
|
+
"steps": [
|
313
|
+
"cap $ENVIRONMENT deploy:restart"
|
314
|
+
]
|
315
|
+
}
|
316
|
+
},
|
317
|
+
"ci": {
|
318
|
+
"blocking": ["soc/compliance"]
|
319
|
+
}
|
320
|
+
}
|
321
|
+
updated_at: <%= 8.days.ago.to_s(:db) %>
|
322
|
+
last_deployed_at: <%= 8.days.ago.to_s(:db) %>
|
@@ -236,3 +236,45 @@ shipit_with_title_parsing_issue:
|
|
236
236
|
created_at: <%= (60 - 3).minutes.ago.to_s(:db) %>
|
237
237
|
started_at: <%= (60 - 3).minutes.ago.to_s(:db) %>
|
238
238
|
ended_at: <%= (60 - 4).minutes.ago.to_s(:db) %>
|
239
|
+
|
240
|
+
shipit_undeployed_1:
|
241
|
+
id: 201
|
242
|
+
user: walrus
|
243
|
+
since_commit_id: 401
|
244
|
+
until_commit_id: 401
|
245
|
+
type: Shipit::Deploy
|
246
|
+
stack: shipit_undeployed
|
247
|
+
status: success
|
248
|
+
additions: 1
|
249
|
+
deletions: 1
|
250
|
+
created_at: <%= (60 - 1).minutes.ago.to_s(:db) %>
|
251
|
+
started_at: <%= (60 - 1).minutes.ago.to_s(:db) %>
|
252
|
+
ended_at: <%= (60 - 3).minutes.ago.to_s(:db) %>
|
253
|
+
|
254
|
+
shipit_undeployed_2:
|
255
|
+
id: 202
|
256
|
+
user: walrus
|
257
|
+
since_commit_id: 402
|
258
|
+
until_commit_id: 403
|
259
|
+
type: Shipit::Deploy
|
260
|
+
stack: shipit_undeployed
|
261
|
+
status: running
|
262
|
+
additions: 12
|
263
|
+
deletions: 64
|
264
|
+
created_at: <%= (60 - 2).minutes.ago.to_s(:db) %>
|
265
|
+
started_at: <%= (60 - 2).minutes.ago.to_s(:db) %>
|
266
|
+
ended_at: <%= (60 - 4).minutes.ago.to_s(:db) %>
|
267
|
+
|
268
|
+
shipit_single:
|
269
|
+
id: 301
|
270
|
+
user: walrus
|
271
|
+
since_commit_id: 501
|
272
|
+
until_commit_id: 501
|
273
|
+
type: Shipit::Deploy
|
274
|
+
stack: shipit_single
|
275
|
+
status: running
|
276
|
+
additions: 12
|
277
|
+
deletions: 64
|
278
|
+
created_at: <%= (60 - 2).minutes.ago.to_s(:db) %>
|
279
|
+
started_at: <%= (60 - 2).minutes.ago.to_s(:db) %>
|
280
|
+
ended_at: <%= (60 - 4).minutes.ago.to_s(:db) %>
|