shipit-engine 0.29.0 → 0.30.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 +37 -2
- data/app/assets/images/archive-solid.svg +1 -0
- data/app/assets/stylesheets/_pages/_stacks.scss +76 -0
- data/app/controllers/shipit/api/stacks_controller.rb +20 -1
- data/app/controllers/shipit/api_clients_controller.rb +49 -0
- data/app/controllers/shipit/merge_status_controller.rb +8 -4
- data/app/controllers/shipit/stacks_controller.rb +58 -9
- data/app/controllers/shipit/webhooks_controller.rb +2 -130
- data/app/helpers/shipit/stacks_helper.rb +4 -0
- data/app/jobs/shipit/background_job/unique.rb +3 -1
- data/app/jobs/shipit/continuous_delivery_job.rb +1 -0
- data/app/jobs/shipit/destroy_stack_job.rb +2 -2
- data/app/models/shipit/commit.rb +21 -9
- data/app/models/shipit/commit_deployment.rb +15 -11
- data/app/models/shipit/commit_deployment_status.rb +6 -2
- data/app/models/shipit/deploy.rb +48 -7
- data/app/models/shipit/deploy_stats.rb +57 -0
- data/app/models/shipit/repository.rb +38 -0
- data/app/models/shipit/stack.rb +41 -34
- data/app/models/shipit/task.rb +26 -4
- data/app/models/shipit/webhooks.rb +32 -0
- data/app/models/shipit/webhooks/handlers/check_suite_handler.rb +19 -0
- data/app/models/shipit/webhooks/handlers/handler.rb +40 -0
- data/app/models/shipit/webhooks/handlers/membership_handler.rb +45 -0
- data/app/models/shipit/webhooks/handlers/push_handler.rb +20 -0
- data/app/models/shipit/webhooks/handlers/status_handler.rb +26 -0
- data/app/serializers/shipit/stack_serializer.rb +6 -1
- data/app/validators/ascii_only_validator.rb +3 -3
- data/app/views/layouts/_head.html.erb +0 -0
- data/app/views/layouts/shipit.html.erb +4 -2
- data/app/views/shipit/api_clients/index.html.erb +36 -0
- data/app/views/shipit/api_clients/new.html.erb +33 -0
- data/app/views/shipit/api_clients/show.html.erb +35 -0
- data/app/views/shipit/merge_status/logged_out.erb +1 -1
- data/app/views/shipit/stacks/_header.html.erb +12 -7
- data/app/views/shipit/stacks/_links.html.erb +1 -0
- data/app/views/shipit/stacks/index.html.erb +7 -2
- data/app/views/shipit/stacks/settings.html.erb +19 -0
- data/app/views/shipit/stacks/statistics.html.erb +82 -0
- data/config/locales/en.yml +14 -2
- data/config/routes.rb +4 -0
- data/db/migrate/20191209231045_create_shipit_repositories.rb +12 -0
- data/db/migrate/20191209231307_add_repository_reference_to_stacks.rb +15 -0
- data/db/migrate/20191216162728_backfill_repository_data.rb +22 -0
- data/db/migrate/20191216163010_remove_repository_information_from_stacks.rb +20 -0
- data/db/migrate/20191219205202_add_archived_since_to_stacks.rb +6 -0
- data/db/migrate/20200102175621_optional_task_commits.rb +6 -0
- data/db/migrate/20200109132519_add_sha_to_commit_deployments.rb +5 -0
- data/lib/shipit/github_app.rb +32 -3
- data/lib/shipit/task_commands.rb +10 -2
- data/lib/shipit/version.rb +1 -1
- data/test/controllers/api/ccmenu_controller_test.rb +1 -1
- data/test/controllers/api/stacks_controller_test.rb +14 -6
- data/test/controllers/api_clients_controller_test.rb +103 -0
- data/test/controllers/merge_status_controller_test.rb +21 -4
- data/test/controllers/stacks_controller_test.rb +35 -0
- data/test/controllers/webhooks_controller_test.rb +26 -0
- data/test/dummy/config/environments/development.rb +22 -4
- data/test/dummy/db/schema.rb +17 -6
- data/test/dummy/db/seeds.rb +20 -6
- data/test/fixtures/shipit/commit_deployment_statuses.yml +4 -4
- data/test/fixtures/shipit/commit_deployments.yml +8 -8
- data/test/fixtures/shipit/commits.yml +23 -0
- data/test/fixtures/shipit/repositories.yml +23 -0
- data/test/fixtures/shipit/stacks.yml +100 -16
- data/test/fixtures/shipit/tasks.yml +66 -3
- data/test/jobs/destroy_stack_job_test.rb +9 -0
- data/test/models/commit_deployment_status_test.rb +33 -4
- data/test/models/commit_deployment_test.rb +8 -11
- data/test/models/commits_test.rb +22 -2
- data/test/models/deploy_stats_test.rb +112 -0
- data/test/models/deploys_test.rb +55 -17
- data/test/models/pull_request_test.rb +1 -1
- data/test/models/shipit/repository_test.rb +76 -0
- data/test/models/shipit/wehbooks/handlers_test.rb +26 -0
- data/test/models/stacks_test.rb +44 -51
- data/test/models/undeployed_commits_test.rb +13 -0
- data/test/test_helper.rb +3 -1
- data/test/unit/deploy_commands_test.rb +9 -0
- data/test/unit/github_app_test.rb +136 -0
- metadata +161 -128
@@ -0,0 +1,103 @@
|
|
1
|
+
|
2
|
+
require 'test_helper'
|
3
|
+
|
4
|
+
module Shipit
|
5
|
+
class ApiClientsControllerTest < ActionController::TestCase
|
6
|
+
setup do
|
7
|
+
@routes = Shipit::Engine.routes
|
8
|
+
@api_client = shipit_api_clients(:here_come_the_walrus)
|
9
|
+
session[:user_id] = shipit_users(:walrus).id
|
10
|
+
end
|
11
|
+
|
12
|
+
test "GitHub authentication is mandatory" do
|
13
|
+
session[:user_id] = nil
|
14
|
+
get :index
|
15
|
+
assert_redirected_to '/github/auth/github?origin=http%3A%2F%2Ftest.host%2Fapi_clients'
|
16
|
+
end
|
17
|
+
|
18
|
+
test "current_user must be a member of at least a Shipit.github_teams" do
|
19
|
+
session[:user_id] = shipit_users(:bob).id
|
20
|
+
Shipit.stubs(:github_teams).returns([shipit_teams(:cyclimse_cooks), shipit_teams(:shopify_developers)])
|
21
|
+
get :index
|
22
|
+
assert_response :forbidden
|
23
|
+
assert_equal(
|
24
|
+
'You must be a member of cyclimse/cooks or shopify/developers to access this application.',
|
25
|
+
response.body,
|
26
|
+
)
|
27
|
+
end
|
28
|
+
|
29
|
+
test "#index is successful with a valid user" do
|
30
|
+
get :index
|
31
|
+
assert_response :ok
|
32
|
+
end
|
33
|
+
|
34
|
+
test "#new is success" do
|
35
|
+
get :new
|
36
|
+
assert_response :ok
|
37
|
+
end
|
38
|
+
|
39
|
+
test "#create creates a new api_client" do
|
40
|
+
assert_difference "ApiClient.count", +1 do
|
41
|
+
post :create, params: {
|
42
|
+
api_client: {
|
43
|
+
name: 'walrus_app',
|
44
|
+
permissions: [
|
45
|
+
'read:stack',
|
46
|
+
'lock:stack',
|
47
|
+
],
|
48
|
+
},
|
49
|
+
}
|
50
|
+
end
|
51
|
+
|
52
|
+
assert_redirected_to api_client_path(ApiClient.last)
|
53
|
+
end
|
54
|
+
|
55
|
+
test "#create attaches the current user to the created api client" do
|
56
|
+
post :create, params: {
|
57
|
+
api_client: {
|
58
|
+
name: 'walrus_app',
|
59
|
+
permissions: [
|
60
|
+
'read:stack',
|
61
|
+
'lock:stack',
|
62
|
+
],
|
63
|
+
},
|
64
|
+
}
|
65
|
+
|
66
|
+
assert_equal shipit_users(:walrus).id, ApiClient.last.creator.id
|
67
|
+
end
|
68
|
+
|
69
|
+
test "#create when not valid renders new" do
|
70
|
+
assert_no_difference "Stack.count" do
|
71
|
+
post :create, params: {api_client: {name: 'walrus_app', permissions: ['invalid']}}
|
72
|
+
end
|
73
|
+
|
74
|
+
assert flash[:warning]
|
75
|
+
assert_response :success
|
76
|
+
end
|
77
|
+
|
78
|
+
test "#show is success" do
|
79
|
+
get :show, params: {id: @api_client.id}
|
80
|
+
assert_response :ok
|
81
|
+
end
|
82
|
+
|
83
|
+
test "#update updates an existing api_client" do
|
84
|
+
new_permissions = [
|
85
|
+
'read:stack',
|
86
|
+
'lock:stack',
|
87
|
+
]
|
88
|
+
|
89
|
+
assert_difference "ApiClient.count", 0 do
|
90
|
+
patch :update, params: {
|
91
|
+
id: @api_client.id,
|
92
|
+
api_client: {
|
93
|
+
permissions: new_permissions,
|
94
|
+
},
|
95
|
+
}
|
96
|
+
end
|
97
|
+
@api_client.reload
|
98
|
+
|
99
|
+
assert_redirected_to api_client_path(@api_client)
|
100
|
+
assert_equal new_permissions, @api_client.permissions
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
@@ -37,13 +37,11 @@ module Shipit
|
|
37
37
|
test "GET show prefers stacks with merge_queue_enabled" do
|
38
38
|
existing = shipit_stacks(:shipit)
|
39
39
|
Shipit::Stack.where(
|
40
|
-
|
41
|
-
repo_name: existing.repo_name,
|
40
|
+
repository: existing.repository,
|
42
41
|
).update_all(merge_queue_enabled: false)
|
43
42
|
|
44
43
|
Shipit::Stack.create(
|
45
|
-
|
46
|
-
repo_name: existing.repo_name,
|
44
|
+
repository: existing.repository,
|
47
45
|
environment: 'foo',
|
48
46
|
branch: existing.branch,
|
49
47
|
merge_queue_enabled: true,
|
@@ -53,5 +51,24 @@ module Shipit
|
|
53
51
|
assert_response :ok
|
54
52
|
assert_includes response.body, 'shipit-engine/foo'
|
55
53
|
end
|
54
|
+
|
55
|
+
test "GET show prefers locked stacks above all else" do
|
56
|
+
existing = shipit_stacks(:shipit)
|
57
|
+
Shipit::Stack.where(
|
58
|
+
repository: existing.repository,
|
59
|
+
).update_all(lock_reason: 'testing', merge_queue_enabled: false, locked_since: Time.now.utc)
|
60
|
+
|
61
|
+
# Shipit would otherwise prefer this, because it has the merge queue enabled
|
62
|
+
Shipit::Stack.create(
|
63
|
+
repository: existing.repository,
|
64
|
+
environment: 'foo',
|
65
|
+
branch: existing.branch,
|
66
|
+
merge_queue_enabled: true,
|
67
|
+
)
|
68
|
+
|
69
|
+
get :show, params: {referrer: 'https://github.com/Shopify/shipit-engine/pull/42', branch: 'master'}
|
70
|
+
assert_response :ok
|
71
|
+
assert_includes response.body, 'locked'
|
72
|
+
end
|
56
73
|
end
|
57
74
|
end
|
@@ -110,6 +110,17 @@ module Shipit
|
|
110
110
|
assert_response :success
|
111
111
|
end
|
112
112
|
|
113
|
+
test "#statistics is success" do
|
114
|
+
get :statistics, params: {id: @stack.to_param}
|
115
|
+
assert_response :success
|
116
|
+
end
|
117
|
+
|
118
|
+
test "#statistics redirects to #show if no deploys are present" do
|
119
|
+
@stack.deploys.destroy_all
|
120
|
+
get :statistics, params: {id: @stack.to_param}
|
121
|
+
assert_redirected_to stack_path(@stack)
|
122
|
+
end
|
123
|
+
|
113
124
|
test "#update allows to lock the stack" do
|
114
125
|
refute @stack.locked?
|
115
126
|
|
@@ -129,6 +140,30 @@ module Shipit
|
|
129
140
|
assert_instance_of AnonymousUser, @stack.lock_author
|
130
141
|
end
|
131
142
|
|
143
|
+
test "#update allows to archive the stack" do
|
144
|
+
refute @stack.archived?
|
145
|
+
refute @stack.locked?
|
146
|
+
|
147
|
+
patch :update, params: {id: @stack.to_param, stack: {archived: "true"}}
|
148
|
+
@stack.reload
|
149
|
+
assert @stack.archived?
|
150
|
+
assert @stack.locked?
|
151
|
+
assert_equal shipit_users(:walrus), @stack.lock_author
|
152
|
+
assert_equal "Archived", @stack.lock_reason
|
153
|
+
end
|
154
|
+
|
155
|
+
test "#update allows to dearchive the stack" do
|
156
|
+
@stack.archive!(shipit_users(:walrus))
|
157
|
+
assert @stack.locked?
|
158
|
+
assert @stack.archived?
|
159
|
+
|
160
|
+
patch :update, params: {id: @stack.to_param, stack: {archived: "false"}}
|
161
|
+
@stack.reload
|
162
|
+
refute @stack.archived?
|
163
|
+
refute @stack.locked?
|
164
|
+
assert_instance_of AnonymousUser, @stack.lock_author
|
165
|
+
end
|
166
|
+
|
132
167
|
test "#refresh queues a RefreshStatusesJob and a GithubSyncJob" do
|
133
168
|
request.env['HTTP_REFERER'] = stack_settings_path(@stack)
|
134
169
|
|
@@ -7,6 +7,17 @@ module Shipit
|
|
7
7
|
GithubHook.any_instance.stubs(:verify_signature).returns(true)
|
8
8
|
end
|
9
9
|
|
10
|
+
test "create github repository which is not yet present in the datastore" do
|
11
|
+
request.headers['X-Github-Event'] = 'push'
|
12
|
+
unknown_repo_payload = JSON.parse(payload(:push_master))
|
13
|
+
unknown_repo_payload["repository"]["full_name"] = "owner/unknown-repository"
|
14
|
+
unknown_repo_payload = unknown_repo_payload.to_json
|
15
|
+
|
16
|
+
assert_nothing_raised do
|
17
|
+
post :create, body: unknown_repo_payload, as: :json
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
10
21
|
test ":push with the target branch queues a GithubSyncJob" do
|
11
22
|
request.headers['X-Github-Event'] = 'push'
|
12
23
|
|
@@ -142,8 +153,23 @@ module Shipit
|
|
142
153
|
end
|
143
154
|
end
|
144
155
|
|
156
|
+
test "other events trigger custom handlers" do
|
157
|
+
event = 'pull_request'
|
158
|
+
mock_handler = mock
|
159
|
+
mock_handler.expects(:call).with(pull_request_params.stringify_keys).once
|
160
|
+
Shipit::Webhooks.register_handler(event, mock_handler)
|
161
|
+
|
162
|
+
@request.headers['X-Github-Event'] = event
|
163
|
+
post :create, body: pull_request_params.to_json, as: :json
|
164
|
+
assert_response :ok
|
165
|
+
end
|
166
|
+
|
145
167
|
private
|
146
168
|
|
169
|
+
def pull_request_params
|
170
|
+
{action: 'opened', number: 2, pull_request: 'foobar'}
|
171
|
+
end
|
172
|
+
|
147
173
|
def membership_params
|
148
174
|
{action: 'added', team: team_params, organization: {login: 'shopify'}, member: {login: 'walrus'}}
|
149
175
|
end
|
@@ -9,9 +9,24 @@ Rails.application.configure do
|
|
9
9
|
# Do not eager load code on boot.
|
10
10
|
config.eager_load = false
|
11
11
|
|
12
|
-
# Show full error reports
|
13
|
-
config.consider_all_requests_local
|
14
|
-
|
12
|
+
# Show full error reports
|
13
|
+
config.consider_all_requests_local = true
|
14
|
+
|
15
|
+
# Enable/disable caching. By default caching is disabled.
|
16
|
+
# Run rails dev:cache to toggle caching.
|
17
|
+
if Shipit::Engine.root.join("tmp", "caching-dev.txt").exist?
|
18
|
+
config.action_controller.perform_caching = true
|
19
|
+
config.action_controller.enable_fragment_cache_logging = true
|
20
|
+
|
21
|
+
config.cache_store = :memory_store
|
22
|
+
config.public_file_server.headers = {
|
23
|
+
"Cache-Control" => "public, max-age=#{2.days.to_i}",
|
24
|
+
}
|
25
|
+
else
|
26
|
+
config.action_controller.perform_caching = false
|
27
|
+
|
28
|
+
config.cache_store = :null_store
|
29
|
+
end
|
15
30
|
|
16
31
|
# Don't care if the mailer can't send.
|
17
32
|
config.action_mailer.raise_delivery_errors = false
|
@@ -39,8 +54,11 @@ Rails.application.configure do
|
|
39
54
|
# Raises error for missing translations
|
40
55
|
# config.action_view.raise_on_missing_translations = true
|
41
56
|
if Rails.application.config_for(:database)['adapter'] == 'sqlite3'
|
42
|
-
|
57
|
+
config.to_prepare do
|
58
|
+
Shipit::DeferredTouch.enabled = false
|
59
|
+
end
|
43
60
|
end
|
61
|
+
|
44
62
|
config.active_job.queue_adapter = :async
|
45
63
|
|
46
64
|
Pubsubstub.use_persistent_connections = false
|
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: 2020_01_09_132519) do
|
14
14
|
|
15
15
|
create_table "api_clients", force: :cascade do |t|
|
16
16
|
t.text "permissions", limit: 65535
|
@@ -55,6 +55,7 @@ ActiveRecord::Schema.define(version: 2019_05_02_020249) do
|
|
55
55
|
t.string "api_url"
|
56
56
|
t.datetime "created_at", null: false
|
57
57
|
t.datetime "updated_at", null: false
|
58
|
+
t.string "sha", limit: 40
|
58
59
|
t.index ["commit_id", "task_id"], name: "index_commit_deployments_on_commit_id_and_task_id", unique: true
|
59
60
|
t.index ["task_id"], name: "index_commit_deployments_on_task_id"
|
60
61
|
end
|
@@ -190,9 +191,15 @@ ActiveRecord::Schema.define(version: 2019_05_02_020249) do
|
|
190
191
|
t.index ["user_id"], name: "index_deploy_statuses_on_user_id"
|
191
192
|
end
|
192
193
|
|
194
|
+
create_table "repositories", force: :cascade do |t|
|
195
|
+
t.string "owner", limit: 39, null: false
|
196
|
+
t.string "name", limit: 100, null: false
|
197
|
+
t.datetime "created_at", precision: 6, null: false
|
198
|
+
t.datetime "updated_at", precision: 6, null: false
|
199
|
+
t.index ["owner", "name"], name: "repository_unicity", unique: true
|
200
|
+
end
|
201
|
+
|
193
202
|
create_table "stacks", force: :cascade do |t|
|
194
|
-
t.string "repo_name", limit: 100, null: false
|
195
|
-
t.string "repo_owner", limit: 39, null: false
|
196
203
|
t.string "environment", limit: 50, default: "production", null: false
|
197
204
|
t.datetime "created_at"
|
198
205
|
t.datetime "updated_at"
|
@@ -211,7 +218,11 @@ ActiveRecord::Schema.define(version: 2019_05_02_020249) do
|
|
211
218
|
t.datetime "locked_since"
|
212
219
|
t.boolean "merge_queue_enabled", default: false, null: false
|
213
220
|
t.datetime "last_deployed_at"
|
214
|
-
t.
|
221
|
+
t.integer "repository_id", null: false
|
222
|
+
t.datetime "archived_since"
|
223
|
+
t.index ["archived_since"], name: "index_stacks_on_archived_since"
|
224
|
+
t.index ["repository_id", "environment"], name: "stack_unicity", unique: true
|
225
|
+
t.index ["repository_id"], name: "index_stacks_on_repository_id"
|
215
226
|
end
|
216
227
|
|
217
228
|
create_table "statuses", force: :cascade do |t|
|
@@ -228,8 +239,8 @@ ActiveRecord::Schema.define(version: 2019_05_02_020249) do
|
|
228
239
|
|
229
240
|
create_table "tasks", force: :cascade do |t|
|
230
241
|
t.integer "stack_id", limit: 4, null: false
|
231
|
-
t.integer "since_commit_id", limit: 4
|
232
|
-
t.integer "until_commit_id", limit: 4
|
242
|
+
t.integer "since_commit_id", limit: 4
|
243
|
+
t.integer "until_commit_id", limit: 4
|
233
244
|
t.string "status", limit: 10, default: "pending", null: false
|
234
245
|
t.datetime "created_at"
|
235
246
|
t.datetime "updated_at"
|
data/test/dummy/db/seeds.rb
CHANGED
@@ -14,6 +14,8 @@ module Shipit
|
|
14
14
|
Commit.send(:define_method, :refresh_statuses!) {}
|
15
15
|
Commit.send(:define_method, :refresh_check_runs!) {}
|
16
16
|
ReleaseStatus.send(:define_method, :create_status_on_github!) {}
|
17
|
+
CommitDeployment.send(:define_method, :schedule_create_on_github) {}
|
18
|
+
CommitDeploymentStatus.send(:define_method, :schedule_create_on_github) {}
|
17
19
|
|
18
20
|
users = 3.times.map do
|
19
21
|
User.create!(
|
@@ -25,8 +27,10 @@ module Shipit
|
|
25
27
|
|
26
28
|
stacks = 3.times.map do
|
27
29
|
Stack.create!(
|
28
|
-
|
29
|
-
|
30
|
+
repository: Repository.find_or_create_by(
|
31
|
+
name: Faker::Internet.domain_name.parameterize,
|
32
|
+
owner: Faker::Company.name.parameterize
|
33
|
+
),
|
30
34
|
deploy_url: "https://#{Faker::Internet.domain_name.parameterize}.#{Faker::Internet.domain_suffix}/",
|
31
35
|
cached_deploy_spec: DeploySpec.load(%(
|
32
36
|
{
|
@@ -195,9 +199,19 @@ module Shipit
|
|
195
199
|
)
|
196
200
|
write_output(rollback)
|
197
201
|
|
198
|
-
|
199
|
-
|
200
|
-
|
202
|
+
provision_task = stack.tasks.create!(
|
203
|
+
status: "pending",
|
204
|
+
user: users.sample,
|
205
|
+
definition: TaskDefinition.new('provision',
|
206
|
+
'action' => 'Provision some resources',
|
207
|
+
'description' => 'Provisions servers for the application to be deployed to',
|
208
|
+
'steps' => ['./provision.sh'],
|
209
|
+
),
|
210
|
+
started_at: Random.rand(15.minutes.to_i).seconds.ago,
|
211
|
+
)
|
212
|
+
write_output(provision_task)
|
213
|
+
|
214
|
+
restart_task = stack.tasks.create!(
|
201
215
|
status: "success",
|
202
216
|
user: users.sample,
|
203
217
|
definition: TaskDefinition.new('restart',
|
@@ -208,6 +222,6 @@ module Shipit
|
|
208
222
|
started_at: Random.rand(15.minutes.to_i).seconds.ago,
|
209
223
|
ended_at: Time.now.utc,
|
210
224
|
)
|
211
|
-
write_output(
|
225
|
+
write_output(restart_task)
|
212
226
|
end
|
213
227
|
end
|
@@ -1,6 +1,6 @@
|
|
1
|
-
|
1
|
+
shipit_deploy_second_in_progress:
|
2
2
|
commit_deployment: shipit_deploy_second
|
3
|
-
status:
|
3
|
+
status: in_progress
|
4
4
|
github_id: 42
|
5
5
|
api_url: https://api.github.com/repos/shopify/shipit-engine/deployments/1/statuses/42
|
6
6
|
|
@@ -10,9 +10,9 @@ shipit_deploy_second_success:
|
|
10
10
|
github_id: 43
|
11
11
|
api_url: https://api.github.com/repos/shopify/shipit-engine/deployments/1/statuses/43
|
12
12
|
|
13
|
-
|
13
|
+
shipit2_deploy_third_in_progress:
|
14
14
|
commit_deployment: shipit2_deploy_third
|
15
|
-
status:
|
15
|
+
status: in_progress
|
16
16
|
|
17
17
|
shipit2_deploy_third_failure:
|
18
18
|
commit_deployment: shipit2_deploy_third
|
@@ -1,37 +1,37 @@
|
|
1
1
|
shipit_deploy_second:
|
2
|
-
|
2
|
+
sha: f890fd8b5f2be05d1fedb763a3605ee461c39074 # second
|
3
3
|
task_id: 1 # shipit
|
4
4
|
api_url: https://api.github.com/repos/shopify/shipit-engine/deployments/1
|
5
5
|
github_id: 1
|
6
6
|
|
7
7
|
shipit2_deploy_third:
|
8
|
-
|
8
|
+
sha: 367578b362bf2b4df5903e1c7960929361c39074 # third
|
9
9
|
task_id: 2 # shipit2
|
10
10
|
api_url: https://api.github.com/repos/shopify/shipit-engine/deployments/2
|
11
11
|
github_id: 2
|
12
12
|
|
13
13
|
shipit_pending_third:
|
14
|
-
|
14
|
+
sha: 367578b362bf2b4df5903e1c7960929361c39074 # third
|
15
15
|
task_id: 4 # shipit_pending
|
16
16
|
api_url: https://api.github.com/repos/shopify/shipit-engine/deployments/3
|
17
17
|
github_id: 3
|
18
18
|
|
19
19
|
shipit_pending_fourth:
|
20
|
-
|
20
|
+
sha: 467578b362bf2b4df5903e1c7960929361c3435a # fourth
|
21
21
|
task_id: 4 # shipit_pending
|
22
22
|
|
23
23
|
shipit_running_fourth:
|
24
|
-
|
24
|
+
sha: 467578b362bf2b4df5903e1c7960929361c3435a # fourth
|
25
25
|
task_id: 5 # shipit_running
|
26
26
|
|
27
27
|
shipit_complete_fourth:
|
28
|
-
|
28
|
+
sha: 467578b362bf2b4df5903e1c7960929361c3435a # fourth
|
29
29
|
task_id: 6 # shipit_complete
|
30
30
|
|
31
31
|
shipit_aborted_fourth:
|
32
|
-
|
32
|
+
sha: 467578b362bf2b4df5903e1c7960929361c3435a # fourth
|
33
33
|
task_id: 7 # shipit_aborted
|
34
34
|
|
35
35
|
shipit_rollback_fourth:
|
36
|
-
|
36
|
+
sha: 467578b362bf2b4df5903e1c7960929361c3435a # fourth
|
37
37
|
task_id: 8 # shipit_rollback
|