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
.sass-cache
.localeapp/key
/assets/scripts/config/locales.js

View File

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

View File

@ -2,30 +2,26 @@
### 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
cd travis-web
open public/index.html
bundle install
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
bundle exec rackup
API_ENDPOINT="http://localhost:300/" bundle exec foreman start
This will run against API run locally.
### Compiling assets manually
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 'data/sponsors'
require 'travis/instrumentation'
# $.mockjaxSettings.log = false
# Ember.LOG_BINDINGS = true
# Ember.ENV.RAISE_ON_DEPRECATION = true

View File

@ -30,12 +30,13 @@
if user && token && @validateUser(user)
{ user: user, token: token }
else
console.log('dropping user, no token') unless token?
storage.removeItem('travis.user')
storage.removeItem('travis.token')
null
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) ->
if user[field]

View File

@ -1,21 +1,9 @@
@Travis.Urls =
repo: (slug) ->
"/#{slug}"
plainTextLog: (id) ->
"#{Travis.config.api_endpoint}/artifacts/#{id}.txt?deansi=true"
builds: (slug) ->
"/#{slug}/builds"
pullRequests: (slug) ->
"/#{slug}/pull_requests"
branches: (slug) ->
"/#{slug}/branches"
build: (slug, id) ->
"/#{slug}/builds/#{id}"
job: (slug, id) ->
"/#{slug}/jobs/#{id}"
githubPullRequest: (slug, pullRequestNumber) ->
"http://github.com/#{slug}/pull/#{pullRequestNumber}"
githubCommit: (slug, sha) ->
"http://github.com/#{slug}/commit/#{sha}"
@ -37,10 +25,3 @@
email: (email) ->
"mailto:#{email}"
account: (login) ->
"/profile/#{login}"
user: (login) ->
"/profile/#{login}/me"

View File

@ -1,14 +1,15 @@
require 'travis/model'
@Travis.Commit = Travis.Model.extend
buildId: DS.attr('number')
sha: DS.attr('string')
branch: DS.attr('string')
message: DS.attr('string')
compareUrl: DS.attr('string')
authorName: DS.attr('string')
authorEmail: DS.attr('string')
committerName: DS.attr('string')
committerEmail: DS.attr('string')
buildId: DS.attr('number')
sha: DS.attr('string')
branch: DS.attr('string')
message: DS.attr('string')
compareUrl: DS.attr('string')
authorName: DS.attr('string')
authorEmail: DS.attr('string')
committerName: DS.attr('string')
committerEmail: DS.attr('string')
pullRequestNumber: DS.attr('number')
build: DS.belongsTo('Travis.Build', key: 'buildId')

View File

@ -2,7 +2,7 @@ require 'travis/ajax'
require 'travis/model'
@Travis.User = Travis.Model.extend
name: DS.attr('string')
_name: DS.attr('string', key: 'name')
email: DS.attr('string')
login: DS.attr('string')
token: DS.attr('string')
@ -12,6 +12,15 @@ require 'travis/model'
syncedAt: DS.attr('string')
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: ->
@poll() if @get('isSyncing')
@_super()
@ -19,7 +28,7 @@ require 'travis/model'
Ember.run.next this, ->
transaction = @get('store').transaction()
transaction.add this
urlGithub: (->
"https://github.com/#{@get('login')}"
).property()
@ -32,7 +41,7 @@ require 'travis/model'
).property()
updateLocale: (locale) ->
transaction = @get('transaction')
transaction.commit()

View File

@ -204,7 +204,7 @@ Travis.Router = Ember.Router.extend
dynamicSegmentPattern: "([^/#]+)"
connectOutlets: (router, repo) ->
unless repo.constructor == Travis.Repo
if repo && repo.constructor != Travis.Repo
repo = Travis.Repo.find(repo.id)
router.get('repoController').set 'repo', repo
@ -300,6 +300,19 @@ Travis.Router = Ember.Router.extend
lineNumber: lineNumberRoute
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
route: '/pull_requests'
connectOutlets: (router, repo) ->
@ -349,3 +362,16 @@ Travis.Router = Ember.Router.extend
initialState: 'default'
default: defaultRoute
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 }
receive: (event, data) ->
return if event == 'worker:added' || event == 'worker:removed'
[name, type] = event.split(':')
mappings = @adapter.get('mappings')

View File

@ -3,8 +3,15 @@
<thead>
<tr>
<th>{{t builds.name}}</th>
<th>{{t builds.commit}}</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.finished_at}}</th>
</tr>
@ -21,14 +28,21 @@
</a>
{{/if}}
</td>
<td class="message">
{{{formatMessage commit.message short="true"}}}
</td>
<td class="commit">
<a {{bindAttr href="view.urlGithubCommit"}}>
{{formatCommit commit}}
</a>
</td>
<td class="message">
{{{formatMessage commit.message short="true"}}}
</td>
{{#if commit.pullRequestNumber}}
<td>
<a {{bindAttr href="view.urlGithubPullRequest"}}>
#{{commit.pullRequestNumber}}
</a>
</td>
{{/if}}
<td class="duration" {{bindAttr title="duration"}}>
{{formatDuration duration}}
</td>

View File

@ -29,6 +29,11 @@
<a href="#" name="regenerate-key" class="open-popup" {{action regenerateKeyPopup target="view"}}>Regenerate Key</a>
</li>
{{/if}}
{{#if view.showDownloadLog}}
<li>
<a class="download-log" {{bindAttr href="view.plainTextLogUrl"}}>Download log</a>
</li>
{{/if}}
</ul>
</div>
@ -37,14 +42,14 @@
<p>
<label>{{t repositories.branch}}:</label>
{{#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}}
<span class="loading"></span>
{{/if}}
</p>
<p>
<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>
<label>{{t repositories.markdown}}:</label>

View File

@ -3,6 +3,11 @@
templateName: 'builds/list'
buildsBinding: 'controller.builds'
isPullRequestsList: (->
console.log @get('controller.tab')
@get('controller.tab') == 'pull_requests'
).property('controller.tab')
showMore: ->
id = @get('controller.repo.id')
number = @get('builds.lastObject.number')
@ -35,14 +40,14 @@
Travis.Helpers.colorForState(@get('build.state'))
).property('build.state')
urlBuild: (->
Travis.Urls.build(@get('repo.slug'), @get('build.id'))
).property('repo.slug', 'build.id')
urlGithubCommit: (->
Travis.Urls.githubCommit(@get('repo.slug'), @get('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
templateName: 'builds/show'
elementId: 'build'
@ -62,10 +67,6 @@
Travis.Helpers.colorForState(@get('build.state'))
).property('build.state')
urlBuild: (->
Travis.Urls.build(@get('repo.slug'), @get('build.id'))
).property('repo.slug', 'build.id')
urlGithubCommit: (->
Travis.Urls.githubCommit(@get('repo.slug'), @get('commit.sha'))
).property('repo.slug', 'commit.sha')

View File

@ -13,10 +13,6 @@
Travis.Helpers.colorForState(@get('job.state'))
).property('job.state')
urlJob: (->
Travis.Urls.job(@get('repo.slug'), @get('job.id'))
).property('repo.slug', 'job.id')
JobView: Travis.View.extend
templateName: 'jobs/show'
@ -30,10 +26,6 @@
Travis.Helpers.colorForState(@get('job.state'))
).property('job.state')
urlJob: (->
Travis.Urls.job(@get('repo.slug'), @get('job.id'))
).property('repo.slug', 'job.id')
urlGithubCommit: (->
Travis.Urls.githubCommit(@get('repo.slug'), @get('commit.sha'))
).property('repo.slug', 'commit.sha')
@ -50,6 +42,11 @@
templateName: 'jobs/log'
logBinding: 'job.log'
plainTextLogUrl: (->
if id = @get('job.log.id')
Travis.Urls.plainTextLog(id)
).property('job.log')
didInsertElement: ->
@_super.apply this, arguments
@tryScrollingToHashLineNumber()
@ -186,7 +183,7 @@
unless payload.append
pathWithNumber = "#{url}#L#{number}"
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
if payload.fold && !payload.foldContinuation

View File

@ -19,14 +19,6 @@
Travis.Helpers.colorForState(@get('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
templateName: 'repos/list/tabs'
tabBinding: 'controller.tab'

View File

@ -140,6 +140,20 @@
@get('isJobTab') && @get('job.isFinished') && @get('hasPermission')
).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: (->
# @get('isBuildTab') && @get('build.canCancel') && @get('hasPermission')
false
@ -173,26 +187,29 @@
@get('repo.branches') if @get('active')
).property('active', 'repo.branches')
urlRepo: (->
'https://' + location.host + Travis.Urls.repo(@get('repo.slug'))
).property('repo.slug')
setStatusImageBranch: (->
if @get('repo.branches.isLoaded')
@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: (->
Travis.Urls.statusImage(@get('repo.slug'), @get('branch.commit.branch'))
).property('repo.slug', 'branch')
statusImageUrl: (->
Travis.Urls.statusImage(@get('repo.slug'), @get('statusImageBranch.commit.branch'))
).property('repo.slug', 'statusImageBranch')
markdownStatusImage: (->
"[![Build Status](#{@get('urlStatusImage')})](#{@get('urlRepo')})"
).property('urlStatusImage')
"[![Build Status](#{@get('statusImageUrl')})](#{@get('urlRepo')})"
).property('statusImageUrl')
textileStatusImage: (->
"!#{@get('urlStatusImage')}!:#{@get('urlRepo')}"
).property('urlStatusImage')
"!#{@get('statusImageUrl')}!:#{@get('urlRepo')}"
).property('statusImageUrl')
rdocStatusImage: (->
"{<img src=\"#{@get('urlStatusImage')}\" alt=\"Build Status\" />}[#{@get('urlRepo')}]"
).property('urlStatusImage')
"{<img src=\"#{@get('statusImageUrl')}\" alt=\"Build Status\" />}[#{@get('urlRepo')}]"
).property('statusImageUrl')
asciidocStatusImage: (->
"image:#{@get('urlStatusImage')}[\"Build Status\", link=\"#{@get('urlRepo')}\"]"
).property('urlStatusImage')
"image:#{@get('statusImageUrl')}[\"Build Status\", link=\"#{@get('urlRepo')}\"]"
).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
append: (lines) ->
return unless lines
log = @join lines
log = @escape log
log = @deansi log
@ -122,7 +124,7 @@ FOLDS = [
.replace(/\033\[K\r/g, '\r')
.replace(/\[2K/g, '')
.replace(/\033\(B/g, '')
.replace(/\033\[\d+G/, '')
.replace(/\033\[\d+G/g, '')
ansi = ansiparse(log)

View File

@ -93,7 +93,7 @@ Storage = Em.Object.extend
location.href = location.href.replace('#!/', '') if location.hash.slice(0, 2) == '#!'
I18n.fallbacks = true
Travis.setLocale 'locale', @defualt_locale
Travis.setLocale 'locale', @default_locale
Ember.run.next this, ->
app = Travis.App.create(attrs || {})

View File

@ -1,12 +1,5 @@
@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
font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif
font-size: $font-size-small

View File

@ -43,7 +43,6 @@
table.list
tbody
td
cursor: pointer
background-color: $color-bg-job
tr:hover td
background-color: $color-bg-job-highlight

View File

@ -18,8 +18,9 @@ en:
messages:
sponsored_by: This test series was run on a worker box sponsored by
name: Build
pr: PR
started_at: Started
state: state
state: State
datetime:
distance_in_words:
hours_exact:
@ -52,9 +53,9 @@ en:
message: Message
messages:
sponsored_by: This test series was run on a worker box sponsored by
sponsored_by:
sponsored_by: Sponsored by
started_at: Started
state: state
state: State
layouts:
about:
alpha: This stuff is alpha.
@ -84,7 +85,7 @@ en:
job: Job
log: Log
top:
accounts: accounts
accounts: Accounts
admin: Admin
blog: Blog
docs: Docs
@ -92,7 +93,7 @@ en:
home: Home
profile: Profile
sign_out: Sign Out
signing_in: signing_in
signing_in: Signing In
stats: Stats
locales:
ca:
@ -153,6 +154,6 @@ en:
total_builds: Total Builds
total_projects: Total Projects/Repositories
user:
failure:
signed_out:
failure: failure
signed_out: Signed Out
workers: Workers

View File

@ -18,6 +18,7 @@ es:
messages:
sponsored_by: Esta serie de tests han sido ejecutados en una caja de Proceso patrocinada por
name: Build
pr:
started_at: Iniciado
state:
datetime:

View File

@ -18,6 +18,7 @@ fr:
messages:
sponsored_by: Cette série de tests a été exécutée sur une machine sponsorisée par
name: Version
pr:
started_at: Commencé
state:
datetime:

View File

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

View File

@ -18,6 +18,7 @@ nb:
messages:
sponsored_by: Denne testen ble kjørt på en maskin sponset av
name: Jobb
pr:
started_at: Startet
state:
datetime:

View File

@ -7,7 +7,7 @@ nl:
allowed_failures: Toegestane mislukkingen
author: Auteur
branch: Tak
build_matrix: Bouw Matrix
build_matrix: Bouw matrix
commit: Commit
committer: Committer
compare: Vergelijk
@ -18,6 +18,7 @@ nl:
messages:
sponsored_by: Deze tests zijn gedraaid op een machine gesponsord door
name: Bouw
pr:
started_at: Gestart
state:
datetime:
@ -84,7 +85,7 @@ nl:
job: Taak
log: Logboek
top:
accounts:
accounts: accounts
admin: Administratie
blog: Blog
docs: Documentatie
@ -110,7 +111,7 @@ nl:
show:
email: Email adres
github: Github
locale:
locale: Taal
message:
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 />
@ -141,7 +142,7 @@ nl:
build_history: Bouw geschiedenis
current: Huidig
job: Taak
pull_requests:
pull_requests: Pull Requests
test:
textile: Textile
repository:

View File

@ -4,7 +4,7 @@ pl:
finished_at: Zakończono
job: Zadanie
builds:
allowed_failures: Dopuszczalne Niepowodzenia
allowed_failures: Akceptowalne Niepowodzenia
author: Autor
branch: Gałąź
build_matrix: Macierz Buildów
@ -18,33 +18,37 @@ pl:
messages:
sponsored_by: Te testy zostały uruchomione na maszynie sponsorowanej przez
name: Build
pr:
started_at: Rozpoczęto
state:
state: status
datetime:
distance_in_words:
hours_exact:
few: ! '%{count} godzin'
one: ! '%{count} godzina'
other: ! '%{count} godziny'
minutes_exact:
few: ! '%{count} minut'
one: ! '%{count} minuta'
other: ! '%{count} minuty'
seconds_exact:
few: ! '%{count} sekund'
one: ! '%{count} sekunda'
other: ! '%{count} sekundy'
errors:
messages:
already_confirmed:
not_found:
not_locked:
already_confirmed: został już potwierdzony
not_found: nie znaleziono
not_locked: nie został zablokowany
home:
name:
name: główna
jobs:
allowed_failures: Dopuszczalne Niepowodzenia
author: Autor
branch: Gałąź
build_matrix: Macierz Buildów
commit: Commit
committer: Committer
committer: Komitujący
compare: Porównanie
config: Konfiguracja
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
started_at: Rozpoczęto
state:
state: status
layouts:
about:
alpha: To wciąż jest wersja alpha.
join: Pomóż i dołącz do nas!
mailing_list: Lista mailingowa
join: Dołącz do nas i pomóż!
mailing_list: Lista Mailingowa
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>
repository: Repozytorium
twitter: Twitter
application:
fork_me: Fork me on Github
my_repositories: Moje repozytoria
my_repositories: Moje Repozytoria
recent: Ostatnie
search: Wyniki
sponsers: Sponsorzy
@ -84,18 +88,18 @@ pl:
job: Zadanie
log: Log
top:
accounts:
admin:
accounts: Konta
admin: Admin
blog: Blog
docs: Dokumentacja
github_login: Zaloguj się przy pomocy Githuba
home: Start
profile: Profil
sign_out: Wyloguj się
signing_in:
signing_in: Zaloguj się
stats: Statystki
locales:
ca:
ca: Čeština
en: English
es: Español
fr: Français
@ -108,27 +112,29 @@ pl:
no_job: Brak zadań
profiles:
show:
email: Email
email: E-mail
github: Github
locale:
locale: język
message:
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:
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
update:
update_locale:
your_locale:
your_repos: Twoje repozytoria
update: Zmień
update_locale: Zmień
your_locale: Twój Język
your_repos: Twoje Repozytoria
queue: Kolejka
repositories:
asciidoc:
asciidoc: AsciiDoc
branch: Gałąź
commit: Commit
duration: Czas trwania
finished_at: Zakończono
image_url: URL obrazka
image_url: URL Obrazka
markdown: Markdown
message: Opis
rdoc: RDOC
@ -139,20 +145,20 @@ pl:
build_history: Historia Buildów
current: Aktualny
job: Zadanie
pull_requests:
pull_requests: Pull Requesty
test:
textile: Textile
repository:
duration:
duration: Czas trwania
statistics:
index:
build_count: Liczba buildów
count: Ilość
last_month: ostatni miesiąc
repo_growth: Przyrost repozytoriów
repo_growth: Przyrost Repozytoriów
total_builds: Łącznie Buildów
total_projects: Łącznie projektów/repozytoriów
total_projects: Łącznie Projektów/Repozytoriów
user:
failure:
signed_out:
workers: Workers
failure: niepowodzenie
signed_out: Wyloguj
workers: Workery

View File

@ -18,6 +18,7 @@ pt-BR:
messages:
sponsored_by: Esta série de testes foi executada em uma caixa de processos patrocinada por
name: Build
pr:
started_at: Iniciou em
state:
datetime:

View File

@ -18,8 +18,9 @@ ru:
messages:
sponsored_by: Эта серия тестов была запущена на машине, спонсируемой
name: Билд
pr:
started_at: Начало
state:
state: состояние
datetime:
distance_in_words:
hours_exact:
@ -58,9 +59,9 @@ ru:
message: Комментарий
messages:
sponsored_by: Эта серия тестов была запущена на машине спонсируемой
sponsored_by:
sponsored_by: Спонсоры
started_at: Начало
state:
state: состояние
layouts:
about:
alpha: Это альфа-версия
@ -90,7 +91,7 @@ ru:
job: Задача
log: Журнал
top:
accounts:
accounts: аккаунты
admin: Управление
blog: Блог
docs: Документация
@ -98,7 +99,7 @@ ru:
home: Главная
profile: Профиль
sign_out: Выход
signing_in:
signing_in: авторизация
stats: Статистика
locales:
ca:
@ -116,7 +117,7 @@ ru:
show:
email: Электронная почта
github: Github
locale:
locale: Язык
message:
config: как настроить специальные опции билда
your_repos: ! 'Используйте переключатели, чтобы включить Travis service hook для вашего проекта, а потом отправьте код на GitHub.<br />
@ -131,7 +132,7 @@ ru:
your_repos: Ваши репозитории
queue: Очередь
repositories:
asciidoc:
asciidoc: asciidoc
branch: Ветка
commit: Коммит
duration: Длительность

View File

@ -6,6 +6,10 @@
<meta name="travis.pusher_key" value="23ed642e81512118260e">
<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>
<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="stylesheet" href="/styles/app.css">
<script src="/scripts/app.js"></script>