shipit-engine 0.20.1 → 0.21.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/README.md +43 -6
- data/app/assets/stylesheets/_base/_base.scss +4 -0
- data/app/assets/stylesheets/_pages/_commits.scss +3 -1
- data/app/assets/stylesheets/_pages/_deploy.scss +4 -2
- data/app/controllers/concerns/shipit/authentication.rb +1 -1
- data/app/controllers/shipit/api/base_controller.rb +6 -1
- data/app/controllers/shipit/api/pull_requests_controller.rb +1 -1
- data/app/controllers/shipit/commit_checks_controller.rb +1 -1
- data/app/controllers/shipit/shipit_controller.rb +1 -5
- data/app/controllers/shipit/stacks_controller.rb +2 -0
- data/app/controllers/shipit/tasks_controller.rb +1 -1
- data/app/controllers/shipit/webhooks_controller.rb +2 -2
- data/app/helpers/shipit/deploys_helper.rb +9 -0
- data/app/helpers/shipit/shipit_helper.rb +17 -15
- data/app/helpers/shipit/stacks_helper.rb +6 -1
- data/app/jobs/shipit/destroy_stack_job.rb +4 -2
- data/app/jobs/shipit/fetch_deployed_revision_job.rb +1 -1
- data/app/jobs/shipit/github_sync_job.rb +1 -1
- data/app/jobs/shipit/merge_pull_requests_job.rb +3 -3
- data/app/jobs/shipit/perform_task_job.rb +3 -0
- data/app/jobs/shipit/purge_old_deliveries_job.rb +1 -0
- data/app/models/shipit/api_client.rb +1 -1
- data/app/models/shipit/commit.rb +29 -6
- data/app/models/shipit/commit_deployment.rb +1 -1
- data/app/models/shipit/commit_deployment_status.rb +1 -1
- data/app/models/shipit/deploy_spec.rb +19 -2
- data/app/models/shipit/deploy_spec/bundler_discovery.rb +1 -10
- data/app/models/shipit/deploy_spec/file_system.rb +6 -0
- data/app/models/shipit/deploy_spec/kubernetes_discovery.rb +1 -1
- data/app/models/shipit/deploy_spec/lerna_discovery.rb +85 -0
- data/app/models/shipit/deploy_spec/npm_discovery.rb +103 -5
- data/app/models/shipit/deploy_spec/pypi_discovery.rb +4 -2
- data/app/models/shipit/deploy_spec/rubygems_discovery.rb +4 -2
- data/app/models/shipit/duration.rb +1 -1
- data/app/models/shipit/github_status.rb +1 -1
- data/app/models/shipit/hook.rb +4 -5
- data/app/models/shipit/output_chunk.rb +1 -1
- data/app/models/shipit/pull_request.rb +36 -15
- data/app/models/shipit/stack.rb +15 -9
- data/app/models/shipit/status/common.rb +4 -0
- data/app/models/shipit/status/group.rb +4 -0
- data/app/models/shipit/task.rb +20 -8
- data/app/models/shipit/task_definition.rb +2 -2
- data/app/models/shipit/undeployed_commit.rb +13 -2
- data/app/models/shipit/user.rb +1 -1
- data/app/serializers/shipit/pull_request_serializer.rb +1 -1
- data/app/serializers/shipit/tail_task_serializer.rb +1 -1
- data/app/views/shipit/ccmenu/project.xml.builder +9 -8
- data/app/views/shipit/deploys/_deploy.html.erb +3 -2
- data/app/views/shipit/stacks/_banners.html.erb +4 -1
- data/app/views/shipit/stacks/settings.html.erb +4 -0
- data/app/views/shipit/statuses/_group.html.erb +1 -1
- data/app/views/shipit/statuses/_status.html.erb +1 -1
- data/app/views/shipit/tasks/_task.html.erb +1 -2
- data/config/locales/en.yml +2 -0
- data/config/secrets.development.example.yml +0 -4
- data/config/secrets.development.shopify.yml +1 -5
- data/db/migrate/20170904103242_reindex_deliveries.rb +7 -0
- data/db/migrate/20171120161420_add_base_info_to_pull_request.rb +7 -0
- data/db/migrate/20180202220850_add_aborted_by_to_tasks.rb +5 -0
- data/lib/shipit.rb +15 -23
- data/lib/shipit/command.rb +11 -3
- data/lib/shipit/engine.rb +0 -4
- data/lib/shipit/stack_commands.rb +3 -1
- data/lib/shipit/version.rb +1 -1
- data/lib/snippets/assert-lerna-fixed-version-tag +21 -0
- data/lib/snippets/assert-lerna-independent-version-tags +28 -0
- data/lib/snippets/generate-local-npmrc +19 -0
- data/lib/snippets/misconfigured-npm-publish-config +8 -0
- data/lib/snippets/publish-lerna-independent-packages +39 -0
- data/lib/snippets/push-to-heroku +5 -5
- data/lib/tasks/cron.rake +1 -1
- data/lib/tasks/dev.rake +1 -1
- data/test/controllers/api/deploys_controller_test.rb +19 -0
- data/test/controllers/api/stacks_controller_test.rb +1 -1
- data/test/controllers/github_authentication_controller_test.rb +1 -1
- data/test/controllers/stacks_controller_test.rb +10 -0
- data/test/controllers/tasks_controller_test.rb +2 -0
- data/test/controllers/webhooks_controller_test.rb +0 -7
- data/test/dummy/config/secrets.yml +0 -2
- data/test/dummy/db/development.sqlite3 +0 -0
- data/test/dummy/db/schema.rb +5 -3
- data/test/dummy/db/test.sqlite3 +0 -0
- data/test/fixtures/shipit/commits.yml +53 -0
- data/test/fixtures/shipit/pull_requests.yml +52 -0
- data/test/fixtures/shipit/stacks.yml +35 -0
- data/test/fixtures/shipit/statuses.yml +27 -0
- data/test/fixtures/shipit/tasks.yml +14 -0
- data/test/helpers/queries_helper.rb +1 -1
- data/test/jobs/merge_pull_requests_job_test.rb +19 -2
- data/test/jobs/perform_task_job_test.rb +26 -2
- data/test/models/commits_test.rb +55 -6
- data/test/models/deploy_spec_test.rb +288 -52
- data/test/models/deploys_test.rb +7 -7
- data/test/models/hook_test.rb +4 -3
- data/test/models/pull_request_test.rb +78 -24
- data/test/models/stacks_test.rb +21 -17
- data/test/models/status/group_test.rb +6 -0
- data/test/models/undeployed_commits_test.rb +9 -0
- data/test/models/users_test.rb +2 -2
- data/test/test_helper.rb +1 -1
- metadata +211 -222
- data/app/assets/javascripts/shipit_bs.js.coffee +0 -2
- data/app/assets/stylesheets/shipit_bs.scss +0 -22
- data/app/views/bootstrap/shipit/missing_settings.html.erb +0 -97
- data/app/views/bootstrap/shipit/stacks/new.html.erb +0 -44
- data/app/views/layouts/shipit_bootstrap.html.erb +0 -44
- data/lib/shipit/template_renderer_extension.rb +0 -16
data/lib/shipit/command.rb
CHANGED
@@ -8,11 +8,19 @@ module Shipit
|
|
8
8
|
MAX_READ = 64.kilobytes
|
9
9
|
|
10
10
|
Error = Class.new(StandardError)
|
11
|
-
Failed = Class.new(Error)
|
12
11
|
NotFound = Class.new(Error)
|
13
12
|
Denied = Class.new(Error)
|
14
13
|
TimedOut = Class.new(Error)
|
15
14
|
|
15
|
+
class Failed < Error
|
16
|
+
attr_reader :exit_code
|
17
|
+
|
18
|
+
def initialize(message, exit_code)
|
19
|
+
super(message)
|
20
|
+
@exit_code = exit_code
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
16
24
|
attr_reader :out, :code, :chdir, :env, :args, :pid, :timeout
|
17
25
|
|
18
26
|
def initialize(*args, default_timeout: Shipit.default_inactivity_timeout, env: {}, chdir:)
|
@@ -44,7 +52,7 @@ module Shipit
|
|
44
52
|
end
|
45
53
|
|
46
54
|
def success?
|
47
|
-
code
|
55
|
+
!code.nil? && code.zero?
|
48
56
|
end
|
49
57
|
|
50
58
|
def exit_message
|
@@ -121,7 +129,7 @@ module Shipit
|
|
121
129
|
|
122
130
|
def stream!(&block)
|
123
131
|
stream(&block)
|
124
|
-
raise Failed.new(exit_message) unless success?
|
132
|
+
raise Failed.new(exit_message, code) unless success?
|
125
133
|
self
|
126
134
|
end
|
127
135
|
|
data/lib/shipit/engine.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
require 'bootstrap'
|
2
|
-
|
3
1
|
module Shipit
|
4
2
|
class Engine < ::Rails::Engine
|
5
3
|
isolate_namespace Shipit
|
@@ -17,8 +15,6 @@ module Shipit
|
|
17
15
|
task.js
|
18
16
|
shipit.js
|
19
17
|
shipit.css
|
20
|
-
shipit_bs.js
|
21
|
-
shipit_bs.css
|
22
18
|
)
|
23
19
|
app.config.assets.precompile << proc do |path|
|
24
20
|
path =~ %r{\Aplugins/[\-\w]+\.(js|css)\Z}
|
@@ -26,7 +26,7 @@ module Shipit
|
|
26
26
|
end
|
27
27
|
|
28
28
|
def fetch_deployed_revision
|
29
|
-
with_temporary_working_directory do |dir|
|
29
|
+
with_temporary_working_directory(commit: @stack.commits.last) do |dir|
|
30
30
|
spec = DeploySpec::FileSystem.new(dir, @stack.environment)
|
31
31
|
outputs = spec.fetch_deployed_revision_steps!.map do |command_line|
|
32
32
|
Command.new(command_line, env: env, chdir: dir).run
|
@@ -42,6 +42,8 @@ module Shipit
|
|
42
42
|
end
|
43
43
|
|
44
44
|
def with_temporary_working_directory(commit: nil)
|
45
|
+
commit ||= @stack.last_deployed_commit.presence || @stack.commits.last
|
46
|
+
|
45
47
|
@stack.acquire_git_cache_lock do
|
46
48
|
if !commit || !fetched?(commit).tap(&:run).success?
|
47
49
|
fetch.run!
|
data/lib/shipit/version.rb
CHANGED
@@ -0,0 +1,21 @@
|
|
1
|
+
#!/usr/bin/env bash
|
2
|
+
|
3
|
+
VERSION=$(node --eval "console.log(require('./lerna.json').version);")
|
4
|
+
echo -e "\033[0;32mTrying to publish version $VERSION\033[0m"
|
5
|
+
|
6
|
+
git tag | grep "^v$VERSION$" > /dev/null
|
7
|
+
if [ $? != '0' ]; then
|
8
|
+
echo -e "\033[1;31mYou need to create the \033[0;33mv$VERSION\033[1;31m tag first.\033[0m"
|
9
|
+
exit 1
|
10
|
+
fi
|
11
|
+
|
12
|
+
TAG_REV=$(git rev-list -n1 "v$VERSION")
|
13
|
+
HEAD_REV=$(git rev-parse HEAD)
|
14
|
+
|
15
|
+
if [ "$TAG_REV" != "$HEAD_REV" ]; then
|
16
|
+
echo -e "\033[1;31mYou're attempting to publish \033[0;33m$HEAD_REV\033[1;31m as \033[0;33mv$VERSION\033[1;31m but it already points to \033[0;33m$TAG_REV\033[1;31m.\033[0m"
|
17
|
+
exit 1
|
18
|
+
fi
|
19
|
+
|
20
|
+
echo -e "\033[0;32mAll clear!\033[0m"
|
21
|
+
exit 0
|
@@ -0,0 +1,28 @@
|
|
1
|
+
#!/usr/bin/env bash
|
2
|
+
|
3
|
+
TAGS=$(git tag --points-at HEAD)
|
4
|
+
|
5
|
+
if [ -z "$TAGS" ]; then
|
6
|
+
HEAD_REV=$(git rev-parse HEAD)
|
7
|
+
echo -e "\033[1;31mNo tags associated with $HEAD_REV. Did you push your commits and tags?\033[0m"
|
8
|
+
exit 1
|
9
|
+
fi
|
10
|
+
|
11
|
+
for TAG in $TAGS
|
12
|
+
do
|
13
|
+
if [[ "${TAG}" == @* ]]; then
|
14
|
+
TAG=$(echo "$TAG" | cut -d \/ -f 2)
|
15
|
+
fi
|
16
|
+
|
17
|
+
PACKAGE_NAME=$(echo "$TAG" | cut -d \@ -f 1)
|
18
|
+
TAG_PACKAGE_VERSION=$(echo "$TAG" | cut -d \@ -f 2)
|
19
|
+
ACTUAL_PACKAGE_VERSION=$(node -e "console.log(require('./packages/$PACKAGE_NAME/package.json').version)")
|
20
|
+
|
21
|
+
if [ "$TAG_PACKAGE_VERSION" != "$ACTUAL_PACKAGE_VERSION" ]; then
|
22
|
+
echo -e "\033[1;31m$PACKAGE_NAME is tagged as $TAG_PACKAGE_VERSION, but its package.json version is $ACTUAL_PACKAGE_VERSION.\033[0m"
|
23
|
+
exit 1
|
24
|
+
fi
|
25
|
+
done
|
26
|
+
|
27
|
+
echo -e "\033[0;32mAll clear!\033[0m"
|
28
|
+
exit 0
|
@@ -0,0 +1,19 @@
|
|
1
|
+
#!/usr/bin/env node
|
2
|
+
const {resolve} = require('path');
|
3
|
+
const {existsSync, writeFileSync, readFileSync} = require('fs');
|
4
|
+
const npmrc = resolve('.', '.npmrc');
|
5
|
+
const npmrcContents = process.argv[2];
|
6
|
+
|
7
|
+
if (!npmrcContents) {
|
8
|
+
console.error('npmrc contents not specified.');
|
9
|
+
process.exit(1);
|
10
|
+
}
|
11
|
+
|
12
|
+
if (existsSync(npmrc)) {
|
13
|
+
console.log('.npmrc already exists.')
|
14
|
+
} else {
|
15
|
+
writeFileSync(npmrc, npmrcContents)
|
16
|
+
|
17
|
+
console.log('\nGenerated .npmrc:');
|
18
|
+
console.log(readFileSync(npmrc, {encoding: 'utf8'}))
|
19
|
+
}
|
@@ -0,0 +1,8 @@
|
|
1
|
+
#!/usr/bin/env bash
|
2
|
+
|
3
|
+
echo -e "\033[1;31m Misconfigured package.json, please ensure the following has been met:\n \033[0m"
|
4
|
+
|
5
|
+
echo -e "\033[1;31m * Please add a publishConfig with an access setting in your package.json. e.g.,\033[0m"
|
6
|
+
echo -e "\n\033[1;31m\t\"publishConfig:\" {\n\t \"access\": \"<public|restricted>\" \n\t} \033[0m"
|
7
|
+
echo -e "\n\033[1;31m * If your package is private, ensure your the package name is scoped (@organization/package) \033[0m"
|
8
|
+
exit 1
|
@@ -0,0 +1,39 @@
|
|
1
|
+
#!/usr/bin/env node
|
2
|
+
const {resolve} = require('path');
|
3
|
+
const {execSync} = require('child_process')
|
4
|
+
const Repository = require(resolve('.', 'node_modules', 'lerna', 'lib', 'Repository'));
|
5
|
+
const PackageUtilities = require(resolve('.', 'node_modules', 'lerna', 'lib', 'PackageUtilities'));
|
6
|
+
|
7
|
+
function npmTag(version) {
|
8
|
+
const isNext = ['-beta', '-alpha', '-rc', '-next'].some(distributionType =>
|
9
|
+
version.includes(distributionType),
|
10
|
+
);
|
11
|
+
return isNext ? 'next' : 'latest';
|
12
|
+
}
|
13
|
+
|
14
|
+
const taggedPackages = execSync('git tag --points-at HEAD')
|
15
|
+
.toString()
|
16
|
+
.trim()
|
17
|
+
.split('\n')
|
18
|
+
.map(tag => {
|
19
|
+
if (tag.startsWith('@')) {
|
20
|
+
return `@${tag.split('@')[1]}`;
|
21
|
+
}
|
22
|
+
return tag.split('@')[0];
|
23
|
+
});
|
24
|
+
|
25
|
+
const repository = new Repository('.');
|
26
|
+
const unsortedPackages = PackageUtilities.getPackages({rootPath: '.', packageConfigs: repository.packageConfigs});
|
27
|
+
const packages = PackageUtilities.topologicallyBatchPackages(unsortedPackages, true)
|
28
|
+
.reduce((acc, packageGroup) => [...acc, ...packageGroup], [])
|
29
|
+
.filter(({name}) => taggedPackages.includes(name));
|
30
|
+
|
31
|
+
packages.forEach(({name, version}) => {
|
32
|
+
const command = `node_modules/.bin/lerna publish --yes --npm-client=npm --skip-npm=false --skip-git --force-publish=${name} --repo-version=${version} --scope=${name} --npm-tag=${npmTag(
|
33
|
+
version,
|
34
|
+
)}`;
|
35
|
+
|
36
|
+
// eslint-disable-next-line no-console
|
37
|
+
console.log(command);
|
38
|
+
require('child_process').execSync(command);
|
39
|
+
});
|
data/lib/snippets/push-to-heroku
CHANGED
@@ -23,17 +23,17 @@ if [[ -z "${HEROKU_APP}" ]]; then
|
|
23
23
|
exit 1;
|
24
24
|
fi
|
25
25
|
|
26
|
-
echo "$HEROKU_RELEASES" |
|
26
|
+
echo "$HEROKU_RELEASES" | grep 'Current: \(v[0-9]\+\)' >/dev/null
|
27
27
|
|
28
28
|
if [[ $? -ne 0 ]]; then
|
29
29
|
red "Error detecting current heroku release. Message from 'heroku releases':"
|
30
30
|
echo "${HEROKU_RELEASES}"
|
31
31
|
red "Please contact a heroku collaborator for ${HEROKU_APP}:"
|
32
|
-
heroku
|
32
|
+
heroku access --app $HEROKU_APP
|
33
33
|
exit 1;
|
34
34
|
fi
|
35
35
|
|
36
|
-
HEROKU_LAST_GOOD_RELEASE=`echo "$HEROKU_RELEASES" |
|
36
|
+
HEROKU_LAST_GOOD_RELEASE=`echo "$HEROKU_RELEASES" | grep 'Current: \(v[0-9]\+\)' | sed -e 's/.*\(v[0-9]\+\).*/\1/'`
|
37
37
|
green "Current heroku release: ${HEROKU_LAST_GOOD_RELEASE}"
|
38
38
|
|
39
39
|
green "Pushing to heroku."
|
@@ -41,7 +41,7 @@ $GIT_COMMAND
|
|
41
41
|
if [[ $? -ne 0 ]]; then
|
42
42
|
red "Heroku push rejected. See message above."
|
43
43
|
red "Please contact a heroku collaborator for ${HEROKU_APP}:"
|
44
|
-
heroku
|
44
|
+
heroku access --app $HEROKU_APP
|
45
45
|
exit 1;
|
46
46
|
fi
|
47
47
|
|
@@ -58,7 +58,7 @@ if [[ "${MIGRATION_STATUS}" != "" ]]; then
|
|
58
58
|
if [[ "${POST_MIGRATION_STATUS}" != "" ]]; then
|
59
59
|
red "Migration failed! This is bad."
|
60
60
|
red "Please contact a heroku collaborator for ${HEROKU_APP}:"
|
61
|
-
heroku
|
61
|
+
heroku access --app $HEROKU_APP
|
62
62
|
red "The app ${HEROKU_APP} will now be reverted to its last working version ${HEROKU_LAST_GOOD_RELEASE}."
|
63
63
|
heroku releases:rollback $HEROKU_LAST_GOOD_RELEASE --app $HEROKU_APP
|
64
64
|
red "Abort."
|
data/lib/tasks/cron.rake
CHANGED
data/lib/tasks/dev.rake
CHANGED
@@ -40,6 +40,13 @@ module Shipit
|
|
40
40
|
deploy.user == @user
|
41
41
|
end
|
42
42
|
|
43
|
+
test "#create normalises the claimed user" do
|
44
|
+
request.headers['X-Shipit-User'] = @user.login.swapcase
|
45
|
+
post :create, params: {stack_id: @stack.to_param, sha: @commit.sha}
|
46
|
+
deploy = Deploy.last
|
47
|
+
assert_equal deploy.user, @user
|
48
|
+
end
|
49
|
+
|
43
50
|
test "#create renders a 422 if the sha isn't found" do
|
44
51
|
post :create, params: {stack_id: @stack.to_param, sha: '123443543545'}
|
45
52
|
assert_response :unprocessable_entity
|
@@ -52,6 +59,18 @@ module Shipit
|
|
52
59
|
assert_json 'errors', 'sha' => ['is too short (minimum is 6 characters)']
|
53
60
|
end
|
54
61
|
|
62
|
+
test "#create renders a 409 if a concurrent task is already running" do
|
63
|
+
assert_difference -> { @stack.deploys.count }, 1 do
|
64
|
+
post :create, params: {stack_id: @stack.to_param, sha: @commit.sha}
|
65
|
+
end
|
66
|
+
|
67
|
+
assert_no_difference -> { @stack.deploys.count } do
|
68
|
+
post :create, params: {stack_id: @stack.to_param, sha: @commit.sha}
|
69
|
+
end
|
70
|
+
|
71
|
+
assert_response :conflict
|
72
|
+
end
|
73
|
+
|
55
74
|
test "#create refuses to deploy locked stacks" do
|
56
75
|
@stack.update!(lock_reason: 'Something broken')
|
57
76
|
|
@@ -149,6 +149,11 @@ module Shipit
|
|
149
149
|
assert_redirected_to stack_settings_path(@stack)
|
150
150
|
end
|
151
151
|
|
152
|
+
test "#sync_webhooks displays a flash message" do
|
153
|
+
post :sync_webhooks, params: {id: @stack.to_param}
|
154
|
+
assert_equal 'Webhooks syncing scheduled', flash[:success]
|
155
|
+
end
|
156
|
+
|
152
157
|
test "#clear_git_cache queues a ClearGitCacheJob" do
|
153
158
|
assert_enqueued_with(job: ClearGitCacheJob, args: [@stack]) do
|
154
159
|
post :clear_git_cache, params: {id: @stack.to_param}
|
@@ -156,6 +161,11 @@ module Shipit
|
|
156
161
|
assert_redirected_to stack_settings_path(@stack)
|
157
162
|
end
|
158
163
|
|
164
|
+
test "#clear_git_cache displays a flash message" do
|
165
|
+
post :clear_git_cache, params: {id: @stack.to_param}
|
166
|
+
assert_equal 'Git Cache clearing scheduled', flash[:success]
|
167
|
+
end
|
168
|
+
|
159
169
|
test "#update redirects to return_to parameter" do
|
160
170
|
patch :update, params: {id: @stack.to_param, stack: {ignore_ci: false}, return_to: stack_path(@stack)}
|
161
171
|
assert_redirected_to stack_path(@stack)
|
@@ -70,6 +70,7 @@ module Shipit
|
|
70
70
|
@task.reload
|
71
71
|
assert_response :success
|
72
72
|
assert_equal 'aborting', @task.reload.status
|
73
|
+
assert_equal shipit_users(:walrus).id, @task.aborted_by_id
|
73
74
|
assert_equal false, @task.rollback_once_aborted?
|
74
75
|
end
|
75
76
|
|
@@ -81,6 +82,7 @@ module Shipit
|
|
81
82
|
@task.reload
|
82
83
|
assert_response :success
|
83
84
|
assert_equal 'aborting', @task.status
|
85
|
+
assert_equal shipit_users(:walrus).id, @task.aborted_by_id
|
84
86
|
assert_equal true, @task.rollback_once_aborted?
|
85
87
|
end
|
86
88
|
|
@@ -150,13 +150,6 @@ module Shipit
|
|
150
150
|
end
|
151
151
|
end
|
152
152
|
|
153
|
-
test ":membership can append a user membership for an organization with capitals" do
|
154
|
-
assert_difference -> { Membership.count }, 1 do
|
155
|
-
post :membership, params: membership_params.merge(organization: {login: 'Shopify'}, member: {login: 'bob'})
|
156
|
-
assert_response :ok
|
157
|
-
end
|
158
|
-
end
|
159
|
-
|
160
153
|
private
|
161
154
|
|
162
155
|
def membership_params
|
Binary file
|
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: 20180202220850) do
|
14
14
|
|
15
15
|
create_table "api_clients", force: :cascade do |t|
|
16
16
|
t.text "permissions", limit: 65535
|
@@ -80,9 +80,8 @@ ActiveRecord::Schema.define(version: 20170629141736) do
|
|
80
80
|
t.datetime "delivered_at"
|
81
81
|
t.datetime "created_at", null: false
|
82
82
|
t.datetime "updated_at", null: false
|
83
|
-
t.index ["created_at"], name: "index_deliveries_on_created_at"
|
84
83
|
t.index ["hook_id", "event", "status"], name: "index_deliveries_on_hook_id_and_event_and_status"
|
85
|
-
t.index ["
|
84
|
+
t.index ["hook_id", "status"], name: "index_deliveries_on_hook_id_and_status"
|
86
85
|
end
|
87
86
|
|
88
87
|
create_table "github_hooks", force: :cascade do |t|
|
@@ -148,6 +147,8 @@ ActiveRecord::Schema.define(version: 20170629141736) do
|
|
148
147
|
t.string "branch"
|
149
148
|
t.datetime "revalidated_at"
|
150
149
|
t.datetime "merged_at"
|
150
|
+
t.string "base_ref", limit: 1024
|
151
|
+
t.integer "base_commit_id"
|
151
152
|
t.index ["head_id"], name: "index_pull_requests_on_head_id"
|
152
153
|
t.index ["merge_requested_by_id"], name: "index_pull_requests_on_merge_requested_by_id"
|
153
154
|
t.index ["merge_status"], name: "index_pull_requests_on_merge_status"
|
@@ -215,6 +216,7 @@ ActiveRecord::Schema.define(version: 20170629141736) do
|
|
215
216
|
t.datetime "started_at"
|
216
217
|
t.datetime "ended_at"
|
217
218
|
t.boolean "ignored_safeties", default: false, null: false
|
219
|
+
t.integer "aborted_by_id"
|
218
220
|
t.index ["rolled_up", "created_at", "status"], name: "index_tasks_on_rolled_up_and_created_at_and_status"
|
219
221
|
t.index ["since_commit_id"], name: "index_tasks_on_since_commit_id"
|
220
222
|
t.index ["stack_id", "allow_concurrency", "status"], name: "index_active_tasks"
|
data/test/dummy/db/test.sqlite3
CHANGED
Binary file
|
@@ -102,3 +102,56 @@ shipit_pending_pr_head:
|
|
102
102
|
deletions: 24
|
103
103
|
updated_at: <%= 8.days.ago.to_s(:db) %>
|
104
104
|
detached: true
|
105
|
+
|
106
|
+
cyclimse_merged:
|
107
|
+
id: 9
|
108
|
+
sha: 772b4795871e4a45aa17d53f02aa45d0
|
109
|
+
message: "Merge pull request #66 from cyclimse/yoloshipit\n\nyoloshipit!"
|
110
|
+
stack: cyclimse
|
111
|
+
author: walrus
|
112
|
+
committer: walrus
|
113
|
+
authored_at: <%= 4.days.ago.to_s(:db) %>
|
114
|
+
committed_at: <%= 3.days.ago.to_s(:db) %>
|
115
|
+
additions: 420
|
116
|
+
deletions: 342
|
117
|
+
updated_at: <%= 8.days.ago.to_s(:db) %>
|
118
|
+
pull_request_id: 99
|
119
|
+
|
120
|
+
soc_first:
|
121
|
+
id: 101
|
122
|
+
sha: 5e9278037b872fd9a6690523e411ecb3aa181355
|
123
|
+
message: "lets go"
|
124
|
+
stack: soc
|
125
|
+
author: walrus
|
126
|
+
committer: walrus
|
127
|
+
authored_at: <%= 10.days.ago.to_s(:db) %>
|
128
|
+
committed_at: <%= 9.days.ago.to_s(:db) %>
|
129
|
+
additions: 42
|
130
|
+
deletions: 24
|
131
|
+
updated_at: <%= 8.days.ago.to_s(:db) %>
|
132
|
+
|
133
|
+
soc_second:
|
134
|
+
id: 102
|
135
|
+
sha: e790fd8b5f2be05d1fedb763a3605ee461c39074
|
136
|
+
message: "sheep it!"
|
137
|
+
stack: soc
|
138
|
+
author: walrus
|
139
|
+
committer: walrus
|
140
|
+
authored_at: <%= 8.days.ago.to_s(:db) %>
|
141
|
+
committed_at: <%= 7.days.ago.to_s(:db) %>
|
142
|
+
additions: 1
|
143
|
+
deletions: 1
|
144
|
+
updated_at: <%= 8.days.ago.to_s(:db) %>
|
145
|
+
|
146
|
+
soc_third:
|
147
|
+
id: 103
|
148
|
+
sha: 477578b362bf2b4df5903e1c7960929361c39074
|
149
|
+
message: "fix it!"
|
150
|
+
stack: soc
|
151
|
+
author: walrus
|
152
|
+
committer: walrus
|
153
|
+
authored_at: <%= 6.days.ago.to_s(:db) %>
|
154
|
+
committed_at: <%= 5.days.ago.to_s(:db) %>
|
155
|
+
additions: 12
|
156
|
+
deletions: 64
|
157
|
+
updated_at: <%= 8.days.ago.to_s(:db) %>
|