diff --git a/.gitignore b/.gitignore index e13042b4..a75ca356 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ /public/version .sass-cache .localeapp/key +/assets/scripts/config/locales.js diff --git a/.localeapp/log.yml b/.localeapp/log.yml index fce063a3..b1866c16 100644 --- a/.localeapp/log.yml +++ b/.localeapp/log.yml @@ -1,3 +1,3 @@ --- -:polled_at: 1355238733 -:updated_at: 1355238733 +:polled_at: 1358204368 +:updated_at: 1358204368 diff --git a/README.md b/README.md index a888a93b..f1e02237 100644 --- a/README.md +++ b/README.md @@ -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 diff --git a/assets/scripts/app/app.coffee b/assets/scripts/app/app.coffee index f5d68548..a8a50350 100644 --- a/assets/scripts/app/app.coffee +++ b/assets/scripts/app/app.coffee @@ -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 diff --git a/assets/scripts/app/auth.coffee b/assets/scripts/app/auth.coffee index 0be5b826..8ceaad6c 100644 --- a/assets/scripts/app/auth.coffee +++ b/assets/scripts/app/auth.coffee @@ -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] diff --git a/assets/scripts/app/helpers/urls.coffee b/assets/scripts/app/helpers/urls.coffee index 337da674..1e9ed54d 100644 --- a/assets/scripts/app/helpers/urls.coffee +++ b/assets/scripts/app/helpers/urls.coffee @@ -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" - diff --git a/assets/scripts/app/models/commit.coffee b/assets/scripts/app/models/commit.coffee index 3da6aebc..1f72af67 100644 --- a/assets/scripts/app/models/commit.coffee +++ b/assets/scripts/app/models/commit.coffee @@ -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') diff --git a/assets/scripts/app/models/user.coffee b/assets/scripts/app/models/user.coffee index f9bb05d4..4128b8d2 100644 --- a/assets/scripts/app/models/user.coffee +++ b/assets/scripts/app/models/user.coffee @@ -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() diff --git a/assets/scripts/app/routes.coffee b/assets/scripts/app/routes.coffee index 9939e0bf..6e5aa02a 100644 --- a/assets/scripts/app/routes.coffee +++ b/assets/scripts/app/routes.coffee @@ -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) diff --git a/assets/scripts/app/store.coffee b/assets/scripts/app/store.coffee index 4f29dfa6..1c501f41 100644 --- a/assets/scripts/app/store.coffee +++ b/assets/scripts/app/store.coffee @@ -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') diff --git a/assets/scripts/app/templates/builds/list.hbs b/assets/scripts/app/templates/builds/list.hbs index 704a3137..1920ff4d 100644 --- a/assets/scripts/app/templates/builds/list.hbs +++ b/assets/scripts/app/templates/builds/list.hbs @@ -3,8 +3,15 @@ {{t builds.name}} - {{t builds.commit}} {{t builds.message}} + + {{t builds.commit}} + + {{#if view.isPullRequestsList}} + + {{t builds.pr}} + + {{/if}} {{t builds.duration}} {{t builds.finished_at}} @@ -21,14 +28,21 @@ {{/if}} + + {{{formatMessage commit.message short="true"}}} + {{formatCommit commit}} - - {{{formatMessage commit.message short="true"}}} - + {{#if commit.pullRequestNumber}} + + + #{{commit.pullRequestNumber}} + + + {{/if}} {{formatDuration duration}} diff --git a/assets/scripts/app/templates/repos/show/tools.hbs b/assets/scripts/app/templates/repos/show/tools.hbs index 0aac8ddb..cd1278ba 100644 --- a/assets/scripts/app/templates/repos/show/tools.hbs +++ b/assets/scripts/app/templates/repos/show/tools.hbs @@ -29,6 +29,11 @@ Regenerate Key {{/if}} + {{#if view.showDownloadLog}} +
  • + Download log +
  • + {{/if}} @@ -37,14 +42,14 @@

    {{#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}} {{/if}}

    - +

    diff --git a/assets/scripts/app/views/build.coffee b/assets/scripts/app/views/build.coffee index 709bd939..47c76690 100644 --- a/assets/scripts/app/views/build.coffee +++ b/assets/scripts/app/views/build.coffee @@ -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') diff --git a/assets/scripts/app/views/job.coffee b/assets/scripts/app/views/job.coffee index 231a349b..4f077941 100644 --- a/assets/scripts/app/views/job.coffee +++ b/assets/scripts/app/views/job.coffee @@ -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 = '%@%@'.fmt(pathWithNumber, number, number, number, line) + p.innerHTML = '%@%@'.fmt(pathWithNumber, number, number, line) line = p if payload.fold && !payload.foldContinuation diff --git a/assets/scripts/app/views/repo/list.coffee b/assets/scripts/app/views/repo/list.coffee index 378d516d..b4f5ae26 100644 --- a/assets/scripts/app/views/repo/list.coffee +++ b/assets/scripts/app/views/repo/list.coffee @@ -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' diff --git a/assets/scripts/app/views/repo/show.coffee b/assets/scripts/app/views/repo/show.coffee index 4d9e5e41..d1307db7 100644 --- a/assets/scripts/app/views/repo/show.coffee +++ b/assets/scripts/app/views/repo/show.coffee @@ -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: (-> - "{\"Build}[#{@get('urlRepo')}]" - ).property('urlStatusImage') + "{\"Build}[#{@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') diff --git a/assets/scripts/config/locales.js b/assets/scripts/config/locales.js deleted file mode 100644 index 57e2ab73..00000000 --- a/assets/scripts/config/locales.js +++ /dev/null @@ -1 +0,0 @@ -I18n.translations = {"en":{"build":{"duration":"Duration","finished_at":"Finished","job":"Job"},"builds":{"allowed_failures":"Allowed Failures","author":"Author","branch":"Branch","build_matrix":"Build Matrix","commit":"Commit","committer":"Committer","compare":"Compare","config":"Config","duration":"Duration","finished_at":"Finished","message":"Message","messages":{"sponsored_by":"This test series was run on a worker box sponsored by"},"name":"Build","started_at":"Started","state":"state"},"datetime":{"distance_in_words":{"hours_exact":{"one":"%{count} hour","other":"%{count} hours"},"minutes_exact":{"one":"%{count} minute","other":"%{count} minutes"},"seconds_exact":{"one":"%{count} second","other":"%{count} seconds"}}},"errors":{"messages":{"already_confirmed":"was already confirmed","not_found":"not found","not_locked":"was not locked"}},"home":{"name":"home"},"jobs":{"allowed_failures":"Allowed Failures","author":"Author","branch":"Branch","build_matrix":"Build Matrix","commit":"Commit","committer":"Committer","compare":"Compare","config":"Config","duration":"Duration","finished_at":"Finished","message":"Message","messages":{"sponsored_by":"This test series was run on a worker box sponsored by"},"sponsored_by":null,"started_at":"Started","state":"state"},"layouts":{"about":{"alpha":"This stuff is alpha.","join":"Join us and help!","mailing_list":"Mailing List","messages":{"alpha":"Please do not consider this a stable service. We're still far from that! More info here."},"repository":"Repository","twitter":"Twitter"},"application":{"fork_me":"Fork me on Github","my_repositories":"My Repositories","recent":"Recent","search":"Search","sponsers":"Sponsors","sponsors_link":"See all of our amazing sponsors →"},"mobile":{"author":"Author","build":"Build","build_matrix":"Build Matrix","commit":"Commit","committer":"Committer","compare":"Compare","config":"Config","duration":"Duration","finished_at":"Finished at","job":"Job","log":"Log"},"top":{"accounts":"accounts","admin":"Admin","blog":"Blog","docs":"Docs","github_login":"Sign in with Github","home":"Home","profile":"Profile","sign_out":"Sign Out","signing_in":"signing_in","stats":"Stats"}},"locales":{"ca":null,"en":"English","es":"Español","fr":"Français","ja":"日本語","nb":"Norsk Bokmål","nl":"Nederlands","pl":"Polski","pt-BR":"português brasileiro","ru":"Русский"},"no_job":"There are no jobs","profiles":{"show":{"email":"Email","github":"Github","locale":"locale","message":{"config":"how to configure custom build options","your_repos":" Flick the switches below to turn on the Travis service hook for your projects, then push to GitHub.
    \n To test against multiple rubies, see"},"messages":{"notice":"To get started, please read our Getting Started guide.\n It will only take a couple of minutes."},"token":"Token","update":"Update","update_locale":"Update","your_locale":"Your Locale","your_repos":"Your Repositories"}},"queue":"Queue","repositories":{"asciidoc":"AsciiDoc","branch":"Branch","commit":"Commit","duration":"Duration","finished_at":"Finished","image_url":"Image URL","markdown":"Markdown","message":"Message","rdoc":"RDOC","started_at":"Started","tabs":{"branches":"Branch Summary","build":"Build","build_history":"Build History","current":"Current","job":"Job","pull_requests":"Pull Requests"},"test":null,"textile":"Textile"},"repository":{"duration":"Duration"},"statistics":{"index":{"build_count":"Build Count","count":"Count","last_month":"last month","repo_growth":"Repository Growth","total_builds":"Total Builds","total_projects":"Total Projects/Repositories"}},"user":{"failure":null,"signed_out":null},"workers":"Workers"},"es":{"build":{"duration":"Duración","finished_at":"Finalizado","job":"Trabajo"},"builds":{"allowed_failures":"Fallos Permitidos","author":"Autor","branch":"Rama","build_matrix":"Matriz de Builds","commit":"Commit","committer":"Committer","compare":"Comparar","config":"Configuración","duration":"Duración","finished_at":"Finalizado","message":"Mensaje","messages":{"sponsored_by":"Esta serie de tests han sido ejecutados en una caja de Proceso patrocinada por"},"name":"Build","started_at":"Iniciado","state":null},"datetime":{"distance_in_words":{"hours_exact":{"one":"%{count} hora","other":"%{count} horas"},"minutes_exact":{"one":"%{count} minuto","other":"%{count} minutos"},"seconds_exact":{"one":"%{count} segundo","other":"%{count} segundos"}}},"errors":{"messages":{"already_confirmed":"ya ha sido confirmado","not_found":"no encontrado","not_locked":"no estaba bloqueado"}},"home":{"name":"Inicio"},"jobs":{"allowed_failures":"Fallos Permitidos","author":"Autor","branch":"Rama","build_matrix":"Matriz de Builds","commit":"Commit","committer":"Committer","compare":"Comparar","config":"Configuración","duration":"Duración","finished_at":"Finalizado","message":"Mensaje","messages":{"sponsored_by":"Esta serie de tests han sido ejecutados en una caja de Proceso patrocinada por"},"sponsored_by":"Patrocinado por","started_at":"Iniciado","state":null},"layouts":{"about":{"alpha":"Esto es alpha.","join":"Únetenos y ayudanos!","mailing_list":"Lista de Correos","messages":{"alpha":"Por favor no considereis esto un servicio estable. Estamos estamos aún lejos de ello! Más información aquí."},"repository":"Repositorio","twitter":"Twitter"},"application":{"fork_me":"Hazme un Fork en Github","my_repositories":"Mis Repositorios","recent":"Reciente","search":"Buscar","sponsers":"Patrocinadores","sponsors_link":"Ver todos nuestros patrocinadores →"},"mobile":{"author":"Autor","build":"Build","build_matrix":"Matriz de Builds","commit":"Commit","committer":"Committer","compare":"Comparar","config":"Config","duration":"Duración","finished_at":"Finalizado el","job":"Trabajo","log":"Registro"},"top":{"accounts":null,"admin":"Admin","blog":"Blog","docs":"Documentación","github_login":"Iniciar sesión con Github","home":"Inicio","profile":"Perfil","sign_out":"Desconectar","signing_in":null,"stats":"Estadísticas"}},"locales":{"ca":null,"en":"English","es":"Español","fr":"Français","ja":"日本語","nb":"Norsk Bokmål","nl":"Nederlands","pl":"Polski","pt-BR":"português brasileiro","ru":"Русский"},"no_job":"No hay trabajos","profiles":{"show":{"email":"email","github":"Github","locale":null,"message":{"config":"como configurar tus propias opciones para el Build","your_repos":" Activa los interruptores para inicial el Travis service hook para tus proyectos, y haz un Push en GitHub.
    \n Para probar varias versiones de ruby, mira"},"messages":{"notice":"Para comenzar, por favor lee nuestra Guía de Inicio .\n Solo tomará unos pocos minutos."},"token":"Token","update":"Actualizar","update_locale":"Actualizar","your_locale":"Tu Idioma","your_repos":"Tus repositorios"}},"queue":"Cola","repositories":{"asciidoc":null,"branch":"Rama","commit":"Commit","duration":"Duración","finished_at":"Finalizado","image_url":"Imagen URL","markdown":"Markdown","message":"Mensaje","rdoc":"RDOC","started_at":"Iniciado","tabs":{"branches":"Ramas","build":"Builds","build_history":"Histórico","current":"Actual","job":"Trabajo","pull_requests":null},"test":null,"textile":"Textile"},"repository":{"duration":"Duración"},"statistics":{"index":{"build_count":"Número de Builds","count":"Número","last_month":"mes anterior","repo_growth":"Crecimiento de Repositorios","total_builds":"Total de Builds","total_projects":"Total de Proyectos/Repositorios"}},"user":{"failure":null,"signed_out":null},"workers":"Procesos"},"fr":{"build":{"duration":"Durée","finished_at":"Terminé","job":"Tâche"},"builds":{"allowed_failures":"Échecs autorisés","author":"Auteur","branch":"Branche","build_matrix":"Table des versions","commit":"Commit","committer":"Committeur","compare":"Comparer","config":"Config","duration":"Durée","finished_at":"Terminé","message":"Message","messages":{"sponsored_by":"Cette série de tests a été exécutée sur une machine sponsorisée par"},"name":"Version","started_at":"Commencé","state":null},"datetime":{"distance_in_words":{"hours_exact":{"one":"%{count} heure","other":"%{count} heures"},"minutes_exact":{"one":"%{count} minute","other":"%{count} minutes"},"seconds_exact":{"one":"%{count} seconde","other":"%{count} secondes"}}},"errors":{"messages":{"already_confirmed":"étais déja confirmé","not_found":"n'a pas été trouvé","not_locked":"n'étais pas bloqué"}},"home":{"name":"accueil"},"jobs":{"allowed_failures":"Échecs autorisés","author":"Auteur","branch":"Branche","build_matrix":"Table des versions","commit":"Commit","committer":"Committeur","compare":"Comparer","config":"Config","duration":"Durée","finished_at":"Terminé","message":"Message","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","started_at":"Commencé","state":null},"layouts":{"about":{"alpha":"Ceci est en alpha.","join":"Joignez-vous à nous et aidez-nous!","mailing_list":"Liste de distribution","messages":{"alpha":"S'il vous plaît ne considérez pas ce service comme étant stable. Nous sommes loin de ça! Plus d'infos ici."},"repository":"Dépôt","twitter":"Twitter"},"application":{"fork_me":"Faites un Fork sur Github","my_repositories":"Mes dépôts","recent":"Récent","search":"Chercher","sponsers":"Sponsors","sponsors_link":"Voir tous nos extraordinaire sponsors →"},"mobile":{"author":"Auteur","build":"Version","build_matrix":"Table des versions","commit":"Commit","committer":"Committeur","compare":"Comparer","config":"Config","duration":"Durée","finished_at":"Terminé à","job":"Tâche","log":"Journal"},"top":{"accounts":null,"admin":"Admin","blog":"Blog","docs":"Documentation","github_login":"Connexion Github","home":"Accueil","profile":"Profil","sign_out":"Déconnexion","signing_in":null,"stats":"Statistiques"}},"locales":{"ca":null,"en":"English","es":"Español","fr":"Français","ja":"日本語","nb":"Norsk Bokmål","nl":"Nederlands","pl":"Polski","pt-BR":"português brasileiro","ru":"Русский"},"no_job":"Pas de tâches","profiles":{"show":{"email":"Courriel","github":"Github","locale":null,"message":{"config":"comment configurer des options de version personnalisées","your_repos":"Utilisez les boutons ci-dessous pour activer Travis sur vos projets puis déployez sur GitHub.
    \nPour tester sur plus de versions de ruby, voir"},"messages":{"notice":"Pour commencer, veuillez lire notre guide de démarrage.\n Cela ne vous prendra que quelques minutes."},"token":"Jeton","update":"Modifier","update_locale":"Modifier","your_locale":"Votre langue","your_repos":"Vos dépôts"}},"queue":"File","repositories":{"asciidoc":null,"branch":"Branche","commit":"Commit","duration":"Durée","finished_at":"Terminé","image_url":"Image","markdown":"Markdown","message":"Message","rdoc":"RDOC","started_at":"Commencé","tabs":{"branches":"Résumé des branches","build":"Build","build_history":"Historique des tâches","current":"Actuel","job":"Tâche","pull_requests":null},"test":null,"textile":"Textile"},"repository":{"duration":"Durée"},"statistics":{"index":{"build_count":"Décompte des versions","count":"Décompte","last_month":"mois dernier","repo_growth":"Croissance de dépôt","total_builds":"Total des versions","total_projects":"Total des projets/dépôts"}},"user":{"failure":null,"signed_out":null},"workers":"Processus"},"ja":{"build":{"duration":"処理時間","finished_at":"終了時刻","job":"ジョブ"},"builds":{"allowed_failures":"失敗許容範囲内","author":"制作者","branch":"ブランチ","build_matrix":"失敗許容範囲外","commit":"コミット","committer":"コミット者","compare":"比較","config":"設定","duration":"処理時間","finished_at":"終了時刻","message":"メッセージ","messages":{"sponsored_by":"このテストは以下のスポンサーの協力で行いました。"},"name":"ビルド","started_at":"開始時刻","state":null},"datetime":{"distance_in_words":{"hours_exact":null,"minutes_exact":null,"seconds_exact":null}},"errors":{"messages":{"already_confirmed":null,"not_found":null,"not_locked":null}},"home":{"name":null},"jobs":{"allowed_failures":"失敗許容範囲内","author":"制作者","branch":"ブランチ","build_matrix":"ビルドマトリクス","commit":"コミット","committer":"コミット者","compare":"比較","config":"設定","duration":"処理時間","finished_at":"終了時刻","message":"メッセージ","messages":{"sponsored_by":"このテストは以下のスポンサーの協力で行いました。"},"sponsored_by":null,"started_at":"開始時刻","state":null},"layouts":{"about":{"alpha":"まだアルファですよ!","join":"参加してみよう!","mailing_list":"メールリスト","messages":{"alpha":"Travis-ciは安定したサービスまで後一歩!詳しくはこちら"},"repository":"リポジトリ","twitter":"ツイッター"},"application":{"fork_me":"Githubでフォークしよう","my_repositories":"マイリポジトリ","recent":"最近","search":"検索","sponsers":"スポンサー","sponsors_link":"スポンサーをもっと見る →"},"mobile":{"author":"制作者","build":"ビルド","build_matrix":"ビルドマトリクス","commit":"コミット","committer":"コミット者","compare":"比較","config":"設定","duration":"処理時間","finished_at":"終了時刻","job":"ジョブ","log":"ログ"},"top":{"accounts":null,"admin":"管理","blog":"ブログ","docs":"Travisとは?","github_login":"Githubでログイン","home":"ホーム","profile":"プロフィール","sign_out":"ログアウト","signing_in":null,"stats":"統計"}},"locales":{"ca":null,"en":"English","es":"Español","fr":"Français","ja":"日本語","nb":"Norsk Bokmål","nl":"Nederlands","pl":"Polski","pt-BR":"português brasileiro","ru":"Русский"},"no_job":"ジョブはありません","profiles":{"show":{"email":"メール","github":"Github","locale":"言語","message":{"config":"詳細設定","your_repos":"以下のスイッチを設定し、Travis-ciを有効にします。Githubへプッシュしたらビルドは自動的に開始します。複数バーションや細かい設定はこちらへ:"},"messages":{"notice":"まずはTravisのはじめ方を参照してください。"},"token":"トークン","update":"更新","update_locale":"更新","your_locale":"言語設定","your_repos":"リポジトリ"}},"queue":"キュー","repositories":{"asciidoc":null,"branch":"ブランチ","commit":"コミット","duration":"処理時間","finished_at":"終了時刻","image_url":"画像URL","markdown":".md","message":"メッセージ","rdoc":".rdoc","started_at":"開始時刻","tabs":{"branches":"ブランチまとめ","build":"ビルド","build_history":"ビルド履歴","current":"最新","job":"ジョブ","pull_requests":"プルリクエスト"},"test":null,"textile":".textile"},"repository":{"duration":"時間"},"statistics":{"index":{"build_count":"ビルド数","count":"数","last_month":"先月","repo_growth":"リポジトリ","total_builds":"合計ビルド数","total_projects":"合計リポジトリ"}},"user":{"failure":null,"signed_out":null},"workers":"ワーカー"},"nb":{"build":{"duration":"Varighet","finished_at":"Fullført","job":"Jobb"},"builds":{"allowed_failures":"Tillatte feil","author":"Forfatter","branch":"Gren","build_matrix":"Jobbmatrise","commit":"Innsending","committer":"Innsender","compare":"Sammenlign","config":"Oppsett","duration":"Varighet","finished_at":"Fullført","message":"Beskrivelse","messages":{"sponsored_by":"Denne testen ble kjørt på en maskin sponset av"},"name":"Jobb","started_at":"Startet","state":null},"datetime":{"distance_in_words":{"hours_exact":{"one":"%{count} time","other":"%{count} timer"},"minutes_exact":{"one":"%{count} minutt","other":"%{count} minutter"},"seconds_exact":{"one":"%{count} sekund","other":"%{count} sekunder"}}},"errors":{"messages":{"already_confirmed":"har allerede blitt bekreftet","not_found":"ikke funnnet","not_locked":"var ikke låst"}},"home":{"name":"hjem"},"jobs":{"allowed_failures":"Tillatte feil","author":"Forfatter","branch":"Gren","build_matrix":"Jobbmatrise","commit":"Innsending","committer":"Innsender","compare":"Sammenlign","config":"Oppsett","duration":"Varighet","finished_at":"Fullført","message":"Beskrivelse","messages":{"sponsored_by":"Denne testserien ble kjørt på en maskin sponset av"},"sponsored_by":null,"started_at":"Startet","state":null},"layouts":{"about":{"alpha":"Dette er alfa-greier.","join":"Bli med og hjelp oss!","mailing_list":"E-postliste","messages":{"alpha":"Dette er ikke en stabil tjeneste. Vi har fremdeles et stykke igjen! Mer informasjon finner du her."},"repository":"Kodelager","twitter":"Twitter."},"application":{"fork_me":"Se koden på Github","my_repositories":"Mine kodelagre","recent":"Nylig","search":"Søk","sponsers":"Sponsorer","sponsors_link":"Se alle de flotte sponsorene våre →"},"mobile":{"author":"Forfatter","build":"Jobb","build_matrix":"Jobbmatrise","commit":"Innsending","committer":"Innsender","compare":"Sammenlign","config":"Oppsett","duration":"Varighet","finished_at":"Fullført","job":"Jobb","log":"Logg"},"top":{"accounts":null,"admin":"Administrator","blog":"Blogg","docs":"Dokumentasjon","github_login":"Logg inn med Github","home":"Hjem","profile":"Profil","sign_out":"Logg ut","signing_in":null,"stats":"Statistikk"}},"locales":{"ca":null,"en":"English","es":"Español","fr":"Français","ja":"日本語","nb":"Norsk Bokmål","nl":"Nederlands","pl":"Polski","pt-BR":"português brasileiro","ru":"Русский"},"no_job":"Ingen jobber finnnes","profiles":{"show":{"email":"E-post","github":"Github","locale":null,"message":{"config":"hvordan sette opp egne jobbinnstillinger","your_repos":"Slå\u0010 på Travis for prosjektene dine ved å dra i bryterne under, og send koden til Github.
    \nFor å teste mot flere versjoner av ruby, se "},"messages":{"notice":"For å komme i gang, vennligst les kom-i-gang-veivisereren vår. Det tar bare et par minutter."},"token":"Kode","update":"Oppdater","update_locale":"Oppdater","your_locale":"Ditt språk","your_repos":"Dine kodelagre"}},"queue":"Kø","repositories":{"asciidoc":null,"branch":"Gren","commit":"Innsender","duration":"Varighet","finished_at":"Fullført","image_url":"Bilde-URL","markdown":"Markdown","message":"Beskrivelse","rdoc":"RDOC","started_at":"Startet","tabs":{"branches":"Grensammendrag","build":"Jobb","build_history":"Jobblogg","current":"Siste","job":"Jobb","pull_requests":null},"test":null,"textile":"Textile"},"repository":{"duration":"Varighet"},"statistics":{"index":{"build_count":"Antall jobber","count":"Antall","last_month":"siste måned","repo_growth":"Vekst i kodelager","total_builds":"Totale jobber","total_projects":"Antall prosjekter/kodelagre"}},"user":{"failure":null,"signed_out":null},"workers":"Arbeidere"},"nl":{"build":{"duration":"Duur","finished_at":"Voltooid","job":"Taak"},"builds":{"allowed_failures":"Toegestane mislukkingen","author":"Auteur","branch":"Tak","build_matrix":"Bouw Matrix","commit":"Commit","committer":"Committer","compare":"Vergelijk","config":"Configuratie","duration":"Duur","finished_at":"Voltooid","message":"Bericht","messages":{"sponsored_by":"Deze tests zijn gedraaid op een machine gesponsord door"},"name":"Bouw","started_at":"Gestart","state":null},"datetime":{"distance_in_words":{"hours_exact":{"one":"%{count} uur","other":"%{count} uren"},"minutes_exact":{"one":"%{count} minuut","other":"%{count} minuten"},"seconds_exact":{"one":"%{count} seconde","other":"%{count} seconden"}}},"errors":{"messages":{"already_confirmed":"was al bevestigd","not_found":"niet gevonden","not_locked":"was niet vergrendeld"}},"home":{"name":"Hoofdpagina"},"jobs":{"allowed_failures":"Toegestane mislukkingen","author":"Auteur","branch":"Tak","build_matrix":"Bouw matrix","commit":"Commit","committer":"Committer","compare":"Vergelijk","config":"Configuratie","duration":"Duur","finished_at":"Voltooid","message":"Bericht","messages":{"sponsored_by":"Deze testen zijn uitgevoerd op een machine gesponsord door"},"sponsored_by":null,"started_at":"Gestart","state":null},"layouts":{"about":{"alpha":"Dit is in alfa-stadium.","join":"Doe met ons mee en help!","mailing_list":"Mailing lijst","messages":{"alpha":"Gelieve deze service niet te beschouwen als stabiel. Daar zijn we nog lang niet! Meer info hier."},"repository":"Repository","twitter":"Twitter"},"application":{"fork_me":"Maak een fork op Github","my_repositories":"Mijn repositories","recent":"Recent","search":"Zoeken","sponsers":"Sponsors","sponsors_link":"Bekijk al onze geweldige sponsors →"},"mobile":{"author":"Auteur","build":"Bouw","build_matrix":"Bouw matrix","commit":"Commit","committer":"Committer","compare":"Vergelijk","config":"Configuratie","duration":"Duur","finished_at":"Voltooid op","job":"Taak","log":"Logboek"},"top":{"accounts":null,"admin":"Administratie","blog":"Blog","docs":"Documentatie","github_login":"Inloggen met Github","home":"Home","profile":"Profiel","sign_out":"Uitloggen","signing_in":null,"stats":"Statistieken"}},"locales":{"ca":null,"en":"English","es":"Español","fr":"Français","ja":"日本語","nb":"Norsk Bokmål","nl":"Nederlands","pl":"Polski","pt-BR":"português brasileiro","ru":"Русский"},"no_job":"Er zijn geen taken","profiles":{"show":{"email":"Email adres","github":"Github","locale":null,"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
    \nOm te testen tegen meerdere rubies, zie"},"messages":{"notice":"Om te beginnen kunt u onze startersgids lezen.\\n Het zal maar enkele minuten van uw tijd vergen."},"token":"Token","update":"Bijwerken","update_locale":"Bijwerken","your_locale":"Uw taal","your_repos":"Uw repositories"}},"queue":"Wachtrij","repositories":{"asciidoc":null,"branch":"Tak","commit":"Commit","duration":"Duur","finished_at":"Voltooid","image_url":"Afbeeldings URL","markdown":"Markdown","message":"Bericht","rdoc":"RDOC","started_at":"Gestart","tabs":{"branches":"Tak samenvatting","build":"Bouw","build_history":"Bouw geschiedenis","current":"Huidig","job":"Taak","pull_requests":null},"test":null,"textile":"Textile"},"repository":{"duration":"Duur"},"statistics":{"index":{"build_count":"Bouw aantal","count":"Aantal","last_month":"voorbije maand","repo_growth":"Repository groei","total_builds":"Bouw totaal","total_projects":"Projecten/Repository totaal"}},"user":{"failure":null,"signed_out":null},"workers":"Machines"},"pl":{"build":{"duration":"Czas trwania","finished_at":"Zakończono","job":"Zadanie"},"builds":{"allowed_failures":"Dopuszczalne Niepowodzenia","author":"Autor","branch":"Gałąź","build_matrix":"Macierz Buildów","commit":"Commit","committer":"Komitujący","compare":"Porównanie","config":"Konfiguracja","duration":"Czas trwania","finished_at":"Zakończono","message":"Opis","messages":{"sponsored_by":"Te testy zostały uruchomione na maszynie sponsorowanej przez"},"name":"Build","started_at":"Rozpoczęto","state":null},"datetime":{"distance_in_words":{"hours_exact":{"one":"%{count} godzina","other":"%{count} godziny"},"minutes_exact":{"one":"%{count} minuta","other":"%{count} minuty"},"seconds_exact":{"one":"%{count} sekunda","other":"%{count} sekundy"}}},"errors":{"messages":{"already_confirmed":null,"not_found":null,"not_locked":null}},"home":{"name":null},"jobs":{"allowed_failures":"Dopuszczalne Niepowodzenia","author":"Autor","branch":"Gałąź","build_matrix":"Macierz Buildów","commit":"Commit","committer":"Committer","compare":"Porównanie","config":"Konfiguracja","duration":"Czas trwania","finished_at":"Zakończono","message":"Opis","messages":{"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":null},"layouts":{"about":{"alpha":"To wciąż jest wersja alpha.","join":"Pomóż i dołącz do nas!","mailing_list":"Lista mailingowa","messages":{"alpha":"Proszę nie traktuj tego jako stabilnej usługi. Wciąż nam wiele do tego brakuje! Więcej informacji znajdziesz tutaj."},"repository":"Repozytorium","twitter":"Twitter"},"application":{"fork_me":"Fork me on Github","my_repositories":"Moje repozytoria","recent":"Ostatnie","search":"Wyniki","sponsers":"Sponsorzy","sponsors_link":"Zobacz naszych wszystkich wspaniałych sponsorów →"},"mobile":{"author":"Autor","build":"Build","build_matrix":"Macierz Buildów","commit":"Commit","committer":"Komitujący","compare":"Porównianie","config":"Konfiguracja","duration":"Czas trwania","finished_at":"Zakończono","job":"Zadanie","log":"Log"},"top":{"accounts":null,"admin":null,"blog":"Blog","docs":"Dokumentacja","github_login":"Zaloguj się przy pomocy Githuba","home":"Start","profile":"Profil","sign_out":"Wyloguj się","signing_in":null,"stats":"Statystki"}},"locales":{"ca":null,"en":"English","es":"Español","fr":"Français","ja":"日本語","nb":"Norsk Bokmål","nl":"Nederlands","pl":"Polski","pt-BR":"português brasileiro","ru":"Русский"},"no_job":"Brak zadań","profiles":{"show":{"email":"Email","github":"Github","locale":null,"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.
    \n Aby testować swój kod przy użyciu wielu wersji Rubiego, zobacz"},"messages":{"notice":"Aby zacząć, przeczytaj nasz Przewodnik .\n Zajmie ci to tylko kilka minut."},"token":"Token","update":null,"update_locale":null,"your_locale":null,"your_repos":"Twoje repozytoria"}},"queue":"Kolejka","repositories":{"asciidoc":null,"branch":"Gałąź","commit":"Commit","duration":"Czas trwania","finished_at":"Zakończono","image_url":"URL obrazka","markdown":"Markdown","message":"Opis","rdoc":"RDOC","started_at":"Rozpoczęto","tabs":{"branches":"Wszystkie Gałęzie","build":"Build","build_history":"Historia Buildów","current":"Aktualny","job":"Zadanie","pull_requests":null},"test":null,"textile":"Textile"},"repository":{"duration":null},"statistics":{"index":{"build_count":"Liczba buildów","count":"Ilość","last_month":"ostatni miesiąc","repo_growth":"Przyrost repozytoriów","total_builds":"Łącznie Buildów","total_projects":"Łącznie projektów/repozytoriów"}},"user":{"failure":null,"signed_out":null},"workers":"Workers"},"pt-BR":{"build":{"duration":"Duração","finished_at":"Concluído em","job":"Trabalho"},"builds":{"allowed_failures":"Falhas Permitidas","author":"Autor","branch":"Branch","build_matrix":"Matriz de Build","commit":"Commit","committer":"Committer","compare":"Comparar","config":"Config","duration":"Duração","finished_at":"Concluído em","message":"Mensagem","messages":{"sponsored_by":"Esta série de testes foi executada em uma caixa de processos patrocinada por"},"name":"Build","started_at":"Iniciou em","state":null},"datetime":{"distance_in_words":{"hours_exact":{"one":"%{count} hora","other":"%{count} horas"},"minutes_exact":{"one":"%{count} minuto","other":"%{count} minutos"},"seconds_exact":{"one":"%{count} segundo","other":"%{count} segundos"}}},"errors":{"messages":{"already_confirmed":"já foi confirmado","not_found":"não encontrado","not_locked":"não estava trancado"}},"home":{"name":"home"},"jobs":{"allowed_failures":"Falhas Permitidas","author":"Autor","branch":"Branch","build_matrix":"Matriz de Build","commit":"Commit","committer":"Committer","compare":"Comparar","config":"Config","duration":"Duração","finished_at":"Concluído em","message":"Mensagem","messages":{"sponsored_by":"Esta série de testes foi executada em uma caixa de processos patrocinada por"},"sponsored_by":null,"started_at":"Iniciou em","state":null},"layouts":{"about":{"alpha":"Isto é um alpha.","join":"Junte-se à nós e ajude!","mailing_list":"Lista de email","messages":{"alpha":"Por favor, não considere isto um serviço estável. Estamos muito longe disso! Mais informações aqui."},"repository":"Repositório","twitter":"Twitter"},"application":{"fork_me":"Faça fork no Github","my_repositories":"Meus Repositórios","recent":"Recentes","search":"Buscar","sponsers":"Patrocinadores","sponsors_link":"Conheça todos os nossos patrocinadores →"},"mobile":{"author":"Autor","build":"Build","build_matrix":"Matriz de Build","commit":"Commit","committer":"Committer","compare":"Comparar","config":"Config","duration":"Duração","finished_at":"Concluído em","job":"Trabalho","log":"Log"},"top":{"accounts":null,"admin":"Admin","blog":"Blog","docs":"Documentação","github_login":"Logue com o Github","home":"Home","profile":"Perfil","sign_out":"Sair","signing_in":null,"stats":"Estatísticas"}},"locales":{"ca":null,"en":"English","es":"Español","fr":"Français","ja":"日本語","nb":"Norsk Bokmål","nl":"Nederlands","pl":"Polski","pt-BR":"português brasileiro","ru":"Русский"},"no_job":"Não há trabalhos","profiles":{"show":{"email":"Email","github":"Github","locale":null,"message":{"config":"como configurar opções de build","your_repos":"Use os botões abaixo para ligar ou desligar o hook de serviço do Travis para seus projetos, e então, faça um push para o Github.
    Para testar com múltiplas versões do Ruby, leia"},"messages":{"notice":"Para começar, leia nosso Guia de início. Só leva alguns minutinhos."},"token":"Token","update":"Atualizar","update_locale":"Atualizar","your_locale":"Sua língua","your_repos":"Seus Repositórios"}},"queue":"Fila","repositories":{"asciidoc":null,"branch":"Branch","commit":"Commit","duration":"Duração","finished_at":"Concluído em","image_url":"URL da imagem","markdown":"Markdown","message":"Mensagem","rdoc":"RDOC","started_at":"Iniciou em","tabs":{"branches":"Sumário do Branch","build":"Build","build_history":"Histórico de Build","current":"Atual","job":"Trabalho","pull_requests":null},"test":null,"textile":"Textile"},"repository":{"duration":"Duração"},"statistics":{"index":{"build_count":"Número de Builds","count":"Número","last_month":"último mês","repo_growth":"Crescimento de Repositório","total_builds":"Total de Builds","total_projects":"Total de Projetos/Repositórios"}},"user":{"failure":null,"signed_out":null},"workers":"Processos"},"ru":{"build":{"duration":"Длительность","finished_at":"Завершен","job":"Задача"},"builds":{"allowed_failures":"Допустимые неудачи","author":"Автор","branch":"Ветка","build_matrix":"Матрица","commit":"Коммит","committer":"Коммитер","compare":"Дифф","config":"Конфигурация","duration":"Длительность","finished_at":"Завершен","message":"Комментарий","messages":{"sponsored_by":"Эта серия тестов была запущена на машине, спонсируемой"},"name":"Билд","started_at":"Начало","state":null},"datetime":{"distance_in_words":{"hours_exact":{"few":"%{count} часа","many":"%{count} часов","one":"%{count} час","other":"%{count} часа"},"minutes_exact":{"few":"%{count} минуты","many":"%{count} минут","one":"%{count} минута","other":"%{count} минуты"},"seconds_exact":{"few":"%{count} секунды","many":"%{count} секунд","one":"%{count} секунда","other":"%{count} секунды"}}},"errors":{"messages":{"already_confirmed":"уже подтвержден","not_found":"не найден","not_locked":"не заблокирован"}},"home":{"name":"Главная"},"jobs":{"allowed_failures":"Допустимые неудачи","author":"Автор","branch":"Ветка","build_matrix":"Матрица","commit":"Коммит","committer":"Коммитер","compare":"Сравнение","config":"Конфигурация","duration":"Длительность","finished_at":"Завершен","message":"Комментарий","messages":{"sponsored_by":"Эта серия тестов была запущена на машине спонсируемой"},"sponsored_by":null,"started_at":"Начало","state":null},"layouts":{"about":{"alpha":"Это альфа-версия","join":"Присоединяйтесь к нам и помогайте!","mailing_list":"Лист рассылки","messages":{"alpha":"Пожалуйста, не считайте данный сервис стабильным. Мы еще очень далеки от стабильности! Подробности"},"repository":"Репозиторий","twitter":"Twitter"},"application":{"fork_me":"Fork me on Github","my_repositories":"Мои репозитории","recent":"Недавние","search":"Поиск","sponsers":"Спонсоры","sponsors_link":"Список всех наших замечательных спонсоров →"},"mobile":{"author":"Автор","build":"Сборка","build_matrix":"Матрица сборок","commit":"Коммит","committer":"Коммитер","compare":"Сравнение","config":"Конфигурация","duration":"Длительность","finished_at":"Завершен","job":"Задача","log":"Журнал"},"top":{"accounts":null,"admin":"Управление","blog":"Блог","docs":"Документация","github_login":"Войти через Github","home":"Главная","profile":"Профиль","sign_out":"Выход","signing_in":null,"stats":"Статистика"}},"locales":{"ca":null,"en":"English","es":"Español","fr":"Français","ja":"日本語","nb":"Norsk Bokmål","nl":"Nederlands","pl":"Polski","pt-BR":"português brasileiro","ru":"Русский"},"no_job":"Очередь пуста","profiles":{"show":{"email":"Электронная почта","github":"Github","locale":null,"message":{"config":"как настроить специальные опции билда","your_repos":"Используйте переключатели, чтобы включить Travis service hook для вашего проекта, а потом отправьте код на GitHub.
    \nДля тестирования на нескольких версиях Ruby смотрите"},"messages":{"notice":"Перед началом, пожалуйста, прочтите Руководство для быстрого старта. Это займет всего несколько минут."},"token":"Токен","update":"Обновить","update_locale":"Обновить","your_locale":"Ваш язык","your_repos":"Ваши репозитории"}},"queue":"Очередь","repositories":{"asciidoc":null,"branch":"Ветка","commit":"Коммит","duration":"Длительность","finished_at":"Завершен","image_url":"URL изображения","markdown":"Markdown","message":"Комментарий","rdoc":"RDOC","started_at":"Начало","tabs":{"branches":"Статус веток","build":"Билд","build_history":"История","current":"Текущий","job":"Задача","pull_requests":"Запросы на Pull"},"test":null,"textile":"Textile"},"repository":{"duration":"Длительность"},"statistics":{"index":{"build_count":"Количество билдов","count":"Количество","last_month":"прошлый месяц","repo_growth":"Рост числа репозиториев","total_builds":"Всего билдов","total_projects":"Всего проектов/репозиториев"}},"user":{"failure":null,"signed_out":null},"workers":"Машины"}}; \ No newline at end of file diff --git a/assets/scripts/lib/travis/instrumentation.coffee b/assets/scripts/lib/travis/instrumentation.coffee new file mode 100644 index 00000000..1e9c9b17 --- /dev/null +++ b/assets/scripts/lib/travis/instrumentation.coffee @@ -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) +} diff --git a/assets/scripts/lib/travis/log.coffee b/assets/scripts/lib/travis/log.coffee index e24dd789..d72b6555 100644 --- a/assets/scripts/lib/travis/log.coffee +++ b/assets/scripts/lib/travis/log.coffee @@ -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) diff --git a/assets/scripts/travis.coffee b/assets/scripts/travis.coffee index 16ffbe55..a19ce166 100644 --- a/assets/scripts/travis.coffee +++ b/assets/scripts/travis.coffee @@ -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 || {}) diff --git a/assets/styles/app.sass b/assets/styles/app.sass index 51fc0e05..efb64d62 100644 --- a/assets/styles/app.sass +++ b/assets/styles/app.sass @@ -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 diff --git a/assets/styles/status.sass b/assets/styles/status.sass index 340b63bf..3f1d5429 100644 --- a/assets/styles/status.sass +++ b/assets/styles/status.sass @@ -43,7 +43,6 @@ table.list tbody td - cursor: pointer background-color: $color-bg-job tr:hover td background-color: $color-bg-job-highlight diff --git a/locales/en.yml b/locales/en.yml index a6c1218f..fedaeefd 100644 --- a/locales/en.yml +++ b/locales/en.yml @@ -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 diff --git a/locales/es.yml b/locales/es.yml index a6577dae..632834bc 100644 --- a/locales/es.yml +++ b/locales/es.yml @@ -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: diff --git a/locales/fr.yml b/locales/fr.yml index 8b367d73..574daf2b 100644 --- a/locales/fr.yml +++ b/locales/fr.yml @@ -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: diff --git a/locales/ja.yml b/locales/ja.yml index 20b84975..1357242d 100644 --- a/locales/ja.yml +++ b/locales/ja.yml @@ -18,6 +18,7 @@ ja: messages: sponsored_by: このテストは以下のスポンサーの協力で行いました。 name: ビルド + pr: started_at: 開始時刻 state: datetime: diff --git a/locales/nb.yml b/locales/nb.yml index ce8fb0fb..f6f84518 100644 --- a/locales/nb.yml +++ b/locales/nb.yml @@ -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: diff --git a/locales/nl.yml b/locales/nl.yml index 6580ef3e..6df3524b 100644 --- a/locales/nl.yml +++ b/locales/nl.yml @@ -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
    @@ -141,7 +142,7 @@ nl: build_history: Bouw geschiedenis current: Huidig job: Taak - pull_requests: + pull_requests: Pull Requests test: textile: Textile repository: diff --git a/locales/pl.yml b/locales/pl.yml index 88257ded..2e5578c2 100644 --- a/locales/pl.yml +++ b/locales/pl.yml @@ -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ę nie traktuj tego jako stabilnej usługi. Wciąż nam wiele do tego brakuje! Więcej informacji znajdziesz tutaj. 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.
    \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.
    + + Aby testować swój kod przy użyciu wielu wersji Rubiego, zobacz' messages: - notice: ! "Aby zacząć, przeczytaj nasz Przewodnik .\n Zajmie ci to tylko kilka minut." + notice: ! "Aby zacząć, przeczytaj nasz Przewodnik.\n Zajmie ci to tylko kilka minut." 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 diff --git a/locales/pt-BR.yml b/locales/pt-BR.yml index ab1ac844..1809fd01 100644 --- a/locales/pt-BR.yml +++ b/locales/pt-BR.yml @@ -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: diff --git a/locales/ru.yml b/locales/ru.yml index 9ff2759a..d9187c7b 100644 --- a/locales/ru.yml +++ b/locales/ru.yml @@ -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.
    @@ -131,7 +132,7 @@ ru: your_repos: Ваши репозитории queue: Очередь repositories: - asciidoc: + asciidoc: asciidoc branch: Ветка commit: Коммит duration: Длительность diff --git a/public/index.html b/public/index.html index 129c6fb0..154c3d24 100644 --- a/public/index.html +++ b/public/index.html @@ -6,6 +6,10 @@ Travis CI - Free Hosted Continuous Integration Platform for the Open Source Community + + + +