travis-listener
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
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
Metadata Files
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
- Install Docker and Dockercompose
- Add Github token in the file github/server.js
- Start the service
docker-compose up -d - 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.

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
- Website: https://durieux.me
- Twitter: thodurieux
- Repositories: 132
- Profile: https://github.com/tdurieux
GitHub Events
Total
Last Year
Committers
Last synced: 12 months ago
Top Committers
| Name | 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
- 105 dependencies
- 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
- 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
- express ^4.17.1
- express-http-proxy ^1.6.0
- 106 dependencies
- 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
- 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
- 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
- 105 dependencies
- 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
- 119 dependencies
- 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
- mongo latest
- node 10-slim build
- node 10-slim build
- node 10-slim build
- node 10-slim build
- node 10-slim build
- node 10-slim build