Compare commits
20 Commits
ruby-2.1.1
...
master
Author | SHA1 | Date | |
---|---|---|---|
![]() |
1f5eb7f525 | ||
![]() |
812bf1a4f5 | ||
![]() |
b9688352f4 | ||
![]() |
2701581c12 | ||
![]() |
1ff47c63c4 | ||
![]() |
dbedf34be1 | ||
![]() |
5733d14ae4 | ||
![]() |
4cb225d578 | ||
![]() |
249deb0eff | ||
![]() |
446a9bc9b1 | ||
![]() |
ee4b26a7d7 | ||
![]() |
7601173aaa | ||
![]() |
e74b29c313 | ||
![]() |
eb7a746549 | ||
![]() |
d85469c98e | ||
![]() |
fe8a5a13e1 | ||
![]() |
f8d05dea78 | ||
![]() |
dc34ab38e7 | ||
![]() |
5c3d905424 | ||
![]() |
f00a899e74 |
|
@ -19,12 +19,8 @@ var App = Ember.Application.extend(Ember.Evented, {
|
|||
podModulePrefix: config.podModulePrefix,
|
||||
Resolver: Resolver,
|
||||
|
||||
lookup() {
|
||||
return this.__container__.lookup.apply(this.__container__, arguments);
|
||||
},
|
||||
|
||||
flash(options) {
|
||||
return Travis.lookup('controller:flash').loadFlashes([options]);
|
||||
return Ember.getOwner(Travis).lookup('controller:flash').loadFlashes([options]);
|
||||
},
|
||||
|
||||
toggleSidebar() {
|
||||
|
|
|
@ -11,7 +11,7 @@ export default Ember.Controller.extend({
|
|||
var user;
|
||||
if ((user = this.get('model')) && user.get('isSyncing') && !user.get('syncedAt')) {
|
||||
return Ember.run.scheduleOnce('routerTransitions', this, function() {
|
||||
return this.container.lookup('router:main').send('renderFirstSync');
|
||||
return Ember.getOwner(this).lookup('router:main').send('renderFirstSync');
|
||||
});
|
||||
}
|
||||
}.observes('isSyncing', 'auth.currentUser')
|
||||
|
|
|
@ -76,7 +76,7 @@ var Controller = Ember.Controller.extend({
|
|||
possiblyRedirectToGettingStartedPage() {
|
||||
return Ember.run.scheduleOnce('routerTransitions', this, function() {
|
||||
if (this.get('tab') === 'owned' && this.get('isLoaded') && this.get('repos.length') === 0) {
|
||||
return this.container.lookup('router:main').send('redirectToGettingStarted');
|
||||
return Ember.getOwner(this).lookup('router:main').send('redirectToGettingStarted');
|
||||
}
|
||||
});
|
||||
},
|
||||
|
|
|
@ -2,5 +2,6 @@ import { timeAgoInWords, safe } from 'travis/utils/helpers';
|
|||
import Ember from "ember";
|
||||
|
||||
export default Ember.Helper.helper(function(params) {
|
||||
return safe(moment(params[0]).format('MMMM D, YYYY H:mm:ss') || '-');
|
||||
let date = new Date(params[0]);
|
||||
return safe(moment(date).format('MMMM D, YYYY H:mm:ss') || '-');
|
||||
});
|
||||
|
|
|
@ -2,16 +2,15 @@ import config from 'travis/config/environment';
|
|||
import TravisPusher from 'travis/utils/pusher';
|
||||
var PusherInitializer, initialize;
|
||||
|
||||
initialize = function(data) {
|
||||
var application;
|
||||
application = data.application;
|
||||
initialize = function(applicationInstance) {
|
||||
const app = applicationInstance.application;
|
||||
if (config.pusher.key) {
|
||||
application.pusher = new TravisPusher(config.pusher, data.container.lookup('service:ajax'));
|
||||
application.register('pusher:main', application.pusher, {
|
||||
app.pusher = new TravisPusher(config.pusher, applicationInstance.lookup('service:ajax'));
|
||||
app.register('pusher:main', app.pusher, {
|
||||
instantiate: false
|
||||
});
|
||||
application.inject('route', 'pusher', 'pusher:main');
|
||||
return application.pusher.store = data.container.lookup('service:store');
|
||||
app.inject('route', 'pusher', 'pusher:main');
|
||||
return app.pusher.store = applicationInstance.lookup('service:store');
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -30,7 +30,7 @@ var Broadcast = Model.extend({
|
|||
Broadcast.reopenClass({
|
||||
seen: function() {
|
||||
var seenBroadcasts;
|
||||
seenBroadcasts = Travis.lookup('service:storage').getItem('travis.seen_broadcasts');
|
||||
seenBroadcasts = Ember.getOwner(Travis).lookup('service:storage').getItem('travis.seen_broadcasts');
|
||||
if (seenBroadcasts != null) {
|
||||
seenBroadcasts = JSON.parse(seenBroadcasts);
|
||||
}
|
||||
|
|
|
@ -14,7 +14,7 @@ var Router = Ember.Router.extend({
|
|||
// we should probably think about a more general way to
|
||||
// do this, location should not know about auth status
|
||||
return Location.create({
|
||||
auth: this.container.lookup('service:auth')
|
||||
auth: Ember.getOwner(this).lookup('service:auth')
|
||||
});
|
||||
}
|
||||
}.property(),
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
import TravisRoute from 'travis/routes/basic';
|
||||
import config from 'travis/config/environment';
|
||||
import BuildFaviconMixin from 'travis/mixins/build-favicon';
|
||||
import Ember from 'ember';
|
||||
|
||||
export default TravisRoute.extend(BuildFaviconMixin, {
|
||||
needsAuth: false,
|
||||
|
@ -99,7 +100,7 @@ export default TravisRoute.extend(BuildFaviconMixin, {
|
|||
error(error) {
|
||||
var authController;
|
||||
if (error === 'needs-auth') {
|
||||
authController = this.container.lookup('controller:auth');
|
||||
authController = Ember.getOwner(this).lookup('controller:auth');
|
||||
authController.set('redirected', true);
|
||||
return this.transitionTo('auth');
|
||||
} else {
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
import TravisRoute from 'travis/routes/basic';
|
||||
import Ember from 'ember';
|
||||
|
||||
export default TravisRoute.extend({
|
||||
setupController(controller) {
|
||||
return this.container.lookup('controller:repos').activate('owned');
|
||||
return Ember.getOwner(this).lookup('controller:repos').activate('owned');
|
||||
}
|
||||
});
|
||||
|
|
|
@ -17,7 +17,7 @@ export default TravisRoute.extend(ScrollResetMixin, {
|
|||
},
|
||||
|
||||
setupController(controller, model) {
|
||||
this.container.lookup('controller:repos').activate('owned');
|
||||
this.controllerFor('repos').activate('owned');
|
||||
if (model && !model.get) {
|
||||
model = this.get('store').find('repo', model.id);
|
||||
}
|
||||
|
|
|
@ -3,7 +3,7 @@ import TravisRoute from 'travis/routes/basic';
|
|||
export default TravisRoute.extend({
|
||||
setupController: function() {
|
||||
$('body').attr('id', 'simple');
|
||||
this.container.lookup('controller:repos').activate('owned');
|
||||
this.controllerFor('repos').activate('owned');
|
||||
return this._super.apply(this, arguments);
|
||||
},
|
||||
renderTemplate: function() {
|
||||
|
|
|
@ -64,7 +64,7 @@ export default Ember.Service.extend({
|
|||
success = options.success || (function() {});
|
||||
options.success = (data, status, xhr) => {
|
||||
if (data != null ? data.flash : void 0) {
|
||||
Travis.lookup('controller:flash').loadFlashes(data.flash);
|
||||
Ember.getOwner(Travis).lookup('controller:flash').loadFlashes(data.flash);
|
||||
}
|
||||
if (data != null) {
|
||||
delete data.flash;
|
||||
|
@ -75,7 +75,7 @@ export default Ember.Service.extend({
|
|||
options.error = (data, status, xhr) => {
|
||||
console.log("[ERROR] API responded with an error (" + status + "): " + (JSON.stringify(data)));
|
||||
if (data != null ? data.flash : void 0) {
|
||||
Travis.lookup('controller:flash').pushObject(data.flash);
|
||||
Ember.getOwner(Travis).lookup('controller:flash').pushObject(data.flash);
|
||||
}
|
||||
if (data != null) {
|
||||
delete data.flash;
|
||||
|
|
|
@ -214,7 +214,7 @@ export default Ember.Service.extend({
|
|||
// as a direct response to either manual sign in or autoSignIn (right now
|
||||
// we treat both cases behave the same in terms of sent events which I think
|
||||
// makes it more complicated than it should be).
|
||||
router = this.container.lookup('router:main');
|
||||
router = Ember.getOwner(this).lookup('router:main');
|
||||
try {
|
||||
return router.send(name);
|
||||
} catch (error1) {
|
||||
|
|
|
@ -16,8 +16,9 @@
|
|||
background-color: $oxide-blue
|
||||
.sync-last
|
||||
position: absolute
|
||||
left: -15em
|
||||
right: 9em
|
||||
top: 0
|
||||
width: 170%
|
||||
z-index: -1
|
||||
transition: transform 150ms ease, opacity 250ms ease
|
||||
transform: translateX(80%)
|
||||
|
|
|
@ -3,18 +3,17 @@
|
|||
max-width: 900px
|
||||
margin: auto
|
||||
h1
|
||||
color: #808080
|
||||
color: $cement-grey
|
||||
font-size: 36px
|
||||
margin-bottom: 1em
|
||||
font-weight: 300
|
||||
line-height: 1.1
|
||||
h2
|
||||
color: #35a764
|
||||
color: $turf-green
|
||||
font-size: 22px
|
||||
margin-bottom: 1em
|
||||
font-weight: 300
|
||||
p, li
|
||||
color: #666
|
||||
font-size: $font-size-m
|
||||
line-height: 25px
|
||||
|
||||
|
@ -76,10 +75,3 @@
|
|||
strong
|
||||
text-transform: uppercase
|
||||
font-style: normal
|
||||
|
||||
.note--info
|
||||
background-color: #e7eeee
|
||||
color: #3e8987
|
||||
code
|
||||
color: #267c8d
|
||||
background-color: white
|
||||
|
|
|
@ -11,14 +11,14 @@
|
|||
background-color: #ffffff
|
||||
background-image: inline-image('landing-page/signingithub.svg')
|
||||
background-size: 16px 16px
|
||||
border: 2px solid #e4e7e7
|
||||
color: #a0a8a8
|
||||
border: 2px solid rgba($cement-grey, .4)
|
||||
color: $cement-grey
|
||||
.button--signingin
|
||||
border: 2px solid #3FA75F
|
||||
border: 2px solid $turf-green
|
||||
.button--signin:hover
|
||||
background-color: #73c78d
|
||||
background-color: $turf-green
|
||||
background-image: inline-image('landing-page/signingithub-hover.svg')
|
||||
border: 2px solid #73c78d
|
||||
border: 2px solid $turf-green
|
||||
color: #fff
|
||||
|
||||
.landing-centered-wrapper
|
||||
|
@ -37,7 +37,7 @@
|
|||
font-size: 5em
|
||||
line-height: 1em
|
||||
font-weight: 300
|
||||
color: #8f9294
|
||||
color: $cement-grey
|
||||
margin-bottom: 0
|
||||
|
||||
.hero, .oss-testing, .customers, .recent-builds, .free-for-oss, .private-repos, .features-list, .build-flows, .user-testimonials
|
||||
|
@ -52,7 +52,7 @@
|
|||
font-size: 3.3em
|
||||
line-height: 1.15em
|
||||
font-weight: 300
|
||||
color: #39a85b
|
||||
color: $turf-green
|
||||
|
||||
p
|
||||
line-height: 1.5em
|
||||
|
@ -129,6 +129,10 @@
|
|||
|
||||
br.mobile-break
|
||||
display: none
|
||||
.os-numbers
|
||||
width: 80%
|
||||
@media #{$medium-up}
|
||||
width: 60%
|
||||
|
||||
.customers
|
||||
text-align: center
|
||||
|
|
|
@ -43,11 +43,11 @@ $color-bg-log-fold-highlight: #777
|
|||
$ansi-black: #4E4E4E
|
||||
$ansi-black-bold: #7C7C7C
|
||||
$ansi-red: #FF6C60
|
||||
$ansi-red-bold: #FFB6B0
|
||||
$ansi-red-bold: #FF9B93
|
||||
$ansi-green: #00AA00
|
||||
$ansi-green-bold: #CEFFAB
|
||||
$ansi-green-bold: #B1FD79
|
||||
$ansi-yellow: #FFFFB6
|
||||
$ansi-yellow-bold: #FFFFCB
|
||||
$ansi-yellow-bold: #FFFF91
|
||||
$ansi-blue: #96CBFE
|
||||
$ansi-blue-bold: #B5DCFE
|
||||
$ansi-magenta: #FF73FD
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
{{#if allHooks.isLoaded}}
|
||||
|
||||
<header>
|
||||
<header>
|
||||
{{#unless config.enterprise}}
|
||||
{{#if config.billingEndpoint}}
|
||||
<div class="cta-btn">
|
||||
{{#if subscribeButtonInfo.subscribed}}
|
||||
|
@ -14,6 +15,7 @@
|
|||
{{/if}}
|
||||
</div>
|
||||
{{/if}}
|
||||
{{/unless}}
|
||||
|
||||
<div class="profile-header">
|
||||
<h1>{{accountName}}</h1>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<figure class="team-image">
|
||||
<img class="front" src="../images/team/team-{{member.image}}.png" alt="">
|
||||
<img class="back" src="../images/team/{{member.image}}-animated.gif" alt="">
|
||||
<img class="front" src="../images/team/team-{{member.image}}.png" alt="{{member.name}}">
|
||||
<img class="back" src="../images/team/{{member.image}}-animated.gif" alt="{{member.name}} gif">
|
||||
</figure>
|
||||
<h3 class="team-name">{{member.name}}</h3>
|
||||
<p class="team-title">{{member.title}}</p>
|
||||
|
@ -8,7 +8,7 @@
|
|||
<p class="team-handle"><a href="https://twitter.com/{{member.handle}}" title="{{member.name}} on Twitter">@{{member.handle}}</a></p>
|
||||
{{/if}}
|
||||
<div class="team-flags">
|
||||
<img src="../images/pro-landing/flag-{{member.nationality}}.svg" alt="flag {{member.nationality}}">
|
||||
<img src="../images/pro-landing/flag-{{member.nationality}}.svg" alt="flag {{member.nationality}}" title="is from {{member.nationality}}">
|
||||
<span class="flag-divider">/</span>
|
||||
<img src="../images/pro-landing/flag-{{member.country}}.svg" alt="flag {{member.country}}">
|
||||
<img src="../images/pro-landing/flag-{{member.country}}.svg" alt="flag {{member.country}}" title="lives in {{member.country}}">
|
||||
</div>
|
||||
|
|
|
@ -22,9 +22,6 @@
|
|||
<h2>Add .travis.yml file to your repository</h2>
|
||||
<p>In order for Travis CI to build your project, you need to tell the systems a little bit about it. You'll need to add a file named .travis.yml to the root of your repository.</p>
|
||||
<p>If .travis.yml is not in the repository, is misspelled or is not valid YAML, Travis CI will ignore it.</p>
|
||||
<p class="note note--info">
|
||||
<strong>Note:</strong> The <code>language</code> value is case-sensitive. If you set <code>language: C</code>, for example, your project will be considered a Ruby project.
|
||||
</p>
|
||||
<p>Here you can find some of our basic <a href="http://docs.travis-ci.com/user/language-specific/" title="">language examples</a>.</p>
|
||||
</div>
|
||||
</li>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{{#travis-layout layoutName="layouts/landing-page"}}
|
||||
<div id="landing" class="landing">
|
||||
<div class="row hero z-1">
|
||||
<div class="landing-centered-wrapper">
|
||||
<section class="landing-centered-wrapper">
|
||||
<div class="large-12 columns" id="hero-copy">
|
||||
<h1>Test and Deploy with Confidence</h1>
|
||||
<p>Easily sync your GitHub projects with Travis CI<br class="mobile-break"> and you’ll be testing your code in minutes!</p>
|
||||
|
@ -16,25 +16,26 @@
|
|||
</div>
|
||||
<div class="large-12 columns laptop-wrapper">
|
||||
<div id="laptop">
|
||||
<img src="../images/landing-page/laptop.png">
|
||||
<img src="../images/landing-page/laptop.png" alt="Travis CI screenshot">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
|
||||
<div class="row oss-testing">
|
||||
<div class="landing-centered-wrapper">
|
||||
<section class="landing-centered-wrapper">
|
||||
<div class="large-12 columns">
|
||||
<h2>The home of<br class="mobile-break"> open source testing</h2>
|
||||
<p>Over 320k open source projects<br class="mobile-break"> and 235k users are testing on Travis CI.</p>
|
||||
<img src="../images/landing-page/customer-numbers.svg">
|
||||
</div>
|
||||
<h2>The home of<br class="mobile-break"> open source testing</h2>
|
||||
<p>Over 300k open source projects<br class="mobile-break"> and 235k users are testing on Travis CI.</p>
|
||||
<img src="../images/landing-page/customer-numbers.svg" alt="Open source project numbers" class="os-numbers">
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
|
||||
<div class="row customers">
|
||||
<div class="landing-centered-wrapper">
|
||||
<div class="medium-6 columns">
|
||||
<img src="../images/landing-page/customers-temp-together.svg">
|
||||
<img src="../images/landing-page/customers-temp-together.svg" alt="customer logos">
|
||||
</div>
|
||||
<div class="medium-6 columns">
|
||||
<p class="left">Some pretty awesome companies<br> and projects are using us.</p>
|
||||
|
@ -43,16 +44,16 @@
|
|||
</div>
|
||||
|
||||
<div class="row free-for-oss">
|
||||
<div class="landing-centered-wrapper">
|
||||
<section class="landing-centered-wrapper">
|
||||
<div class="large-12 columns">
|
||||
<h1>Testing your open source<br class="mobile-no-break"> project is 10000% free</h1>
|
||||
<p><span class="bold-italic">Seriously. Always.</span> We like to think of it as our way of giving<br>back to a community that gives us so much as well.</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
|
||||
<div class="row private-repos">
|
||||
<div class="landing-centered-wrapper">
|
||||
<section class="landing-centered-wrapper">
|
||||
<div class="medium-6 columns mobile-envelope">
|
||||
<img src="../images/landing-page/envelope.svg">
|
||||
</div>
|
||||
|
@ -64,13 +65,13 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="medium-6 columns desktop-envelope">
|
||||
<img src="../images/landing-page/envelope.svg">
|
||||
<img src="../images/landing-page/envelope.svg" alt="envelope">
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
|
||||
<div class="row features-list">
|
||||
<div class="landing-centered-wrapper">
|
||||
<section class="landing-centered-wrapper">
|
||||
<div class="large-6 columns features-callouts">
|
||||
<div class="landing-vert-center-s">
|
||||
<div class="medium-6 columns">
|
||||
|
@ -104,16 +105,16 @@
|
|||
<li>Did we say free for Open Source already?</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
|
||||
<div class="row build-flows">
|
||||
<div class="landing-centered-wrapper">
|
||||
<section class="landing-centered-wrapper">
|
||||
<div class="large-12 columns">
|
||||
<h2>Branch build flow</h2>
|
||||
<div class="branch-bf">
|
||||
<div class="bf">
|
||||
<img src="../images/landing-page/push-icon-1.svg">
|
||||
<img src="../images/landing-page/push-icon-1.svg" alt="GitHub logo">
|
||||
<p>You push your<br>code to GitHub</p>
|
||||
</div>
|
||||
<div class="divider-line-horizontal">
|
||||
|
@ -121,7 +122,7 @@
|
|||
<div class="divider-line-vertical">
|
||||
</div>
|
||||
<div class="bf">
|
||||
<img src="../images/landing-page/push-icon-2.svg">
|
||||
<img src="../images/landing-page/push-icon-2.svg" alt="Trigger build">
|
||||
<p>GitHub triggers<br>Travis CI to build</p>
|
||||
</div>
|
||||
<div class="divider-line-horizontal">
|
||||
|
@ -129,7 +130,7 @@
|
|||
<div class="divider-line-vertical">
|
||||
</div>
|
||||
<div class="bf">
|
||||
<img src="../images/landing-page/push-icon-3.svg">
|
||||
<img src="../images/landing-page/push-icon-3.svg" alt="Travis logo">
|
||||
<p>Hooray!<br>Your build passes!</p>
|
||||
</div>
|
||||
<div class="divider-line-horizontal">
|
||||
|
@ -137,7 +138,7 @@
|
|||
<div class="divider-line-vertical">
|
||||
</div>
|
||||
<div class="bf">
|
||||
<img src="../images/landing-page/push-icon-4.svg">
|
||||
<img src="../images/landing-page/push-icon-4.svg" alt="Heroku logo">
|
||||
<p>Travis CI deploys<br>to Heroku</p>
|
||||
</div>
|
||||
<div class="divider-line-horizontal">
|
||||
|
@ -145,14 +146,14 @@
|
|||
<div class="divider-line-vertical">
|
||||
</div>
|
||||
<div class="bf">
|
||||
<img src="../images/landing-page/push-icon-5.svg">
|
||||
<img src="../images/landing-page/push-icon-5.svg" alt="Slack logo">
|
||||
<p>Travis CI tells the<br>team all is well</p>
|
||||
</div>
|
||||
</div>
|
||||
<h2 id="pr-bf-margin">Pull request build flow</h2>
|
||||
<div class="branch-bf">
|
||||
<div class="bf">
|
||||
<img src="../images/landing-page/pull-icon-1.svg">
|
||||
<img src="../images/landing-page/pull-icon-1.svg" alt="PR icon">
|
||||
<p>A pull request<br>is created</p>
|
||||
</div>
|
||||
<div class="divider-line-horizontal">
|
||||
|
@ -160,7 +161,7 @@
|
|||
<div class="divider-line-vertical">
|
||||
</div>
|
||||
<div class="bf">
|
||||
<img src="../images/landing-page/pull-icon-2.svg">
|
||||
<img src="../images/landing-page/pull-icon-2.svg" alt="Check test">
|
||||
<p>GitHub tells Travis CI the build is mergeable</p>
|
||||
</div>
|
||||
<div class="divider-line-horizontal">
|
||||
|
@ -168,7 +169,7 @@
|
|||
<div class="divider-line-vertical">
|
||||
</div>
|
||||
<div class="bf">
|
||||
<img src="../images/landing-page/push-icon-3.svg">
|
||||
<img src="../images/landing-page/push-icon-3.svg" alt="Tavis logo">
|
||||
<p>Hooray!<br>Your build passes!</p>
|
||||
</div>
|
||||
<div class="divider-line-horizontal">
|
||||
|
@ -176,7 +177,7 @@
|
|||
<div class="divider-line-vertical">
|
||||
</div>
|
||||
<div class="bf">
|
||||
<img src="../images/landing-page/pull-icon-4.svg">
|
||||
<img src="../images/landing-page/pull-icon-4.svg" alt="Build status">
|
||||
<p>Travis CI updates the PR that it passed</p>
|
||||
</div>
|
||||
<div class="divider-line-horizontal">
|
||||
|
@ -184,22 +185,22 @@
|
|||
<div class="divider-line-vertical">
|
||||
</div>
|
||||
<div class="bf">
|
||||
<img src="../images/landing-page/pull-icon-5.svg">
|
||||
<img src="../images/landing-page/pull-icon-5.svg" alt="Merge icon">
|
||||
<p>You merge in<br>the PR goodness</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
|
||||
<div class="row user-testimonials">
|
||||
<div class="landing-centered-wrapper">
|
||||
<section class="landing-centered-wrapper">
|
||||
<div class="medium-6 columns">
|
||||
<h2>Some people have said some pretty nice things about us</h2>
|
||||
</div>
|
||||
<div class="medium-6 columns">
|
||||
<div class="small-3 columns">
|
||||
<img src="../images/landing-page/dhh.png" class="home-avatar">
|
||||
<img src="../images/landing-page/dhh.png" class="home-avatar" alt="image DHH">
|
||||
</div>
|
||||
<div class="small-9 columns">
|
||||
<p>Travis CI makes it so much easier for us to coordinate the thousands of commits and contributors that flow through the Rails code base. The test suite for such a large project is vast, and we wouldn’t be catching issues as quickly or smoothly without the help of Travis.</p>
|
||||
|
@ -208,7 +209,7 @@
|
|||
</div>
|
||||
|
||||
<div class="small-3 columns">
|
||||
<img src="../images/landing-page/chris.png" class="home-avatar">
|
||||
<img src="../images/landing-page/chris.png" class="home-avatar" alt="image Chris Aniszczyk">
|
||||
</div>
|
||||
<div class="small-9 columns">
|
||||
<p>We love Travis CI at @TwitterOSS and use it for the majority of our open source projects on GitHub. Travis CI is simple to use, we love their API to build tooling and adore the new container infrastructure for speedier builds.</p>
|
||||
|
@ -217,7 +218,7 @@
|
|||
</div>
|
||||
|
||||
<div class="small-3 columns">
|
||||
<img src="../images/landing-page/alex.png" class="home-avatar">
|
||||
<img src="../images/landing-page/alex.png" class="home-avatar" alt="Alex Gaynor">
|
||||
</div>
|
||||
<div class="small-9 columns">
|
||||
<p>Not only is Travis CI the best way to test your software, it is the right way. rm -rf jenkins && touch .travis.yml</p>
|
||||
|
@ -225,8 +226,7 @@
|
|||
<p class="title">PyPy and Python Core Team Member</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{/travis-layout}}
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
{{#each broadcasts.content as |broadcast|}}
|
||||
<li><p><span class="broadcast-status {{broadcast.category}}" title="Transmitted on {{broadcast.updated_at}}"></span> {{{broadcast.message}}} <a {{action 'markBroadcastAsSeen' broadcast}} class="icon-close"></a></p></li>
|
||||
{{else}}
|
||||
<li><p>There are no broadcasts transmitted</p></li>
|
||||
<li><p>There are no broadcasts</p></li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
{{/if}}
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
import config from 'travis/config/environment';
|
||||
import Ember from 'ember';
|
||||
|
||||
var ccXml, email, githubAdmin, githubCommit, githubNetwork, githubPullRequest,
|
||||
githubRepo, githubWatchers, gravatarImage, plainTextLog, statusImage;
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "travis",
|
||||
"dependencies": {
|
||||
"ember": "2.2.1",
|
||||
"ember": "2.4.5",
|
||||
"ember-cli-shims": "0.1.1",
|
||||
"ember-cli-test-loader": "0.2.2",
|
||||
"ember-load-initializers": "0.1.7",
|
||||
|
@ -22,7 +22,6 @@
|
|||
"ceibo": "1.0.0"
|
||||
},
|
||||
"resolutions": {
|
||||
"ember": "2.2.1",
|
||||
"ember-qunit-notifications": "0.1.0"
|
||||
"ember": "2.4.5"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,30 +1,4 @@
|
|||
window.deprecationWorkflow = window.deprecationWorkflow || {};
|
||||
window.deprecationWorkflow.config = {
|
||||
workflow: [
|
||||
// DONE
|
||||
{ handler: "log", matchMessage: "Ember.LinkView is deprecated. Please use Ember.LinkComponent." },
|
||||
{ handler: "log", matchMessage: "Calling store.find() with a query object is deprecated. Use store.query() instead." },
|
||||
{ handler: "log", matchMessage: new RegExp("A property of .*? was modified inside the didInsertElement hook. You should never change properties on components, services or models during didInsertElement because it causes significant performance degradation.") },
|
||||
{ handler: "log", matchMessage: "Ember.arrayComputed is deprecated. Replace it with plain array methods" },
|
||||
// this will still emit deprecations, because we use state property in
|
||||
// request-icon compoenent, that makes Ember.js think that we're using
|
||||
// internal component's state
|
||||
{ handler: "log", matchMessage: "Usage of `state` is deprecated, use `_state` instead." },
|
||||
{ handler: "log", matchMessage: "RestAdapter#find has been deprecated and renamed to `findRecord`." },
|
||||
{ handler: "log", matchMessage: "Usage of `typeKey` has been deprecated and will be removed in Ember Data 2.0. It has been replaced by `modelName` on the model class." },
|
||||
{ handler: "log", matchMessage: "Using store.dematerializeRecord() has been deprecated since it was intended for private use only. You should use store.unloadRecord() instead." },
|
||||
{ handler: "log", matchMessage: "Using the same function as getter and setter is deprecated." },
|
||||
{ handler: "log", matchMessage: "`Ember.ArrayController` is deprecated." },
|
||||
{ handler: "log", matchMessage: "The default behavior of `shouldBackgroundReloadRecord` will change in Ember Data 2.0 to always return true. If you would like to preserve the current behavior please override `shouldBackgroundReloadRecord` in your adapter:application and return false." },
|
||||
{ handler: "log", matchMessage: "Function#observesBefore is deprecated and will be removed in the near future." },
|
||||
{ handler: "log", matchMessage: "Ember.addBeforeObserver is deprecated and will be removed in the near future." },
|
||||
{ handler: "log", matchMessage: "Ember.removeBeforeObserver is deprecated and will be removed in the near future." },
|
||||
{ handler: "log", matchMessage: "Using DS.Snapshot.get() is deprecated. Use .attr(), .belongsTo() or .hasMany() instead." },
|
||||
{ handler: "log", matchMessage: "The filter API will be moved into a plugin soon. To enable store.filter using an environment flag, or to use an alternative, you can visit the ember-data-filter addon page" },
|
||||
{ handler: "log", matchMessage: "Ember.View is deprecated. Consult the Deprecations Guide for a migration strategy." },
|
||||
|
||||
// TODO
|
||||
{ handler: "silence", matchMessage: "Using `ApplicationInstance.container.lookup` is deprecated. Please use `ApplicationInstance.lookup` instead." },
|
||||
{ handler: "silence", matchMessage: new RegExp("the component:.*? test module is implicitly running in unit test mode, which will change to integration test mode by default in an upcoming version of ember-test-helpers. Add `unit: true` or a `needs:[]` list to explicitly opt in to unit test mode.") },
|
||||
]
|
||||
workflow: []
|
||||
};
|
||||
|
|
|
@ -29,7 +29,7 @@
|
|||
"ember-cli-babel": "^5.1.6",
|
||||
"ember-cli-dependency-checker": "^1.2.0",
|
||||
"ember-cli-deprecation-workflow": "0.1.6",
|
||||
"ember-cli-document-title": "0.2.0",
|
||||
"ember-cli-document-title": "0.3.1",
|
||||
"ember-cli-htmlbars": "^1.0.3",
|
||||
"ember-cli-htmlbars-inline-precompile": "^0.3.1",
|
||||
"ember-cli-inject-live-reload": "^1.4.0",
|
||||
|
@ -48,6 +48,7 @@
|
|||
"ember-disable-proxy-controllers": "^1.0.1",
|
||||
"ember-export-application-global": "^1.0.5",
|
||||
"ember-load-initializers": "^0.5.1",
|
||||
"ember-getowner-polyfill": "1.0.1",
|
||||
"ember-resolver": "^2.0.3",
|
||||
"ember-try": "0.0.7",
|
||||
"emberx-select": "2.0.2",
|
||||
|
|
|
@ -4,7 +4,6 @@ import hbs from 'htmlbars-inline-precompile';
|
|||
import fillIn from '../../helpers/fill-in';
|
||||
import DS from 'ember-data';
|
||||
|
||||
|
||||
moduleForComponent('add-env-var', 'Integration | Component | add env-var', {
|
||||
integration: true
|
||||
});
|
||||
|
@ -14,7 +13,7 @@ test('it adds an env var on submit', function(assert) {
|
|||
|
||||
// this shouldn't be needed, probably some bug in tests setup with new ember-data
|
||||
this.registry.register('transform:boolean', DS.BooleanTransform);
|
||||
var store = this.container.lookup('service:store');
|
||||
var store = Ember.getOwner(this).lookup('service:store');
|
||||
assert.equal(store.peekAll('envVar').get('length'), 0, 'precond: store should be empty');
|
||||
|
||||
var repo;
|
||||
|
@ -66,7 +65,7 @@ test('it adds a public env var on submit', function(assert) {
|
|||
assert.expect(6);
|
||||
|
||||
this.registry.register('transform:boolean', DS.BooleanTransform);
|
||||
var store = this.container.lookup('service:store');
|
||||
var store = Ember.getOwner(this).lookup('service:store');
|
||||
assert.equal(store.peekAll('envVar').get('length'), 0, 'precond: store should be empty');
|
||||
|
||||
var repo;
|
||||
|
|
|
@ -12,7 +12,7 @@ test('it adds an ssh key on submit', function(assert) {
|
|||
assert.expect(6);
|
||||
|
||||
this.registry.register('transform:boolean', DS.BooleanTransform);
|
||||
var store = this.container.lookup('service:store');
|
||||
var store = Ember.getOwner(this).lookup('service:store');
|
||||
|
||||
var repo;
|
||||
Ember.run(function() {
|
||||
|
@ -47,7 +47,7 @@ test('it throws an error if value for ssh key is blank', function(assert) {
|
|||
assert.expect(5);
|
||||
|
||||
this.registry.register('transform:boolean', DS.BooleanTransform);
|
||||
var store = this.container.lookup('service:store');
|
||||
var store = Ember.getOwner(this).lookup('service:store');
|
||||
|
||||
var repo;
|
||||
Ember.run(function() {
|
||||
|
|
|
@ -4,7 +4,6 @@ import hbs from 'htmlbars-inline-precompile';
|
|||
import fillIn from '../../helpers/fill-in';
|
||||
import DS from 'ember-data';
|
||||
|
||||
|
||||
moduleForComponent('env-var', 'Integration | Component | env-var', {
|
||||
integration: true
|
||||
});
|
||||
|
@ -13,7 +12,7 @@ test('it renders an env-var with private value', function(assert) {
|
|||
assert.expect(2);
|
||||
|
||||
this.registry.register('transform:boolean', DS.BooleanTransform);
|
||||
var store = this.container.lookup('service:store');
|
||||
var store = Ember.getOwner(this).lookup('service:store');
|
||||
Ember.run(() => {
|
||||
var envVar = store.push({data: { id: 1, type: 'env-var', attributes: { name: 'foo', value: 'bar', public: false}}});
|
||||
this.set('envVar', envVar);
|
||||
|
@ -30,7 +29,7 @@ test('it renders an env-var with public value', function(assert) {
|
|||
assert.expect(2);
|
||||
|
||||
this.registry.register('transform:boolean', DS.BooleanTransform);
|
||||
var store = this.container.lookup('service:store');
|
||||
var store = Ember.getOwner(this).lookup('service:store');
|
||||
Ember.run(() => {
|
||||
var envVar = store.push({data: { id: 1, type: 'env-var', attributes: { name: 'foo', value: 'bar', public: true}}});
|
||||
this.set('envVar', envVar);
|
||||
|
|
|
@ -3,7 +3,6 @@ import { moduleForComponent, test } from 'ember-qunit';
|
|||
import hbs from 'htmlbars-inline-precompile';
|
||||
import fillIn from '../../helpers/fill-in';
|
||||
|
||||
|
||||
moduleForComponent('ssh-key', 'Integration | Component | ssh-key', {
|
||||
integration: true
|
||||
});
|
||||
|
@ -11,7 +10,7 @@ moduleForComponent('ssh-key', 'Integration | Component | ssh-key', {
|
|||
test('it renders the default ssh key if no custom key is set', function(assert) {
|
||||
assert.expect(2);
|
||||
|
||||
var store = this.container.lookup('service:store');
|
||||
var store = Ember.getOwner(this).lookup('service:store');
|
||||
|
||||
var key = Ember.Object.create({fingerprint: 'fingerprint'});
|
||||
this.set('key', key);
|
||||
|
@ -25,7 +24,7 @@ test('it renders the default ssh key if no custom key is set', function(assert)
|
|||
test('it renders the custom ssh key if custom key is set', function(assert) {
|
||||
assert.expect(2);
|
||||
|
||||
var store = this.container.lookup('service:store');
|
||||
var store = Ember.getOwner(this).lookup('service:store');
|
||||
|
||||
var key;
|
||||
Ember.run(function() {
|
||||
|
@ -44,7 +43,7 @@ test('it renders the custom ssh key if custom key is set', function(assert) {
|
|||
test('it deletes a custom key if permissions are right', function(assert) {
|
||||
assert.expect(1);
|
||||
|
||||
var store = this.container.lookup('service:store');
|
||||
var store = Ember.getOwner(this).lookup('service:store');
|
||||
|
||||
var key;
|
||||
Ember.run(function() {
|
||||
|
@ -67,7 +66,7 @@ test('it deletes a custom key if permissions are right', function(assert) {
|
|||
test('it does not delete the custom key if permissions are insufficient', function(assert) {
|
||||
assert.expect(1);
|
||||
|
||||
var store = this.container.lookup('service:store');
|
||||
var store = Ember.getOwner(this).lookup('service:store');
|
||||
|
||||
var key;
|
||||
Ember.run(function() {
|
||||
|
|
Loading…
Reference in New Issue
Block a user