shipit-engine 0.44.2 → 0.45.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/stylesheets/shipit.css.erb +2081 -0
  3. data/app/jobs/shipit/github_sync_job.rb +3 -0
  4. data/app/views/layouts/merge_status.html.erb +0 -1
  5. data/lib/shipit/engine.rb +0 -1
  6. data/lib/shipit/version.rb +1 -1
  7. data/lib/shipit.rb +0 -1
  8. data/test/dummy/config/application.rb +1 -1
  9. data/test/dummy/db/schema.rb +149 -150
  10. data/test/jobs/github_sync_job_test.rb +8 -0
  11. metadata +7 -40
  12. data/app/assets/stylesheets/_base/_banner.scss +0 -74
  13. data/app/assets/stylesheets/_base/_base.scss +0 -249
  14. data/app/assets/stylesheets/_base/_buttons.scss +0 -62
  15. data/app/assets/stylesheets/_base/_colors.scss +0 -19
  16. data/app/assets/stylesheets/_base/_forms.scss +0 -48
  17. data/app/assets/stylesheets/_base/_icons.scss +0 -26
  18. data/app/assets/stylesheets/_base/_media-queries.scss +0 -17
  19. data/app/assets/stylesheets/_base/_spacing.scss +0 -21
  20. data/app/assets/stylesheets/_base/_status-items.scss +0 -166
  21. data/app/assets/stylesheets/_base/_utility.scss +0 -15
  22. data/app/assets/stylesheets/_pages/_commits.scss +0 -354
  23. data/app/assets/stylesheets/_pages/_deploy.scss +0 -282
  24. data/app/assets/stylesheets/_pages/_repositories.scss +0 -148
  25. data/app/assets/stylesheets/_pages/_settings.scss +0 -24
  26. data/app/assets/stylesheets/_pages/_stacks.scss +0 -255
  27. data/app/assets/stylesheets/_structure/_layout.scss +0 -70
  28. data/app/assets/stylesheets/_structure/_main.scss +0 -154
  29. data/app/assets/stylesheets/_structure/_navigation.scss +0 -89
  30. data/app/assets/stylesheets/merge_status.scss +0 -0
  31. data/app/assets/stylesheets/shipit.scss +0 -21
@@ -1,74 +0,0 @@
1
- // =============================================================================
2
- // BANNERS
3
- // =============================================================================
4
-
5
- .banner {
6
- background: $blue;
7
- padding: 1.75rem 0;
8
- position: relative;
9
-
10
- a {
11
- color: #fff;
12
- }
13
-
14
- .icon {
15
- background-color: #fff;
16
- }
17
- }
18
-
19
- .banner__inner {
20
- display: flex;
21
- align-items: center;
22
- }
23
-
24
- .banner__title {
25
- color: #fff;
26
- margin-bottom: .5rem;
27
- }
28
-
29
- .banner__text {
30
- color: rgba(#000, .6);
31
- line-height: 1.3em;
32
- margin-bottom: 0;
33
- }
34
-
35
- .banner__btn {
36
- margin-top: 1rem;
37
-
38
- .banner__accessory & {
39
- margin-top: 0;
40
- }
41
- }
42
-
43
- .banner__dismiss {
44
- color: rgba(#000, .5);
45
- font-size: 1.25rem;
46
- position: absolute;
47
- right: 0;
48
- top: 0;
49
- padding: .5em .75em;
50
- }
51
-
52
- .banner__content {
53
- flex-grow: 1;
54
- }
55
-
56
- .banner__accessory {
57
- flex-shrink: 0;
58
- }
59
-
60
-
61
- // BANNER COLORS
62
- // -----------------------------------------------------------------------------
63
-
64
- .banner--orange {
65
- background: $orange;
66
- }
67
-
68
- .banner--blue {
69
- background: $banner-blue;
70
- }
71
-
72
- .banner--red {
73
- background: $banner-red;
74
- }
@@ -1,249 +0,0 @@
1
- // =============================================================================
2
- // BASE
3
- // =============================================================================
4
-
5
- $border-radius: 4px;
6
-
7
- @mixin clearfix {
8
- &:after {
9
- content:"";
10
- display:table;
11
- clear:both;
12
- }
13
- }
14
-
15
- @mixin truncate {
16
- text-overflow: ellipsis;
17
- white-space: nowrap;
18
- overflow: hidden;
19
- }
20
-
21
- @mixin disabled {
22
- background: transparent;
23
- border: 1px solid rgba(#ccc,.7);
24
- color: #ccc;
25
- pointer-events: none;
26
- }
27
-
28
- @mixin failure {
29
- color: $red;
30
- border-color: $red;
31
- }
32
-
33
- @mixin flexbox() {
34
- display: -webkit-box;
35
- display: -moz-box;
36
- display: -ms-flexbox;
37
- display: -webkit-flex;
38
- display: flex;
39
- }
40
-
41
- @mixin flex-direction($direction) {
42
- -webkit-flex-direction: $direction;
43
- -ms-flex-direction: $direction;
44
- flex-direction: $direction;
45
- }
46
-
47
- @mixin flex($values) {
48
- -webkit-box-flex: $values;
49
- -moz-box-flex: $values;
50
- -webkit-flex: $values;
51
- -ms-flex: $values;
52
- flex: $values;
53
- }
54
-
55
- @mixin order($val) {
56
- -webkit-box-ordinal-group: $val;
57
- -moz-box-ordinal-group: $val;
58
- -ms-flex-order: $val;
59
- -webkit-order: $val;
60
- order: $val;
61
- }
62
-
63
- @mixin keyframes($name) {
64
- @-webkit-keyframes #{$name} {
65
- @content;
66
- }
67
- @-moz-keyframes #{$name} {
68
- @content;
69
- }
70
- @-ms-keyframes #{$name} {
71
- @content;
72
- }
73
- @keyframes #{$name} {
74
- @content;
75
- }
76
- }
77
-
78
- @-webkit-keyframes rotate {
79
- 0% { -webkit-transform: rotate(0); }
80
- 100% { -webkit-transform: rotate(360deg); }
81
- }
82
-
83
- ::selection {
84
- background: $blue;
85
- color: #fff;
86
- }
87
-
88
- body {
89
- padding: 0; margin: 0;
90
- font-family: "Helvetica Neue", sans-serif;
91
- color: #333;
92
- background-color: #fafafa;
93
- -webkit-font-smoothing: subpixel-antialiased;
94
- }
95
-
96
-
97
- // Paragraphs
98
- p {
99
- margin: 0;
100
- margin-bottom: 1.5em;
101
- }
102
-
103
- // Links
104
-
105
- a {
106
- text-decoration: none;
107
- cursor: pointer;
108
- color: $blue;
109
-
110
- &.disabled {
111
- cursor: default;
112
- }
113
- }
114
-
115
- .more {
116
- &:after {
117
- content: " >";
118
- font-family: "Checkout Symbols";
119
- }
120
- }
121
-
122
- // Headings
123
-
124
- h1 {
125
- font-size: 1.75rem;
126
- font-weight: 400;
127
- margin: 0;
128
- color: #333;
129
- }
130
-
131
- h2 {
132
- font-size: 1.25rem;
133
- font-weight: 400;
134
- margin: 0;
135
- }
136
-
137
- h4 {
138
- color: rgba(#fff, 0.25);
139
- text-transform: uppercase;
140
- font-size: .75rem;
141
- font-weight: 400;
142
- margin: -1rem 0 1.5rem;
143
- }
144
-
145
- h5 {
146
- font-size: 1rem;
147
- margin: 0; margin-bottom: .5rem;
148
- }
149
-
150
- [data-tooltip], [data-tooltip-multiline] { // Add this attribute to the element that needs a tooltip
151
- position: relative;
152
- cursor: pointer;
153
- -webkit-transform: translate3d(0,0,0);
154
-
155
- &:before, &:after { // Hide the tooltip content by default
156
- visibility: hidden;
157
- pointer-events: none;
158
- z-index: 200;
159
- opacity: 0;
160
- -webkit-transform: translate3d(0,0,0);
161
- }
162
-
163
- &:hover:before, &:hover:after { // Show tooltip content on hover
164
- visibility: visible;
165
- opacity: 1;
166
- }
167
-
168
- &:before { // Position tooltip above the element
169
- content: attr(data-tooltip);
170
- box-sizing: border-box;
171
- position: absolute; bottom: 120%; left: 50%;
172
- margin-bottom: 5px; padding: .75em 1em;
173
-
174
- border-radius: 5px;
175
- background: #333; background: rgba(68, 68, 68, 0.9);
176
- font-size: 12px; font-style: normal; font-weight: normal;
177
- line-height: 1.4em;
178
- text-align: center;
179
- color: #fff;
180
- text-indent: 0;
181
-
182
- }
183
-
184
- &:after { // Triangle hack to make tooltip look like a speech bubble
185
- content: " ";
186
- position: absolute; bottom: 120%; left: 50%;
187
- margin-left: -7px;
188
- width: 0;
189
- border-top: 5px solid #333; border-top: 5px solid rgba(68, 68, 68, 0.9);
190
- border-right: 7px solid transparent; border-left: 7px solid transparent;
191
- font-size: 0;
192
- line-height: 0;
193
- }
194
-
195
- }
196
-
197
- [data-tooltip-multiline] {
198
- &:before {
199
- width: 180px;
200
- margin-left: -90px;
201
- white-space: normal;
202
- }
203
- }
204
-
205
- [data-tooltip] {
206
- &:before {
207
- white-space: nowrap;
208
- -webkit-transform: translateX(-50%);
209
- }
210
- }
211
-
212
- a.disabled {
213
- cursor: default;
214
- }
215
-
216
- @font-face {
217
- font-family: 'Checkout Symbols';
218
- font-weight: 400;
219
- src: asset-url('CheckoutSymbols-Regular.eot'); /* IE9 Compat Modes */
220
- src: asset-url('CheckoutSymbols-Regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
221
- asset-url('CheckoutSymbols-Regular.woff') format('woff'), /* Modern Browsers */
222
- asset-url('CheckoutSymbols-Regular.ttf') format('truetype'), /* Safari, Android, iOS */
223
- asset-url('CheckoutSymbols-Regular.svg#9a6d998e14a2d97b6369d42f64b6816f') format('svg'); /* Legacy iOS */
224
- font-style: normal;
225
- }
226
-
227
- .hidden {
228
- display: none;
229
- }
230
-
231
-
232
- .flash {
233
- transform: translateX(-50%);
234
- left: 50%;
235
- position: fixed;
236
- padding: 1em;
237
- border-radius: 4px;
238
- min-width: 30%;
239
- text-align: center;
240
- z-index: 1;
241
- }
242
-
243
- .flash-success {
244
- background-color: #E2F1FF;
245
- }
246
-
247
- .flash-warning {
248
- background-color: orange;
249
- }
@@ -1,62 +0,0 @@
1
- // =============================================================================
2
- // BUTTONS
3
- // =============================================================================
4
-
5
- .btn {
6
- display: inline-block;
7
- font-family: inherit;
8
- background: #fff;
9
- color: $blue;
10
- padding: .75em 1em;
11
- font-size: 14px;
12
- border-radius: 4px;
13
- cursor: pointer;
14
- border: none;
15
- box-shadow: 0 0 0 1px rgba(#000, 0.15);
16
- }
17
-
18
- .btn--primary {
19
- background-color: $blue;
20
- color: #fff;
21
- box-shadow: none;
22
-
23
- &.btn--disabled {
24
- box-shadow: 0 0 0 1px rgba(#000, 0.15);
25
- }
26
-
27
- &.btn--warning {
28
- background-color: $yellow;
29
- }
30
- }
31
-
32
- .btn--disabled {
33
- color: $grey;
34
- background-color: #fafafa;
35
- cursor: default;
36
- }
37
-
38
- .btn--delete {
39
- color: #fff;
40
- border: none;
41
- background-color: $bright-red;
42
-
43
- &.btn-disabled {
44
- color: $grey;
45
- background-color: $light-red;
46
- }
47
- }
48
-
49
- .btn--alert {
50
- color: #fff;
51
- background-color: $orange;
52
-
53
- &.btn-disabled {
54
- color: $grey;
55
- background-color: $light-orange;
56
- }
57
- }
58
-
59
- .btn--large {
60
- font-size: 1rem;
61
- padding: 1em 1.25em;
62
- }
@@ -1,19 +0,0 @@
1
- // =============================================================================
2
- // COLORS
3
- // =============================================================================
4
-
5
- $banner-blue: #96A9BA;
6
- $banner-red: #EE6A6A;
7
- $blue: #248AF2;
8
- $green: #25C351;
9
- $red: #F39494;
10
- $bright-red: #F73B3B;
11
- $light-red: #ffd9d6;
12
- $yellow: #FFC66C;
13
- $dark-yellow: #CEA61B;
14
- $orange: #FFAD4C;
15
- $light-orange: #ffebcc;
16
- $slate: #2E343A;
17
- $terminal-black: #272C30;
18
- $grey: #999;
19
- $grey-light: #e0e0e0;
@@ -1,48 +0,0 @@
1
- // =============================================================================
2
- // FORMS
3
- // =============================================================================
4
-
5
- form + form {
6
- margin-top: 1rem;
7
- }
8
-
9
- input[type=text], input[type=password], select, textarea {
10
- display: block;
11
- font-size: .875rem;
12
- border-radius: 4px;
13
- border: 1px solid rgba(#000, .15);
14
- padding: .75rem;
15
- width: 100%;
16
- max-width: 600px;
17
-
18
- label + & {
19
- margin-top: .75rem;
20
- }
21
- }
22
-
23
- textarea {
24
- height: 6rem;
25
- }
26
-
27
- .field-wrapper {
28
- margin-bottom: 1.5rem;
29
- input:focus {
30
- border-color: $blue;
31
- }
32
- &.inline {
33
- input {
34
- &.btn {
35
- height: 2.5rem;
36
- }
37
- display: inline;
38
- &:focus {
39
- padding-right: 30px;
40
- }
41
- }
42
- }
43
- }
44
-
45
- .field_with_errors {
46
- border: 1px solid $red;
47
- display: inline-block;
48
- }
@@ -1,26 +0,0 @@
1
- .icon--lock {
2
- display: inline-block;
3
- background-color: #000;
4
- mask: asset-data-url("lock.svg") no-repeat 50% 50%;
5
- // background: asset-data-url("lock.svg") center center no-repeat;
6
- height: 15px;
7
- width: 12px;
8
- }
9
-
10
- .icon--validate {
11
- display: inline-block;
12
- background-color: #000;
13
- mask: asset-data-url("success-small.svg") no-repeat 50% 50%;
14
- // background: asset-data-url("lock.svg") center center no-repeat;
15
- height: 15px;
16
- width: 12px;
17
- }
18
-
19
- .icon--reject {
20
- display: inline-block;
21
- background-color: #000;
22
- mask: asset-data-url("error-small.svg") no-repeat 50% 50%;
23
- // background: asset-data-url("lock.svg") center center no-repeat;
24
- height: 15px;
25
- width: 12px;
26
- }
@@ -1,17 +0,0 @@
1
- $mobile: 600px;
2
- $tablet: 800px;
3
- $desktop: 1000px;
4
-
5
- $media-queries: (
6
- mobile: "(max-width: #{$mobile - 1})",
7
- tablet-down: "(max-width: #{$desktop - 1})",
8
- tablet: "(min-width: #{$mobile} and max-width: #{$tablet - 1})",
9
- tablet-up: "(min-width: #{$tablet})",
10
- desktop: "(min-width: #{$desktop})"
11
- );
12
-
13
- @mixin media($key) {
14
- @media #{map-get($media-queries, $key)} {
15
- @content;
16
- }
17
- }
@@ -1,21 +0,0 @@
1
- $spacing-data: (
2
- tight: 0.75rem,
3
- base: 1rem,
4
- loose: 1.5rem
5
- );
6
-
7
- /// Returns the spacing value for a given variant.
8
- ///
9
- /// @param {String} $variant - The key for the given variant.
10
- /// @return {Number} The spacing for the variant.
11
-
12
- @function spacing($variant: base) {
13
- $fetched-value: map-get($spacing-data, $variant);
14
-
15
- @if type-of($fetched-value) == number {
16
- @return $fetched-value;
17
- } @else {
18
- @error 'Spacing variant `#{$variant}` not found. Available variants: #{available-names($spacing-data)}';
19
- }
20
- }
21
-
@@ -1,166 +0,0 @@
1
- // =============================================================================
2
- // STATUS ITEMS
3
- // =============================================================================
4
-
5
- .status-list {
6
- position: absolute;
7
- width: 25rem;
8
- left: 3.25rem;
9
- top: 0.25rem;
10
- background: #fff;
11
- border-radius: $border-radius;
12
- box-shadow: 0 0 0 1px rgba(#000, .075), 0 5px 13px rgba(#000, .15);
13
- transform: scale(0.75);
14
- transform-origin: -10% 20%;
15
- transition: all .3s cubic-bezier(0.34,1.61,0.7,1);
16
- visibility: hidden;
17
- opacity: 0;
18
- z-index: 2;
19
-
20
- .status-group:hover & {
21
- transform: scale(1);
22
- opacity: 1;
23
- visibility: visible;
24
- }
25
- }
26
-
27
-
28
- // STATUS ITEMS TRIANGLE
29
- // -----------------------------------------------------------------------------
30
-
31
- .status-list:before,
32
- .status-list:after {
33
- content: '';
34
- display: block;
35
- width: 0;
36
- height: 0;
37
- position: absolute;
38
- top: 0.55rem;
39
- border: 7px outset transparent;
40
- }
41
-
42
- .status-list:before {
43
- border-right: 7px solid rgba(#000, .075);
44
- left: -14px;
45
- }
46
-
47
- .status-list:after {
48
- border-right: 7px solid white;
49
- left: -12px;
50
- }
51
-
52
-
53
- // STATUS ITEM
54
- // -----------------------------------------------------------------------------
55
-
56
- .status-item {
57
- padding: 0.6rem;
58
- }
59
-
60
-
61
- // STATUS ITEM
62
-
63
- .status-item {
64
- background: rgba(#000, 0.035);
65
- font-size: 0.8rem;
66
-
67
- & + & {
68
- border-top: 1px solid #fff;
69
- }
70
- }
71
-
72
-
73
- // STATUS ITEM SUMMARY
74
-
75
- .status-item--summary {
76
- background: transparent;
77
- font-size: 0.9rem;
78
- }
79
-
80
-
81
- // STATUS DESCRIPTION
82
- // -----------------------------------------------------------------------------
83
-
84
- .status-item__description {
85
- color: #777;
86
- }
87
-
88
-
89
- // STATUS SERVICE
90
- // -----------------------------------------------------------------------------
91
-
92
- .status-item__service {
93
- .status-item--success & {
94
- color: $green;
95
- }
96
-
97
- .status-item--pending & {
98
- color: $dark-yellow;
99
- }
100
-
101
- .status-item--error & {
102
- color: #333;
103
- }
104
-
105
- .status-item--failed &,
106
- .status-item--failure & {
107
- color: $bright-red;
108
- }
109
- }
110
-
111
-
112
- // STATUS ICON
113
- // -----------------------------------------------------------------------------
114
-
115
- .status-item__icon {
116
- width: 12px;
117
- height: 12px;
118
- display: inline-block;
119
- background: transparent no-repeat center center;
120
- vertical-align: -2px;
121
-
122
- .status-item--success & {
123
- background-image: asset-data-url('success-small.svg');
124
- }
125
-
126
- .status-item--pending & {
127
- background-image: asset-data-url('pending-small.svg');
128
- }
129
-
130
- .status-item--error & {
131
- background-image: asset-data-url('error-small.svg');
132
- }
133
-
134
- .status-item--failed &,
135
- .status-item--failure & {
136
- background-image: asset-data-url('failure-small.svg');
137
- }
138
- }
139
-
140
- // DEPLOY STATUS ICON
141
- // -----------------------------------------------------------------------------
142
-
143
- .deploy-status__icon {
144
- width: 12px;
145
- height: 12px;
146
- display: inline-block;
147
- background: transparent no-repeat center center;
148
- vertical-align: -2px;
149
-
150
- .deploy[data-release-status=success] & {
151
- background-image: asset-data-url('success-small.svg');
152
- }
153
-
154
- .deploy[data-release-status=pending] &,
155
- .deploy[data-release-status=unknown] & {
156
- background-image: asset-data-url('pending-small.svg');
157
- }
158
-
159
- .deploy[data-release-status=error] & {
160
- background-image: asset-data-url('error-small.svg');
161
- }
162
-
163
- .deploy[data-release-status=failure] & {
164
- background-image: asset-data-url('failure-small.svg');
165
- }
166
- }
@@ -1,15 +0,0 @@
1
- // =============================================================================
2
- // UTILITY
3
- // =============================================================================
4
-
5
- .visually-hidden {
6
- border: 0;
7
- clip: rect(0, 0, 0, 0);
8
- clip: rect(0 0 0 0);
9
- width: 2px; // 2px min. required to still allow hidden fields to be filled in
10
- height: 2px; // 2px min. required to still allow hidden fields to be filled in
11
- margin: -2px;
12
- overflow: hidden;
13
- padding: 0;
14
- position: absolute;
15
- }