Science Score: 39.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 3 DOI reference(s) in README
  • Academic publication links
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (13.1%) to scientific vocabulary

Keywords from Contributors

interactive pypi mesh interpretability profiles sequences generic projection standardization optim
Last synced: 10 months ago · JSON representation

Repository

Basic Info
  • Host: GitHub
  • Owner: tdurieux
  • License: mit
  • Language: JavaScript
  • Default Branch: master
  • Size: 828 KB
Statistics
  • Stars: 8
  • Watchers: 2
  • Forks: 0
  • Open Issues: 1
  • Releases: 2
Created almost 7 years ago · Last pushed about 3 years ago
Metadata Files
Readme License Citation

README.md

Travis Listener

Travis Listener is an architecture that crawls TravisCI to collect Builds and Jobs. It currently contains two plugins. One save all the builds and jobs inside a MangoDB database. The second plugin detect the restarted builds and save them.

Travis Listener has been build for the paper "Empirical study of restarted and flaky builds on Travis CI". You can cite this paper using the following bibtex:

bib @inproceedings{DurieuxTravis20, title = {Empirical Study of Restarted and Flaky Builds on Travis CI}, author = {Durieux, Thomas and Le Goues, Claire and Hilton, Michael and Abreu, Rui}, year = 2020, booktitle = {Proceedings of the 17th International Conference on Mining Software Repositories}, location = {Seoul, Republic of Korea}, publisher = {Association for Computing Machinery}, address = {New York, NY, USA}, series = {MSR '20}, pages = {254264}, doi = {10.1145/3379597.3387460}, isbn = 9781450375177, url = {https://doi.org/10.1145/3379597.3387460}, numpages = 11 }

The scripts for the paper "An Analysis of 35+ Million Jobs of Travis CI" is available in this repository https://github.com/tdurieux/travis-collector.

Usage

  1. Install Docker and Dockercompose
  2. Add Github token in the file github/server.js
  3. Start the service docker-compose up -d
  4. Go to http://localhost:5001

Architecture

Travis Listener of seven modules: three services, two plugins, a dashboard, and a database. The infrastructure is built on top of Docker compose v2.4. Docker Compose is straightforward to install, scalable, and resilient (given. e.g., its auto-restart capabilities). Each module of our infrastructure is thus a docker image integrated into Docker compose. The services, plugins, and the dashboard are implemented using JavaScript and Node.js v.10.

Architecture

Dashboard

The Dashboard provides a web interface to configure and monitor the state of the different modules of the system.

Database

For the Database, we use MongoDB which integrates well with Node.js and provides data compression by default. Data compression is a useful feature, since we collect millions of highly compressible log files.

Log Parser Service

The Log Parser Service is a service that is used to manipulate logs. The current version of the service provides the following features: 1. Log minimization: removes the meaningless content such as progress bar status and log formatting. 2. Log Diff: produced minimized diffs between two logs by removing all random or time-based content, such as ids or dates. 3. Data extraction: parses the log to extract failures reasons such as test failures, checkstyle warnings, compilation errors, or timeouts. We are currently using 93 regular expressions to extract failure reasons from logs.

GitHub Service

The GitHub Service is a simple middleware component that handles GitHub API's tokens. It serves to simplify the usage of the GitHub API within Travis Listener by centralizing identification and rate limiting.

Travis Crawler Service

The Travis Crawler Service extracts the information from TravisCI. Its main purpose is to crawl TravisCI to detect any new jobs and builds triggered by TravisCI, live. Travis Crawler Service provides a WebSocket service that can be listened to by all Travis Listener modules. The WebSocket provides live notifications for any new TravisCI jobs or builds.

Build Saver Plugin

The Build Saver Plugin listens to the Travis Crawler Service and saves all information to the database. We save the following information: TravisCI's job, TravisCI's build, commit information (not including the diff), repository information, and user information. The goal of this plugin is to track all changes, and provide statistics on who is using TravisCI.

Restarted Build Plugin

The Restarted Build Plugin collects the information relevant to the present study.
Its goal is to detect restarted builds on TravisCI. When a build is restarted by a developer, all the original information is overwritten. Tracking restarted builds thus requires live collection of build data (in our case, using the Build Saver Plugin). To detect restarted builds, the Restarted Build Plugin crawls periodically (once a day) the collected builds from the 30 previous days, comparing the build start timestamp provided by the TravisCI' API to the start time saved by the Build Saver Plugin. If the two times differ, the build was restarted. For each restarted build, we collect the new TravisCI job information and execution logs.

Owner

  • Name: Thomas Durieux
  • Login: tdurieux
  • Kind: user

GitHub Events

Total
Last Year

Committers

Last synced: 12 months ago

All Time
  • Total Commits: 152
  • Total Committers: 2
  • Avg Commits per committer: 76.0
  • Development Distribution Score (DDS): 0.23
Past Year
  • Commits: 0
  • Committers: 0
  • Avg Commits per committer: 0.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
tdurieux d****s@h****m 117
dependabot[bot] 4****] 35

Issues and Pull Requests

Last synced: 12 months ago

All Time
  • Total issues: 2
  • Total pull requests: 61
  • Average time to close issues: 2 days
  • Average time to close pull requests: about 1 month
  • Total issue authors: 2
  • Total pull request authors: 2
  • Average comments per issue: 1.0
  • Average comments per pull request: 0.05
  • Merged pull requests: 57
  • Bot issues: 0
  • Bot pull requests: 60
Past Year
  • Issues: 0
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 0
  • Pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • JiyangZhang (1)
  • JJ (1)
Pull Request Authors
  • dependabot[bot] (38)
  • tdurieux (1)
Top Labels
Issue Labels
Pull Request Labels
dependencies (38)

Dependencies

front/package-lock.json npm
  • 105 dependencies
front/package.json npm
  • body-parser ^1.19.0
  • cookie-parser ^1.4.4
  • dockerstats ^1.4.1
  • express ^4.17.1
  • express-http-proxy ^1.6.0
  • method-override ^3.0.0
  • pidusage ^2.0.17
  • request ^2.88.0
  • ws ^7.1.2
github/package-lock.json npm
  • accepts 1.3.7
  • array-flatten 1.1.1
  • body-parser 1.19.0
  • bytes 3.1.0
  • content-disposition 0.5.3
  • content-type 1.0.4
  • cookie 0.4.0
  • cookie-signature 1.0.6
  • debug 2.6.9
  • debug 3.2.6
  • depd 1.1.2
  • destroy 1.0.4
  • ee-first 1.1.1
  • encodeurl 1.0.2
  • es6-promise 4.2.8
  • escape-html 1.0.3
  • etag 1.8.1
  • express 4.17.1
  • express-http-proxy 1.6.0
  • finalhandler 1.1.2
  • forwarded 0.1.2
  • fresh 0.5.2
  • http-errors 1.7.2
  • iconv-lite 0.4.24
  • inherits 2.0.3
  • ipaddr.js 1.9.0
  • media-typer 0.3.0
  • merge-descriptors 1.0.1
  • methods 1.1.2
  • mime 1.6.0
  • mime-db 1.40.0
  • mime-types 2.1.24
  • ms 2.1.2
  • ms 2.0.0
  • ms 2.1.1
  • negotiator 0.6.2
  • on-finished 2.3.0
  • parseurl 1.3.3
  • path-to-regexp 0.1.7
  • proxy-addr 2.0.5
  • qs 6.7.0
  • range-parser 1.2.1
  • raw-body 2.4.0
  • safe-buffer 5.1.2
  • safer-buffer 2.1.2
  • send 0.17.1
  • serve-static 1.14.1
  • setprototypeof 1.1.1
  • statuses 1.5.0
  • toidentifier 1.0.0
  • type-is 1.6.18
  • unpipe 1.0.0
  • utils-merge 1.0.1
  • vary 1.1.2
github/package.json npm
  • express ^4.17.1
  • express-http-proxy ^1.6.0
listener/package-lock.json npm
  • 106 dependencies
listener/package.json npm
  • async ^3.1.0
  • express ^4.17.1
  • lodash >=4.17.13
  • method-override ^3.0.0
  • travis-ci ^2.2.0
  • underscore.string >=3.3.5
  • ws ^7.1.2
logparser/package-lock.json npm
  • accepts 1.3.7
  • ansi-regex 4.1.0
  • array-flatten 1.1.1
  • async 3.1.0
  • body-parser 1.19.0
  • bytes 3.1.0
  • content-disposition 0.5.3
  • content-type 1.0.4
  • cookie 0.3.1
  • cookie 0.4.0
  • cookie-parser 1.4.4
  • cookie-signature 1.0.6
  • debug 3.1.0
  • debug 2.6.9
  • depd 1.1.2
  • destroy 1.0.4
  • diff-match-patch 1.0.4
  • diff-match-patch-line-and-word 0.1.2
  • ee-first 1.1.1
  • encodeurl 1.0.2
  • escape-html 1.0.3
  • etag 1.8.1
  • express 4.17.1
  • finalhandler 1.1.2
  • forwarded 0.1.2
  • fresh 0.5.2
  • http-errors 1.7.2
  • iconv-lite 0.4.24
  • inherits 2.0.3
  • ipaddr.js 1.9.0
  • media-typer 0.3.0
  • merge-descriptors 1.0.1
  • method-override 3.0.0
  • methods 1.1.2
  • mime 1.6.0
  • mime-db 1.40.0
  • mime-types 2.1.24
  • ms 2.0.0
  • ms 2.1.1
  • negotiator 0.6.2
  • on-finished 2.3.0
  • parseurl 1.3.3
  • path-to-regexp 0.1.7
  • proxy-addr 2.0.5
  • qs 6.7.0
  • range-parser 1.2.1
  • raw-body 2.4.0
  • safe-buffer 5.1.2
  • safer-buffer 2.1.2
  • send 0.17.1
  • serve-static 1.14.1
  • setprototypeof 1.1.1
  • statuses 1.5.0
  • strip-ansi 5.2.0
  • toidentifier 1.0.0
  • type-is 1.6.18
  • unpipe 1.0.0
  • utils-merge 1.0.1
  • vary 1.1.2
logparser/package.json npm
  • async ^3.1.0
  • body-parser ^1.19.0
  • cookie-parser ^1.4.4
  • diff-match-patch ^1.0.4
  • diff-match-patch-line-and-word ^0.1.2
  • express ^4.17.1
  • method-override ^3.0.0
  • strip-ansi ^5.2.0
plugins/buildsaver/package-lock.json npm
  • 105 dependencies
plugins/buildsaver/package.json npm
  • async ^3.1.0
  • express ^4.17.1
  • method-override ^3.0.0
  • mongodb ^3.3.2
  • request ^2.88.0
  • strip-ansi ^5.2.0
  • ws ^7.4.6
plugins/restartedbuilds/package-lock.json npm
  • 119 dependencies
plugins/restartedbuilds/package.json npm
  • agenda ^2.1.0
  • async ^3.1.0
  • compression ^1.7.4
  • express ^4.17.1
  • method-override ^3.0.0
  • mongodb ^3.3.2
  • request ^2.88.0
docker-compose.yml docker
  • mongo latest
front/Dockerfile docker
  • node 10-slim build
github/Dockerfile docker
  • node 10-slim build
listener/Dockerfile docker
  • node 10-slim build
logparser/Dockerfile docker
  • node 10-slim build
plugins/buildsaver/Dockerfile docker
  • node 10-slim build
plugins/restartedbuilds/Dockerfile docker
  • node 10-slim build