Merge branch 'master' of github.com:travis-ci/travis-web
This commit is contained in:
commit
99edd9f0df
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -6,3 +6,4 @@
|
||||||
/public/version
|
/public/version
|
||||||
.sass-cache
|
.sass-cache
|
||||||
.localeapp/key
|
.localeapp/key
|
||||||
|
/assets/scripts/config/locales.js
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
---
|
---
|
||||||
:polled_at: 1355238733
|
:polled_at: 1358204368
|
||||||
:updated_at: 1355238733
|
:updated_at: 1358204368
|
||||||
|
|
26
README.md
26
README.md
|
@ -2,30 +2,26 @@
|
||||||
|
|
||||||
### Running the app
|
### Running the app
|
||||||
|
|
||||||
This is a static html/js app so you shouldn't need to install anything.
|
In order to run the app you need to install dependencies with:
|
||||||
|
|
||||||
git clone git://github.com/travis-ci/travis-web.git
|
bundle install
|
||||||
cd travis-web
|
|
||||||
open public/index.html
|
|
||||||
|
|
||||||
Running locally with a local API server:
|
Then you have to run the server, the easiest way to do this is to
|
||||||
|
use foreman:
|
||||||
|
|
||||||
RUN_API=1 bundle exec rackup -p 3000
|
bundle exec foreman start
|
||||||
|
|
||||||
Running against existing API endpoint:
|
Now you can open [localhost:5000](http://localhost:5000)
|
||||||
|
|
||||||
API_ENDPOINT="https://api.travis-ci.org/" RUN_API=0 bundle exec rackup
|
By default it uses official API at `https://api.travis-ci.org`, but you
|
||||||
|
can set your own enpoint using:
|
||||||
|
|
||||||
Run locally, one on `ci.dev` and one on `api.dev`:
|
|
||||||
|
|
||||||
. dev.env
|
API_ENDPOINT="http://localhost:300/" bundle exec foreman start
|
||||||
bundle exec rackup
|
|
||||||
|
This will run against API run locally.
|
||||||
|
|
||||||
### Compiling assets manually
|
### Compiling assets manually
|
||||||
|
|
||||||
bundle exec rakep
|
bundle exec rakep
|
||||||
ENV=production bundle exec rakep
|
ENV=production bundle exec rakep
|
||||||
|
|
||||||
### Compiling assets on change
|
|
||||||
|
|
||||||
bundle exec guard
|
|
||||||
|
|
|
@ -13,6 +13,7 @@ require 'views'
|
||||||
require 'config/locales'
|
require 'config/locales'
|
||||||
require 'data/sponsors'
|
require 'data/sponsors'
|
||||||
|
|
||||||
|
require 'travis/instrumentation'
|
||||||
# $.mockjaxSettings.log = false
|
# $.mockjaxSettings.log = false
|
||||||
# Ember.LOG_BINDINGS = true
|
# Ember.LOG_BINDINGS = true
|
||||||
# Ember.ENV.RAISE_ON_DEPRECATION = true
|
# Ember.ENV.RAISE_ON_DEPRECATION = true
|
||||||
|
|
|
@ -30,12 +30,13 @@
|
||||||
if user && token && @validateUser(user)
|
if user && token && @validateUser(user)
|
||||||
{ user: user, token: token }
|
{ user: user, token: token }
|
||||||
else
|
else
|
||||||
|
console.log('dropping user, no token') unless token?
|
||||||
storage.removeItem('travis.user')
|
storage.removeItem('travis.user')
|
||||||
storage.removeItem('travis.token')
|
storage.removeItem('travis.token')
|
||||||
null
|
null
|
||||||
|
|
||||||
validateUser: (user) ->
|
validateUser: (user) ->
|
||||||
@validateHas('id', user) && @validateHas('login', user) #&& @validateHas('token', user)
|
@validateHas('id', user) && @validateHas('login', user) && @validateHas('token', user) && @validateHas('correct_scopes', user) && user.correct_scopes
|
||||||
|
|
||||||
validateHas: (field, user) ->
|
validateHas: (field, user) ->
|
||||||
if user[field]
|
if user[field]
|
||||||
|
|
|
@ -1,21 +1,9 @@
|
||||||
@Travis.Urls =
|
@Travis.Urls =
|
||||||
repo: (slug) ->
|
plainTextLog: (id) ->
|
||||||
"/#{slug}"
|
"#{Travis.config.api_endpoint}/artifacts/#{id}.txt?deansi=true"
|
||||||
|
|
||||||
builds: (slug) ->
|
githubPullRequest: (slug, pullRequestNumber) ->
|
||||||
"/#{slug}/builds"
|
"http://github.com/#{slug}/pull/#{pullRequestNumber}"
|
||||||
|
|
||||||
pullRequests: (slug) ->
|
|
||||||
"/#{slug}/pull_requests"
|
|
||||||
|
|
||||||
branches: (slug) ->
|
|
||||||
"/#{slug}/branches"
|
|
||||||
|
|
||||||
build: (slug, id) ->
|
|
||||||
"/#{slug}/builds/#{id}"
|
|
||||||
|
|
||||||
job: (slug, id) ->
|
|
||||||
"/#{slug}/jobs/#{id}"
|
|
||||||
|
|
||||||
githubCommit: (slug, sha) ->
|
githubCommit: (slug, sha) ->
|
||||||
"http://github.com/#{slug}/commit/#{sha}"
|
"http://github.com/#{slug}/commit/#{sha}"
|
||||||
|
@ -37,10 +25,3 @@
|
||||||
|
|
||||||
email: (email) ->
|
email: (email) ->
|
||||||
"mailto:#{email}"
|
"mailto:#{email}"
|
||||||
|
|
||||||
account: (login) ->
|
|
||||||
"/profile/#{login}"
|
|
||||||
|
|
||||||
user: (login) ->
|
|
||||||
"/profile/#{login}/me"
|
|
||||||
|
|
||||||
|
|
|
@ -10,5 +10,6 @@ require 'travis/model'
|
||||||
authorEmail: DS.attr('string')
|
authorEmail: DS.attr('string')
|
||||||
committerName: DS.attr('string')
|
committerName: DS.attr('string')
|
||||||
committerEmail: DS.attr('string')
|
committerEmail: DS.attr('string')
|
||||||
|
pullRequestNumber: DS.attr('number')
|
||||||
|
|
||||||
build: DS.belongsTo('Travis.Build', key: 'buildId')
|
build: DS.belongsTo('Travis.Build', key: 'buildId')
|
||||||
|
|
|
@ -2,7 +2,7 @@ require 'travis/ajax'
|
||||||
require 'travis/model'
|
require 'travis/model'
|
||||||
|
|
||||||
@Travis.User = Travis.Model.extend
|
@Travis.User = Travis.Model.extend
|
||||||
name: DS.attr('string')
|
_name: DS.attr('string', key: 'name')
|
||||||
email: DS.attr('string')
|
email: DS.attr('string')
|
||||||
login: DS.attr('string')
|
login: DS.attr('string')
|
||||||
token: DS.attr('string')
|
token: DS.attr('string')
|
||||||
|
@ -12,6 +12,15 @@ require 'travis/model'
|
||||||
syncedAt: DS.attr('string')
|
syncedAt: DS.attr('string')
|
||||||
repoCount: DS.attr('number')
|
repoCount: DS.attr('number')
|
||||||
|
|
||||||
|
# This is the only way I found to override the attribue created with DS.attr
|
||||||
|
name: Ember.computed( (key, value) ->
|
||||||
|
if arguments.length == 1
|
||||||
|
@get('_name') || @get('login')
|
||||||
|
else
|
||||||
|
@set('_name', value)
|
||||||
|
value
|
||||||
|
).property('login', '_name')
|
||||||
|
|
||||||
init: ->
|
init: ->
|
||||||
@poll() if @get('isSyncing')
|
@poll() if @get('isSyncing')
|
||||||
@_super()
|
@_super()
|
||||||
|
|
|
@ -204,7 +204,7 @@ Travis.Router = Ember.Router.extend
|
||||||
dynamicSegmentPattern: "([^/#]+)"
|
dynamicSegmentPattern: "([^/#]+)"
|
||||||
|
|
||||||
connectOutlets: (router, repo) ->
|
connectOutlets: (router, repo) ->
|
||||||
unless repo.constructor == Travis.Repo
|
if repo && repo.constructor != Travis.Repo
|
||||||
repo = Travis.Repo.find(repo.id)
|
repo = Travis.Repo.find(repo.id)
|
||||||
router.get('repoController').set 'repo', repo
|
router.get('repoController').set 'repo', repo
|
||||||
|
|
||||||
|
@ -300,6 +300,19 @@ Travis.Router = Ember.Router.extend
|
||||||
lineNumber: lineNumberRoute
|
lineNumber: lineNumberRoute
|
||||||
dynamicSegmentPattern: "([^/#]+)"
|
dynamicSegmentPattern: "([^/#]+)"
|
||||||
|
|
||||||
|
logRedirect: Ember.Route.extend
|
||||||
|
route: '/log.txt'
|
||||||
|
connectOutlets: (router) ->
|
||||||
|
build = router.get('repoController').get 'build'
|
||||||
|
|
||||||
|
observer = ->
|
||||||
|
if logId = build.get('jobs.firstObject.log.id')
|
||||||
|
window.location = Travis.Urls.plainTextLog(logId)
|
||||||
|
|
||||||
|
build.removeObserver('jobs.firstObject.log.id', observer)
|
||||||
|
|
||||||
|
build.addObserver('jobs.firstObject.log.id', observer)
|
||||||
|
|
||||||
pullRequests: Ember.Route.extend
|
pullRequests: Ember.Route.extend
|
||||||
route: '/pull_requests'
|
route: '/pull_requests'
|
||||||
connectOutlets: (router, repo) ->
|
connectOutlets: (router, repo) ->
|
||||||
|
@ -349,3 +362,16 @@ Travis.Router = Ember.Router.extend
|
||||||
initialState: 'default'
|
initialState: 'default'
|
||||||
default: defaultRoute
|
default: defaultRoute
|
||||||
lineNumber: lineNumberRoute
|
lineNumber: lineNumberRoute
|
||||||
|
|
||||||
|
logRedirect: Ember.Route.extend
|
||||||
|
route: '/log.txt'
|
||||||
|
connectOutlets: (router, job) ->
|
||||||
|
job = router.get('repoController').get 'job'
|
||||||
|
|
||||||
|
observer = ->
|
||||||
|
if logId = job.get('log.id')
|
||||||
|
window.location = Travis.Urls.plainTextLog(logId)
|
||||||
|
|
||||||
|
job.removeObserver('log.id', observer)
|
||||||
|
|
||||||
|
job.addObserver('log.id', observer)
|
||||||
|
|
|
@ -68,6 +68,8 @@ Travis.Store = DS.Store.extend
|
||||||
{ id: id, clientId: clientId }
|
{ id: id, clientId: clientId }
|
||||||
|
|
||||||
receive: (event, data) ->
|
receive: (event, data) ->
|
||||||
|
return if event == 'worker:added' || event == 'worker:removed'
|
||||||
|
|
||||||
[name, type] = event.split(':')
|
[name, type] = event.split(':')
|
||||||
|
|
||||||
mappings = @adapter.get('mappings')
|
mappings = @adapter.get('mappings')
|
||||||
|
|
|
@ -3,8 +3,15 @@
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>{{t builds.name}}</th>
|
<th>{{t builds.name}}</th>
|
||||||
<th>{{t builds.commit}}</th>
|
|
||||||
<th>{{t builds.message}}</th>
|
<th>{{t builds.message}}</th>
|
||||||
|
<th>
|
||||||
|
{{t builds.commit}}
|
||||||
|
</th>
|
||||||
|
{{#if view.isPullRequestsList}}
|
||||||
|
<th>
|
||||||
|
{{t builds.pr}}
|
||||||
|
</th>
|
||||||
|
{{/if}}
|
||||||
<th>{{t builds.duration}}</th>
|
<th>{{t builds.duration}}</th>
|
||||||
<th>{{t builds.finished_at}}</th>
|
<th>{{t builds.finished_at}}</th>
|
||||||
</tr>
|
</tr>
|
||||||
|
@ -21,14 +28,21 @@
|
||||||
</a>
|
</a>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</td>
|
</td>
|
||||||
|
<td class="message">
|
||||||
|
{{{formatMessage commit.message short="true"}}}
|
||||||
|
</td>
|
||||||
<td class="commit">
|
<td class="commit">
|
||||||
<a {{bindAttr href="view.urlGithubCommit"}}>
|
<a {{bindAttr href="view.urlGithubCommit"}}>
|
||||||
{{formatCommit commit}}
|
{{formatCommit commit}}
|
||||||
</a>
|
</a>
|
||||||
</td>
|
</td>
|
||||||
<td class="message">
|
{{#if commit.pullRequestNumber}}
|
||||||
{{{formatMessage commit.message short="true"}}}
|
<td>
|
||||||
|
<a {{bindAttr href="view.urlGithubPullRequest"}}>
|
||||||
|
#{{commit.pullRequestNumber}}
|
||||||
|
</a>
|
||||||
</td>
|
</td>
|
||||||
|
{{/if}}
|
||||||
<td class="duration" {{bindAttr title="duration"}}>
|
<td class="duration" {{bindAttr title="duration"}}>
|
||||||
{{formatDuration duration}}
|
{{formatDuration duration}}
|
||||||
</td>
|
</td>
|
||||||
|
|
|
@ -29,6 +29,11 @@
|
||||||
<a href="#" name="regenerate-key" class="open-popup" {{action regenerateKeyPopup target="view"}}>Regenerate Key</a>
|
<a href="#" name="regenerate-key" class="open-popup" {{action regenerateKeyPopup target="view"}}>Regenerate Key</a>
|
||||||
</li>
|
</li>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
{{#if view.showDownloadLog}}
|
||||||
|
<li>
|
||||||
|
<a class="download-log" {{bindAttr href="view.plainTextLogUrl"}}>Download log</a>
|
||||||
|
</li>
|
||||||
|
{{/if}}
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -37,14 +42,14 @@
|
||||||
<p>
|
<p>
|
||||||
<label>{{t repositories.branch}}:</label>
|
<label>{{t repositories.branch}}:</label>
|
||||||
{{#if view.branches.isLoaded}}
|
{{#if view.branches.isLoaded}}
|
||||||
{{view Ember.Select contentBinding="view.branches" selectionBinding="view.branch" optionLabelPath="content.commit.branch" optionValuePath="content.commit.branch"}}
|
{{view Ember.Select contentBinding="view.branches" selectionBinding="view.statusImageBranch" optionLabelPath="content.commit.branch" optionValuePath="content.commit.branch"}}
|
||||||
{{else}}
|
{{else}}
|
||||||
<span class="loading"></span>
|
<span class="loading"></span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
<label>{{t repositories.image_url}}:</label>
|
<label>{{t repositories.image_url}}:</label>
|
||||||
<input type="text" class="url" {{bindAttr value="view.urlStatusImage"}}></input>
|
<input type="text" class="url" {{bindAttr value="view.statusImageUrl"}}></input>
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
<label>{{t repositories.markdown}}:</label>
|
<label>{{t repositories.markdown}}:</label>
|
||||||
|
|
|
@ -3,6 +3,11 @@
|
||||||
templateName: 'builds/list'
|
templateName: 'builds/list'
|
||||||
buildsBinding: 'controller.builds'
|
buildsBinding: 'controller.builds'
|
||||||
|
|
||||||
|
isPullRequestsList: (->
|
||||||
|
console.log @get('controller.tab')
|
||||||
|
@get('controller.tab') == 'pull_requests'
|
||||||
|
).property('controller.tab')
|
||||||
|
|
||||||
showMore: ->
|
showMore: ->
|
||||||
id = @get('controller.repo.id')
|
id = @get('controller.repo.id')
|
||||||
number = @get('builds.lastObject.number')
|
number = @get('builds.lastObject.number')
|
||||||
|
@ -35,14 +40,14 @@
|
||||||
Travis.Helpers.colorForState(@get('build.state'))
|
Travis.Helpers.colorForState(@get('build.state'))
|
||||||
).property('build.state')
|
).property('build.state')
|
||||||
|
|
||||||
urlBuild: (->
|
|
||||||
Travis.Urls.build(@get('repo.slug'), @get('build.id'))
|
|
||||||
).property('repo.slug', 'build.id')
|
|
||||||
|
|
||||||
urlGithubCommit: (->
|
urlGithubCommit: (->
|
||||||
Travis.Urls.githubCommit(@get('repo.slug'), @get('commit.sha'))
|
Travis.Urls.githubCommit(@get('repo.slug'), @get('commit.sha'))
|
||||||
).property('repo.slug', 'commit.sha')
|
).property('repo.slug', 'commit.sha')
|
||||||
|
|
||||||
|
urlGithubPullRequest: (->
|
||||||
|
Travis.Urls.githubPullRequest(@get('repo.slug'), @get('commit.pullRequestNumber'))
|
||||||
|
).property('repo.slug', 'commit.pullRequestNumber')
|
||||||
|
|
||||||
BuildView: Travis.View.extend
|
BuildView: Travis.View.extend
|
||||||
templateName: 'builds/show'
|
templateName: 'builds/show'
|
||||||
elementId: 'build'
|
elementId: 'build'
|
||||||
|
@ -62,10 +67,6 @@
|
||||||
Travis.Helpers.colorForState(@get('build.state'))
|
Travis.Helpers.colorForState(@get('build.state'))
|
||||||
).property('build.state')
|
).property('build.state')
|
||||||
|
|
||||||
urlBuild: (->
|
|
||||||
Travis.Urls.build(@get('repo.slug'), @get('build.id'))
|
|
||||||
).property('repo.slug', 'build.id')
|
|
||||||
|
|
||||||
urlGithubCommit: (->
|
urlGithubCommit: (->
|
||||||
Travis.Urls.githubCommit(@get('repo.slug'), @get('commit.sha'))
|
Travis.Urls.githubCommit(@get('repo.slug'), @get('commit.sha'))
|
||||||
).property('repo.slug', 'commit.sha')
|
).property('repo.slug', 'commit.sha')
|
||||||
|
|
|
@ -13,10 +13,6 @@
|
||||||
Travis.Helpers.colorForState(@get('job.state'))
|
Travis.Helpers.colorForState(@get('job.state'))
|
||||||
).property('job.state')
|
).property('job.state')
|
||||||
|
|
||||||
urlJob: (->
|
|
||||||
Travis.Urls.job(@get('repo.slug'), @get('job.id'))
|
|
||||||
).property('repo.slug', 'job.id')
|
|
||||||
|
|
||||||
JobView: Travis.View.extend
|
JobView: Travis.View.extend
|
||||||
templateName: 'jobs/show'
|
templateName: 'jobs/show'
|
||||||
|
|
||||||
|
@ -30,10 +26,6 @@
|
||||||
Travis.Helpers.colorForState(@get('job.state'))
|
Travis.Helpers.colorForState(@get('job.state'))
|
||||||
).property('job.state')
|
).property('job.state')
|
||||||
|
|
||||||
urlJob: (->
|
|
||||||
Travis.Urls.job(@get('repo.slug'), @get('job.id'))
|
|
||||||
).property('repo.slug', 'job.id')
|
|
||||||
|
|
||||||
urlGithubCommit: (->
|
urlGithubCommit: (->
|
||||||
Travis.Urls.githubCommit(@get('repo.slug'), @get('commit.sha'))
|
Travis.Urls.githubCommit(@get('repo.slug'), @get('commit.sha'))
|
||||||
).property('repo.slug', 'commit.sha')
|
).property('repo.slug', 'commit.sha')
|
||||||
|
@ -50,6 +42,11 @@
|
||||||
templateName: 'jobs/log'
|
templateName: 'jobs/log'
|
||||||
logBinding: 'job.log'
|
logBinding: 'job.log'
|
||||||
|
|
||||||
|
plainTextLogUrl: (->
|
||||||
|
if id = @get('job.log.id')
|
||||||
|
Travis.Urls.plainTextLog(id)
|
||||||
|
).property('job.log')
|
||||||
|
|
||||||
didInsertElement: ->
|
didInsertElement: ->
|
||||||
@_super.apply this, arguments
|
@_super.apply this, arguments
|
||||||
@tryScrollingToHashLineNumber()
|
@tryScrollingToHashLineNumber()
|
||||||
|
@ -186,7 +183,7 @@
|
||||||
unless payload.append
|
unless payload.append
|
||||||
pathWithNumber = "#{url}#L#{number}"
|
pathWithNumber = "#{url}#L#{number}"
|
||||||
p = document.createElement('p')
|
p = document.createElement('p')
|
||||||
p.innerHTML = '<a href="%@" id="L%@" class="log-line-number" name="L%@">%@</a>%@'.fmt(pathWithNumber, number, number, number, line)
|
p.innerHTML = '<a href="%@" id="L%@" class="log-line-number">%@</a>%@'.fmt(pathWithNumber, number, number, line)
|
||||||
line = p
|
line = p
|
||||||
|
|
||||||
if payload.fold && !payload.foldContinuation
|
if payload.fold && !payload.foldContinuation
|
||||||
|
|
|
@ -19,14 +19,6 @@
|
||||||
Travis.Helpers.colorForState(@get('repo.lastBuildState'))
|
Travis.Helpers.colorForState(@get('repo.lastBuildState'))
|
||||||
).property('repo.lastBuildState')
|
).property('repo.lastBuildState')
|
||||||
|
|
||||||
urlRepo: (->
|
|
||||||
Travis.Urls.repo(@get('repo.slug'))
|
|
||||||
).property('repo.slug')
|
|
||||||
|
|
||||||
urlLastBuild: (->
|
|
||||||
Travis.Urls.build(@get('repo.slug'), @get('repo.lastBuildId'))
|
|
||||||
).property('repo.slug', 'repo.lastBuildId')
|
|
||||||
|
|
||||||
ReposListTabsView: Travis.View.extend
|
ReposListTabsView: Travis.View.extend
|
||||||
templateName: 'repos/list/tabs'
|
templateName: 'repos/list/tabs'
|
||||||
tabBinding: 'controller.tab'
|
tabBinding: 'controller.tab'
|
||||||
|
|
|
@ -140,6 +140,20 @@
|
||||||
@get('isJobTab') && @get('job.isFinished') && @get('hasPermission')
|
@get('isJobTab') && @get('job.isFinished') && @get('hasPermission')
|
||||||
).property('isJobTab', 'job.isFinished', 'hasPermissions')
|
).property('isJobTab', 'job.isFinished', 'hasPermissions')
|
||||||
|
|
||||||
|
showDownloadLog: (->
|
||||||
|
@get('logId')
|
||||||
|
).property('logId')
|
||||||
|
|
||||||
|
logId: (->
|
||||||
|
@get('job.log.id') ||
|
||||||
|
(@get('build.jobs.length') == 1 && @get('build.jobs.firstObject.log.id'))
|
||||||
|
).property('job.log.id', 'build.jobs.firstObject.log.id', 'build.jobs.length')
|
||||||
|
|
||||||
|
plainTextLogUrl: (->
|
||||||
|
if id = @get('logId')
|
||||||
|
Travis.Urls.plainTextLog(id)
|
||||||
|
).property('logId')
|
||||||
|
|
||||||
canCancelBuild: (->
|
canCancelBuild: (->
|
||||||
# @get('isBuildTab') && @get('build.canCancel') && @get('hasPermission')
|
# @get('isBuildTab') && @get('build.canCancel') && @get('hasPermission')
|
||||||
false
|
false
|
||||||
|
@ -173,26 +187,29 @@
|
||||||
@get('repo.branches') if @get('active')
|
@get('repo.branches') if @get('active')
|
||||||
).property('active', 'repo.branches')
|
).property('active', 'repo.branches')
|
||||||
|
|
||||||
urlRepo: (->
|
setStatusImageBranch: (->
|
||||||
'https://' + location.host + Travis.Urls.repo(@get('repo.slug'))
|
if @get('repo.branches.isLoaded')
|
||||||
).property('repo.slug')
|
@set('statusImageBranch', @get('repo.branches').findProperty('commit.branch', @get('build.commit.branch')))
|
||||||
|
else
|
||||||
|
@set('statusImageBranch', null)
|
||||||
|
).observes('repo.branches', 'repo.branches.isLoaded', 'build.commit.branch')
|
||||||
|
|
||||||
urlStatusImage: (->
|
statusImageUrl: (->
|
||||||
Travis.Urls.statusImage(@get('repo.slug'), @get('branch.commit.branch'))
|
Travis.Urls.statusImage(@get('repo.slug'), @get('statusImageBranch.commit.branch'))
|
||||||
).property('repo.slug', 'branch')
|
).property('repo.slug', 'statusImageBranch')
|
||||||
|
|
||||||
markdownStatusImage: (->
|
markdownStatusImage: (->
|
||||||
"[})](#{@get('urlRepo')})"
|
"[})](#{@get('urlRepo')})"
|
||||||
).property('urlStatusImage')
|
).property('statusImageUrl')
|
||||||
|
|
||||||
textileStatusImage: (->
|
textileStatusImage: (->
|
||||||
"!#{@get('urlStatusImage')}!:#{@get('urlRepo')}"
|
"!#{@get('statusImageUrl')}!:#{@get('urlRepo')}"
|
||||||
).property('urlStatusImage')
|
).property('statusImageUrl')
|
||||||
|
|
||||||
rdocStatusImage: (->
|
rdocStatusImage: (->
|
||||||
"{<img src=\"#{@get('urlStatusImage')}\" alt=\"Build Status\" />}[#{@get('urlRepo')}]"
|
"{<img src=\"#{@get('statusImageUrl')}\" alt=\"Build Status\" />}[#{@get('urlRepo')}]"
|
||||||
).property('urlStatusImage')
|
).property('statusImageUrl')
|
||||||
|
|
||||||
asciidocStatusImage: (->
|
asciidocStatusImage: (->
|
||||||
"image:#{@get('urlStatusImage')}[\"Build Status\", link=\"#{@get('urlRepo')}\"]"
|
"image:#{@get('statusImageUrl')}[\"Build Status\", link=\"#{@get('urlRepo')}\"]"
|
||||||
).property('urlStatusImage')
|
).property('statusImageUrl')
|
||||||
|
|
File diff suppressed because one or more lines are too long
8
assets/scripts/lib/travis/instrumentation.coffee
Normal file
8
assets/scripts/lib/travis/instrumentation.coffee
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
Travis.Instrumentation = {
|
||||||
|
subscribe: (event) ->
|
||||||
|
Em.subscribe event,
|
||||||
|
before:(name, timestamp, payload) ->
|
||||||
|
timestamp
|
||||||
|
after: (name, timestamp, payload, start_timestamp) ->
|
||||||
|
console.log(name, payload, timestamp - start_timestamp)
|
||||||
|
}
|
|
@ -15,6 +15,8 @@ FOLDS = [
|
||||||
@addFold fold
|
@addFold fold
|
||||||
|
|
||||||
append: (lines) ->
|
append: (lines) ->
|
||||||
|
return unless lines
|
||||||
|
|
||||||
log = @join lines
|
log = @join lines
|
||||||
log = @escape log
|
log = @escape log
|
||||||
log = @deansi log
|
log = @deansi log
|
||||||
|
@ -122,7 +124,7 @@ FOLDS = [
|
||||||
.replace(/\033\[K\r/g, '\r')
|
.replace(/\033\[K\r/g, '\r')
|
||||||
.replace(/\[2K/g, '')
|
.replace(/\[2K/g, '')
|
||||||
.replace(/\033\(B/g, '')
|
.replace(/\033\(B/g, '')
|
||||||
.replace(/\033\[\d+G/, '')
|
.replace(/\033\[\d+G/g, '')
|
||||||
|
|
||||||
ansi = ansiparse(log)
|
ansi = ansiparse(log)
|
||||||
|
|
||||||
|
|
|
@ -93,7 +93,7 @@ Storage = Em.Object.extend
|
||||||
location.href = location.href.replace('#!/', '') if location.hash.slice(0, 2) == '#!'
|
location.href = location.href.replace('#!/', '') if location.hash.slice(0, 2) == '#!'
|
||||||
|
|
||||||
I18n.fallbacks = true
|
I18n.fallbacks = true
|
||||||
Travis.setLocale 'locale', @defualt_locale
|
Travis.setLocale 'locale', @default_locale
|
||||||
|
|
||||||
Ember.run.next this, ->
|
Ember.run.next this, ->
|
||||||
app = Travis.App.create(attrs || {})
|
app = Travis.App.create(attrs || {})
|
||||||
|
|
|
@ -1,12 +1,5 @@
|
||||||
@import "_mixins/all"
|
@import "_mixins/all"
|
||||||
|
|
||||||
@font-face
|
|
||||||
font-family: 'Glyphicons Halflings'
|
|
||||||
src: url('/fonts/glyphiconshalflings-regular.eot')
|
|
||||||
src: url('/fonts/glyphiconshalflings-regular.eot?#iefix') format('embedded-opentype'), url('/fonts/glyphiconshalflings-regular.woff') format('woff'), url('/fonts/glyphiconshalflings-regular.ttf') format('truetype'), url('/fonts/glyphiconshalflings-regular.svg#glyphicons_halflingsregular') format('svg')
|
|
||||||
font-weight: normal
|
|
||||||
font-style: normal
|
|
||||||
|
|
||||||
html, body
|
html, body
|
||||||
font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif
|
font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif
|
||||||
font-size: $font-size-small
|
font-size: $font-size-small
|
||||||
|
|
|
@ -43,7 +43,6 @@
|
||||||
table.list
|
table.list
|
||||||
tbody
|
tbody
|
||||||
td
|
td
|
||||||
cursor: pointer
|
|
||||||
background-color: $color-bg-job
|
background-color: $color-bg-job
|
||||||
tr:hover td
|
tr:hover td
|
||||||
background-color: $color-bg-job-highlight
|
background-color: $color-bg-job-highlight
|
||||||
|
|
|
@ -18,8 +18,9 @@ en:
|
||||||
messages:
|
messages:
|
||||||
sponsored_by: This test series was run on a worker box sponsored by
|
sponsored_by: This test series was run on a worker box sponsored by
|
||||||
name: Build
|
name: Build
|
||||||
|
pr: PR
|
||||||
started_at: Started
|
started_at: Started
|
||||||
state: state
|
state: State
|
||||||
datetime:
|
datetime:
|
||||||
distance_in_words:
|
distance_in_words:
|
||||||
hours_exact:
|
hours_exact:
|
||||||
|
@ -52,9 +53,9 @@ en:
|
||||||
message: Message
|
message: Message
|
||||||
messages:
|
messages:
|
||||||
sponsored_by: This test series was run on a worker box sponsored by
|
sponsored_by: This test series was run on a worker box sponsored by
|
||||||
sponsored_by:
|
sponsored_by: Sponsored by
|
||||||
started_at: Started
|
started_at: Started
|
||||||
state: state
|
state: State
|
||||||
layouts:
|
layouts:
|
||||||
about:
|
about:
|
||||||
alpha: This stuff is alpha.
|
alpha: This stuff is alpha.
|
||||||
|
@ -84,7 +85,7 @@ en:
|
||||||
job: Job
|
job: Job
|
||||||
log: Log
|
log: Log
|
||||||
top:
|
top:
|
||||||
accounts: accounts
|
accounts: Accounts
|
||||||
admin: Admin
|
admin: Admin
|
||||||
blog: Blog
|
blog: Blog
|
||||||
docs: Docs
|
docs: Docs
|
||||||
|
@ -92,7 +93,7 @@ en:
|
||||||
home: Home
|
home: Home
|
||||||
profile: Profile
|
profile: Profile
|
||||||
sign_out: Sign Out
|
sign_out: Sign Out
|
||||||
signing_in: signing_in
|
signing_in: Signing In
|
||||||
stats: Stats
|
stats: Stats
|
||||||
locales:
|
locales:
|
||||||
ca:
|
ca:
|
||||||
|
@ -153,6 +154,6 @@ en:
|
||||||
total_builds: Total Builds
|
total_builds: Total Builds
|
||||||
total_projects: Total Projects/Repositories
|
total_projects: Total Projects/Repositories
|
||||||
user:
|
user:
|
||||||
failure:
|
failure: failure
|
||||||
signed_out:
|
signed_out: Signed Out
|
||||||
workers: Workers
|
workers: Workers
|
||||||
|
|
|
@ -18,6 +18,7 @@ es:
|
||||||
messages:
|
messages:
|
||||||
sponsored_by: Esta serie de tests han sido ejecutados en una caja de Proceso patrocinada por
|
sponsored_by: Esta serie de tests han sido ejecutados en una caja de Proceso patrocinada por
|
||||||
name: Build
|
name: Build
|
||||||
|
pr:
|
||||||
started_at: Iniciado
|
started_at: Iniciado
|
||||||
state:
|
state:
|
||||||
datetime:
|
datetime:
|
||||||
|
|
|
@ -18,6 +18,7 @@ fr:
|
||||||
messages:
|
messages:
|
||||||
sponsored_by: Cette série de tests a été exécutée sur une machine sponsorisée par
|
sponsored_by: Cette série de tests a été exécutée sur une machine sponsorisée par
|
||||||
name: Version
|
name: Version
|
||||||
|
pr:
|
||||||
started_at: Commencé
|
started_at: Commencé
|
||||||
state:
|
state:
|
||||||
datetime:
|
datetime:
|
||||||
|
|
|
@ -18,6 +18,7 @@ ja:
|
||||||
messages:
|
messages:
|
||||||
sponsored_by: このテストは以下のスポンサーの協力で行いました。
|
sponsored_by: このテストは以下のスポンサーの協力で行いました。
|
||||||
name: ビルド
|
name: ビルド
|
||||||
|
pr:
|
||||||
started_at: 開始時刻
|
started_at: 開始時刻
|
||||||
state:
|
state:
|
||||||
datetime:
|
datetime:
|
||||||
|
|
|
@ -18,6 +18,7 @@ nb:
|
||||||
messages:
|
messages:
|
||||||
sponsored_by: Denne testen ble kjørt på en maskin sponset av
|
sponsored_by: Denne testen ble kjørt på en maskin sponset av
|
||||||
name: Jobb
|
name: Jobb
|
||||||
|
pr:
|
||||||
started_at: Startet
|
started_at: Startet
|
||||||
state:
|
state:
|
||||||
datetime:
|
datetime:
|
||||||
|
|
|
@ -7,7 +7,7 @@ nl:
|
||||||
allowed_failures: Toegestane mislukkingen
|
allowed_failures: Toegestane mislukkingen
|
||||||
author: Auteur
|
author: Auteur
|
||||||
branch: Tak
|
branch: Tak
|
||||||
build_matrix: Bouw Matrix
|
build_matrix: Bouw matrix
|
||||||
commit: Commit
|
commit: Commit
|
||||||
committer: Committer
|
committer: Committer
|
||||||
compare: Vergelijk
|
compare: Vergelijk
|
||||||
|
@ -18,6 +18,7 @@ nl:
|
||||||
messages:
|
messages:
|
||||||
sponsored_by: Deze tests zijn gedraaid op een machine gesponsord door
|
sponsored_by: Deze tests zijn gedraaid op een machine gesponsord door
|
||||||
name: Bouw
|
name: Bouw
|
||||||
|
pr:
|
||||||
started_at: Gestart
|
started_at: Gestart
|
||||||
state:
|
state:
|
||||||
datetime:
|
datetime:
|
||||||
|
@ -84,7 +85,7 @@ nl:
|
||||||
job: Taak
|
job: Taak
|
||||||
log: Logboek
|
log: Logboek
|
||||||
top:
|
top:
|
||||||
accounts:
|
accounts: accounts
|
||||||
admin: Administratie
|
admin: Administratie
|
||||||
blog: Blog
|
blog: Blog
|
||||||
docs: Documentatie
|
docs: Documentatie
|
||||||
|
@ -110,7 +111,7 @@ nl:
|
||||||
show:
|
show:
|
||||||
email: Email adres
|
email: Email adres
|
||||||
github: Github
|
github: Github
|
||||||
locale:
|
locale: Taal
|
||||||
message:
|
message:
|
||||||
config: hoe eigen bouw-opties in te stellen
|
config: hoe eigen bouw-opties in te stellen
|
||||||
your_repos: ! 'Zet de schakelaars hieronder aan om de Travis hook voor uw projecten te activeren en push daarna naar Github<br />
|
your_repos: ! 'Zet de schakelaars hieronder aan om de Travis hook voor uw projecten te activeren en push daarna naar Github<br />
|
||||||
|
@ -141,7 +142,7 @@ nl:
|
||||||
build_history: Bouw geschiedenis
|
build_history: Bouw geschiedenis
|
||||||
current: Huidig
|
current: Huidig
|
||||||
job: Taak
|
job: Taak
|
||||||
pull_requests:
|
pull_requests: Pull Requests
|
||||||
test:
|
test:
|
||||||
textile: Textile
|
textile: Textile
|
||||||
repository:
|
repository:
|
||||||
|
|
|
@ -4,7 +4,7 @@ pl:
|
||||||
finished_at: Zakończono
|
finished_at: Zakończono
|
||||||
job: Zadanie
|
job: Zadanie
|
||||||
builds:
|
builds:
|
||||||
allowed_failures: Dopuszczalne Niepowodzenia
|
allowed_failures: Akceptowalne Niepowodzenia
|
||||||
author: Autor
|
author: Autor
|
||||||
branch: Gałąź
|
branch: Gałąź
|
||||||
build_matrix: Macierz Buildów
|
build_matrix: Macierz Buildów
|
||||||
|
@ -18,33 +18,37 @@ pl:
|
||||||
messages:
|
messages:
|
||||||
sponsored_by: Te testy zostały uruchomione na maszynie sponsorowanej przez
|
sponsored_by: Te testy zostały uruchomione na maszynie sponsorowanej przez
|
||||||
name: Build
|
name: Build
|
||||||
|
pr:
|
||||||
started_at: Rozpoczęto
|
started_at: Rozpoczęto
|
||||||
state:
|
state: status
|
||||||
datetime:
|
datetime:
|
||||||
distance_in_words:
|
distance_in_words:
|
||||||
hours_exact:
|
hours_exact:
|
||||||
|
few: ! '%{count} godzin'
|
||||||
one: ! '%{count} godzina'
|
one: ! '%{count} godzina'
|
||||||
other: ! '%{count} godziny'
|
other: ! '%{count} godziny'
|
||||||
minutes_exact:
|
minutes_exact:
|
||||||
|
few: ! '%{count} minut'
|
||||||
one: ! '%{count} minuta'
|
one: ! '%{count} minuta'
|
||||||
other: ! '%{count} minuty'
|
other: ! '%{count} minuty'
|
||||||
seconds_exact:
|
seconds_exact:
|
||||||
|
few: ! '%{count} sekund'
|
||||||
one: ! '%{count} sekunda'
|
one: ! '%{count} sekunda'
|
||||||
other: ! '%{count} sekundy'
|
other: ! '%{count} sekundy'
|
||||||
errors:
|
errors:
|
||||||
messages:
|
messages:
|
||||||
already_confirmed:
|
already_confirmed: został już potwierdzony
|
||||||
not_found:
|
not_found: nie znaleziono
|
||||||
not_locked:
|
not_locked: nie został zablokowany
|
||||||
home:
|
home:
|
||||||
name:
|
name: główna
|
||||||
jobs:
|
jobs:
|
||||||
allowed_failures: Dopuszczalne Niepowodzenia
|
allowed_failures: Dopuszczalne Niepowodzenia
|
||||||
author: Autor
|
author: Autor
|
||||||
branch: Gałąź
|
branch: Gałąź
|
||||||
build_matrix: Macierz Buildów
|
build_matrix: Macierz Buildów
|
||||||
commit: Commit
|
commit: Commit
|
||||||
committer: Committer
|
committer: Komitujący
|
||||||
compare: Porównanie
|
compare: Porównanie
|
||||||
config: Konfiguracja
|
config: Konfiguracja
|
||||||
duration: Czas trwania
|
duration: Czas trwania
|
||||||
|
@ -54,19 +58,19 @@ pl:
|
||||||
sponsored_by: Te testy zostały uruchomione na maszynie sponsorowanej przez
|
sponsored_by: Te testy zostały uruchomione na maszynie sponsorowanej przez
|
||||||
sponsored_by: Te testy zostały uruchomione na maszynie sponsorowanej przez
|
sponsored_by: Te testy zostały uruchomione na maszynie sponsorowanej przez
|
||||||
started_at: Rozpoczęto
|
started_at: Rozpoczęto
|
||||||
state:
|
state: status
|
||||||
layouts:
|
layouts:
|
||||||
about:
|
about:
|
||||||
alpha: To wciąż jest wersja alpha.
|
alpha: To wciąż jest wersja alpha.
|
||||||
join: Pomóż i dołącz do nas!
|
join: Dołącz do nas i pomóż!
|
||||||
mailing_list: Lista mailingowa
|
mailing_list: Lista Mailingowa
|
||||||
messages:
|
messages:
|
||||||
alpha: Proszę <strong>nie</strong> traktuj tego jako stabilnej usługi. Wciąż nam wiele do tego brakuje! Więcej informacji znajdziesz <a href='https://github.com/travis-ci'>tutaj.</a>
|
alpha: Proszę <strong>nie</strong> traktuj tego jako stabilnej usługi. Wciąż nam wiele do tego brakuje! Więcej informacji znajdziesz <a href='https://github.com/travis-ci'>tutaj.</a>
|
||||||
repository: Repozytorium
|
repository: Repozytorium
|
||||||
twitter: Twitter
|
twitter: Twitter
|
||||||
application:
|
application:
|
||||||
fork_me: Fork me on Github
|
fork_me: Fork me on Github
|
||||||
my_repositories: Moje repozytoria
|
my_repositories: Moje Repozytoria
|
||||||
recent: Ostatnie
|
recent: Ostatnie
|
||||||
search: Wyniki
|
search: Wyniki
|
||||||
sponsers: Sponsorzy
|
sponsers: Sponsorzy
|
||||||
|
@ -84,18 +88,18 @@ pl:
|
||||||
job: Zadanie
|
job: Zadanie
|
||||||
log: Log
|
log: Log
|
||||||
top:
|
top:
|
||||||
accounts:
|
accounts: Konta
|
||||||
admin:
|
admin: Admin
|
||||||
blog: Blog
|
blog: Blog
|
||||||
docs: Dokumentacja
|
docs: Dokumentacja
|
||||||
github_login: Zaloguj się przy pomocy Githuba
|
github_login: Zaloguj się przy pomocy Githuba
|
||||||
home: Start
|
home: Start
|
||||||
profile: Profil
|
profile: Profil
|
||||||
sign_out: Wyloguj się
|
sign_out: Wyloguj się
|
||||||
signing_in:
|
signing_in: Zaloguj się
|
||||||
stats: Statystki
|
stats: Statystki
|
||||||
locales:
|
locales:
|
||||||
ca:
|
ca: Čeština
|
||||||
en: English
|
en: English
|
||||||
es: Español
|
es: Español
|
||||||
fr: Français
|
fr: Français
|
||||||
|
@ -108,27 +112,29 @@ pl:
|
||||||
no_job: Brak zadań
|
no_job: Brak zadań
|
||||||
profiles:
|
profiles:
|
||||||
show:
|
show:
|
||||||
email: Email
|
email: E-mail
|
||||||
github: Github
|
github: Github
|
||||||
locale:
|
locale: język
|
||||||
message:
|
message:
|
||||||
config: jak skonfigurować niestandardowe opcje builda
|
config: jak skonfigurować niestandardowe opcje builda
|
||||||
your_repos: ! " Przesuń suwak poniżej, aby włączyć Travisa, dla twoich projektów, a następnie umieść swój kod na GitHubie.<br />\n Aby testować swój kod przy użyciu wielu wersji Rubiego, zobacz"
|
your_repos: ! 'Przesuń suwak poniżej, aby włączyć Travisa dla twoich projektów, a następnie umieść swój kod na GitHubie.<br />
|
||||||
|
|
||||||
|
Aby testować swój kod przy użyciu wielu wersji Rubiego, zobacz'
|
||||||
messages:
|
messages:
|
||||||
notice: ! "Aby zacząć, przeczytaj nasz <a href=\"http://about.travis-ci.org/docs/user/getting-started/\">Przewodnik</a>.\n <small>Zajmie ci to tylko kilka minut.</small>"
|
notice: ! "Aby zacząć, przeczytaj nasz <a href=\"http://about.travis-ci.org/docs/user/getting-started/\">Przewodnik</a>.\n <small>Zajmie ci to tylko kilka minut.</small>"
|
||||||
token: Token
|
token: Token
|
||||||
update:
|
update: Zmień
|
||||||
update_locale:
|
update_locale: Zmień
|
||||||
your_locale:
|
your_locale: Twój Język
|
||||||
your_repos: Twoje repozytoria
|
your_repos: Twoje Repozytoria
|
||||||
queue: Kolejka
|
queue: Kolejka
|
||||||
repositories:
|
repositories:
|
||||||
asciidoc:
|
asciidoc: AsciiDoc
|
||||||
branch: Gałąź
|
branch: Gałąź
|
||||||
commit: Commit
|
commit: Commit
|
||||||
duration: Czas trwania
|
duration: Czas trwania
|
||||||
finished_at: Zakończono
|
finished_at: Zakończono
|
||||||
image_url: URL obrazka
|
image_url: URL Obrazka
|
||||||
markdown: Markdown
|
markdown: Markdown
|
||||||
message: Opis
|
message: Opis
|
||||||
rdoc: RDOC
|
rdoc: RDOC
|
||||||
|
@ -139,20 +145,20 @@ pl:
|
||||||
build_history: Historia Buildów
|
build_history: Historia Buildów
|
||||||
current: Aktualny
|
current: Aktualny
|
||||||
job: Zadanie
|
job: Zadanie
|
||||||
pull_requests:
|
pull_requests: Pull Requesty
|
||||||
test:
|
test:
|
||||||
textile: Textile
|
textile: Textile
|
||||||
repository:
|
repository:
|
||||||
duration:
|
duration: Czas trwania
|
||||||
statistics:
|
statistics:
|
||||||
index:
|
index:
|
||||||
build_count: Liczba buildów
|
build_count: Liczba buildów
|
||||||
count: Ilość
|
count: Ilość
|
||||||
last_month: ostatni miesiąc
|
last_month: ostatni miesiąc
|
||||||
repo_growth: Przyrost repozytoriów
|
repo_growth: Przyrost Repozytoriów
|
||||||
total_builds: Łącznie Buildów
|
total_builds: Łącznie Buildów
|
||||||
total_projects: Łącznie projektów/repozytoriów
|
total_projects: Łącznie Projektów/Repozytoriów
|
||||||
user:
|
user:
|
||||||
failure:
|
failure: niepowodzenie
|
||||||
signed_out:
|
signed_out: Wyloguj
|
||||||
workers: Workers
|
workers: Workery
|
||||||
|
|
|
@ -18,6 +18,7 @@ pt-BR:
|
||||||
messages:
|
messages:
|
||||||
sponsored_by: Esta série de testes foi executada em uma caixa de processos patrocinada por
|
sponsored_by: Esta série de testes foi executada em uma caixa de processos patrocinada por
|
||||||
name: Build
|
name: Build
|
||||||
|
pr:
|
||||||
started_at: Iniciou em
|
started_at: Iniciou em
|
||||||
state:
|
state:
|
||||||
datetime:
|
datetime:
|
||||||
|
|
|
@ -18,8 +18,9 @@ ru:
|
||||||
messages:
|
messages:
|
||||||
sponsored_by: Эта серия тестов была запущена на машине, спонсируемой
|
sponsored_by: Эта серия тестов была запущена на машине, спонсируемой
|
||||||
name: Билд
|
name: Билд
|
||||||
|
pr:
|
||||||
started_at: Начало
|
started_at: Начало
|
||||||
state:
|
state: состояние
|
||||||
datetime:
|
datetime:
|
||||||
distance_in_words:
|
distance_in_words:
|
||||||
hours_exact:
|
hours_exact:
|
||||||
|
@ -58,9 +59,9 @@ ru:
|
||||||
message: Комментарий
|
message: Комментарий
|
||||||
messages:
|
messages:
|
||||||
sponsored_by: Эта серия тестов была запущена на машине спонсируемой
|
sponsored_by: Эта серия тестов была запущена на машине спонсируемой
|
||||||
sponsored_by:
|
sponsored_by: Спонсоры
|
||||||
started_at: Начало
|
started_at: Начало
|
||||||
state:
|
state: состояние
|
||||||
layouts:
|
layouts:
|
||||||
about:
|
about:
|
||||||
alpha: Это альфа-версия
|
alpha: Это альфа-версия
|
||||||
|
@ -90,7 +91,7 @@ ru:
|
||||||
job: Задача
|
job: Задача
|
||||||
log: Журнал
|
log: Журнал
|
||||||
top:
|
top:
|
||||||
accounts:
|
accounts: аккаунты
|
||||||
admin: Управление
|
admin: Управление
|
||||||
blog: Блог
|
blog: Блог
|
||||||
docs: Документация
|
docs: Документация
|
||||||
|
@ -98,7 +99,7 @@ ru:
|
||||||
home: Главная
|
home: Главная
|
||||||
profile: Профиль
|
profile: Профиль
|
||||||
sign_out: Выход
|
sign_out: Выход
|
||||||
signing_in:
|
signing_in: авторизация
|
||||||
stats: Статистика
|
stats: Статистика
|
||||||
locales:
|
locales:
|
||||||
ca:
|
ca:
|
||||||
|
@ -116,7 +117,7 @@ ru:
|
||||||
show:
|
show:
|
||||||
email: Электронная почта
|
email: Электронная почта
|
||||||
github: Github
|
github: Github
|
||||||
locale:
|
locale: Язык
|
||||||
message:
|
message:
|
||||||
config: как настроить специальные опции билда
|
config: как настроить специальные опции билда
|
||||||
your_repos: ! 'Используйте переключатели, чтобы включить Travis service hook для вашего проекта, а потом отправьте код на GitHub.<br />
|
your_repos: ! 'Используйте переключатели, чтобы включить Travis service hook для вашего проекта, а потом отправьте код на GitHub.<br />
|
||||||
|
@ -131,7 +132,7 @@ ru:
|
||||||
your_repos: Ваши репозитории
|
your_repos: Ваши репозитории
|
||||||
queue: Очередь
|
queue: Очередь
|
||||||
repositories:
|
repositories:
|
||||||
asciidoc:
|
asciidoc: asciidoc
|
||||||
branch: Ветка
|
branch: Ветка
|
||||||
commit: Коммит
|
commit: Коммит
|
||||||
duration: Длительность
|
duration: Длительность
|
||||||
|
|
|
@ -6,6 +6,10 @@
|
||||||
<meta name="travis.pusher_key" value="23ed642e81512118260e">
|
<meta name="travis.pusher_key" value="23ed642e81512118260e">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<title>Travis CI - Free Hosted Continuous Integration Platform for the Open Source Community</title>
|
<title>Travis CI - Free Hosted Continuous Integration Platform for the Open Source Community</title>
|
||||||
|
<link rel="dns-prefetch" href="//api.travis-ci.org">
|
||||||
|
<link rel="dns-prefetch" href="//ws.pusherapp.com">
|
||||||
|
<link rel="dns-prefetch" href="//api.github.com">
|
||||||
|
<link rel="dns-prefetch" href="//www.gravatar.com">
|
||||||
<link rel="icon" type="image/png" href="/favicon.ico">
|
<link rel="icon" type="image/png" href="/favicon.ico">
|
||||||
<link rel="stylesheet" href="/styles/app.css">
|
<link rel="stylesheet" href="/styles/app.css">
|
||||||
<script src="/scripts/app.js"></script>
|
<script src="/scripts/app.js"></script>
|
||||||
|
|
Loading…
Reference in New Issue
Block a user