Merge branch 'master' of github.com:travis-ci/travis-web

This commit is contained in:
Sven Fuchs 2013-01-17 20:25:13 +01:00
commit 99edd9f0df
32 changed files with 223 additions and 160 deletions

1
.gitignore vendored
View File

@ -6,3 +6,4 @@
/public/version /public/version
.sass-cache .sass-cache
.localeapp/key .localeapp/key
/assets/scripts/config/locales.js

View File

@ -1,3 +1,3 @@
--- ---
:polled_at: 1355238733 :polled_at: 1358204368
:updated_at: 1355238733 :updated_at: 1358204368

View File

@ -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

View File

@ -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

View File

@ -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]

View File

@ -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"

View File

@ -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')

View File

@ -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()

View File

@ -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)

View File

@ -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')

View File

@ -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>

View File

@ -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>

View File

@ -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')

View File

@ -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

View File

@ -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'

View File

@ -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: (->
"[![Build Status](#{@get('urlStatusImage')})](#{@get('urlRepo')})" "[![Build Status](#{@get('statusImageUrl')})](#{@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

View 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)
}

View File

@ -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)

View File

@ -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 || {})

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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:

View File

@ -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:

View File

@ -18,6 +18,7 @@ ja:
messages: messages:
sponsored_by: このテストは以下のスポンサーの協力で行いました。 sponsored_by: このテストは以下のスポンサーの協力で行いました。
name: ビルド name: ビルド
pr:
started_at: 開始時刻 started_at: 開始時刻
state: state:
datetime: datetime:

View File

@ -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:

View File

@ -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:

View File

@ -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

View File

@ -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:

View File

@ -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: Длительность

View File

@ -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>