https://github.com/bioconductor/packagebuilder

https://github.com/bioconductor/packagebuilder

Science Score: 26.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
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (12.6%) to scientific vocabulary
Last synced: 9 months ago · JSON representation

Repository

Basic Info
  • Host: GitHub
  • Owner: Bioconductor
  • Language: JavaScript
  • Default Branch: devel
  • Size: 2.29 MB
Statistics
  • Stars: 5
  • Watchers: 5
  • Forks: 7
  • Open Issues: 1
  • Releases: 0
Created almost 11 years ago · Last pushed 11 months ago
Metadata Files
Readme

README.md

Bioconductor Single Package Builder (SPB)

Build
Status

Overview

The single package builder runs R CMD build and R CMD check on packages and provides the output of these processes. The system consists of the EC2 instances staging.bioconductor.org, issues.bioconductor.org and rabbitmq as well as the current devel build machines. The flow of information starts at issues.bioconductor.org triggered by a new package submission or update (version bump). A message is sent to rabbitmq which sends messages to the build nodes. staging.bioconductor.org tracks build progress and records logs.

Code

Code for the SPB is stored in GitHub.

Currently, the SPB consists of 2 components in this git repo, in top-level directories: * spb_history - A Django web app to track build history. Accessible at http://staging.bioconductor.org:8000 * workers - Python scripts that run on each build machine

Options to start a build

  1. Submitting packages to github
  2. Manually restart a build.

These all send messages to an installation of RabbitMQ (a Java-based messaging framework) to listeners on each build machine (server.py). The build machines start building the package and send back progress messages.

There is another listener (called archiver.py which writes build events to a database, where they can then be displayed by the spb_history web application (written in Python's Django framework).

Where possible, the code uses existing code from the Bioconductor Build System (BBS). In particular, it uses BBS scripts to set environment variables for the build, though these are overridden in a couple of cases.

On the build machines, the listener that is always running is called server.py. When it receives a build request, it kicks off a script particular to that build machine (called e.g. petty.sh or moscato2.bat) which sets environment variables, then runs builder.py to do the actual building.

Build Machines

See active_devel_builders in http://bioconductor.org/config.yaml to see which machines are used by the SPB.

System Integration

A job is submitted to the Single Package Builder (SPB) when a package is submitted to the github contributions (https://github.com/Bioconductor/Contributions) or when the version of an existing package is bumped.

  • New Package Submission

The code that manages when issues (packages) are submitted can be found at issuetrackergithub and is implemented on the AWS cloud instance issues.bioconductor.org.

  • Version bump

When a package submits a version bump, the above manager is run. It sends a message to the listeners on each build node as described at the start of this document.

In both cases, the message sent to the SPB contains a flag indicating that this build was originated by the SPB.

When the build is complete, another script on staging trackbuildcompletion.py is listening, and it posts a message to the contribuctions issue (using an HTTPS request) including a link to the build report.

  • SPB Moving Parts

The SPB was designed to use a message broker (in this case RabbitMQ) so that components could be loosely coupled and so that they could send information in an asynchronous, real-time fashion, allowing live updates.

In practice there are some dependencies between the moving parts.

Here are the moving parts, first briefly and then in more detail.

  • Broker - currently a machine in the cloud called rabbitmq. All it does is run an RabbitMQ message broker. Messages are passed using a text protocol called STOMP.
  • Issue manager. Currently implemented on the machine issues.bioconductor.org. It detects when a package is submitted, or updated, and sends a message to the SPB telling it to start a build.
  • build node server; a python script called server.py should be running on each build node at all times. When an instruction is received to start a build, this script starts a new process (first sourcing some variables specific to the build node, then running a python script called builder.py).
  • Three scripts that run on the staging.bioconductor.org machine:
    1. trackbuildcompletion.py: monitors progress of builds and when a build is complete (all machines have finished) it posts the build report to the web and posts a message to the issue.
    2. archiver.py: monitors progress of builds, writes all build info to a database to be displayed by a Django web app (what you see when you hit http://staging.bioconductor.org:8000/).
    3. rerun_build.py: for manually kicking off an SPB build without having to version bump or resubmit.

Owner

  • Name: Bioconductor
  • Login: Bioconductor
  • Kind: organization

Software for the analysis and comprehension of high-throughput genomic data

GitHub Events

Total
  • Delete event: 1
  • Push event: 8
  • Pull request review event: 1
  • Pull request review comment event: 3
  • Pull request event: 4
  • Create event: 2
Last Year
  • Delete event: 1
  • Push event: 8
  • Pull request review event: 1
  • Pull request review comment event: 3
  • Pull request event: 4
  • Create event: 2

Issues and Pull Requests

Last synced: over 1 year ago

All Time
  • Total issues: 22
  • Total pull requests: 20
  • Average time to close issues: 9 months
  • Average time to close pull requests: about 1 month
  • Total issue authors: 5
  • Total pull request authors: 4
  • Average comments per issue: 4.68
  • Average comments per pull request: 1.05
  • Merged pull requests: 18
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 0
  • Pull requests: 1
  • Average time to close issues: N/A
  • Average time to close pull requests: about 3 hours
  • Issue authors: 0
  • Pull request authors: 1
  • Average comments per issue: 0
  • Average comments per pull request: 0.0
  • Merged pull requests: 1
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • b-long (16)
  • dtenenba (3)
  • jimhester (1)
  • ljmciver (1)
  • hpages (1)
Pull Request Authors
  • b-long (16)
  • LiNk-NY (3)
  • vobencha (1)
  • jimhester (1)
Top Labels
Issue Labels
bug (6) enhancement (4)
Pull Request Labels
enhancement (2)

Dependencies

test/SPBTestLatex/DESCRIPTION cran
  • knitr * suggests
node/node_modules/amqp/package.json npm
node/node_modules/express/node_modules/connect/package.json npm
  • ejs 0.4.3 development
  • expresso 0.7.6 development
  • koala 0.1.2 development
  • less 1.1.1 development
  • markdown 0.2.1 development
  • sass 0.5.0 development
  • should 0.2.1 development
  • mime >= 0.0.1
  • qs >= 0.3.1
node/node_modules/express/node_modules/mime/package.json npm
  • async_testing development
node/node_modules/express/node_modules/mkdirp/package.json npm
  • tap 0.0.x development
node/node_modules/express/node_modules/qs/package.json npm
node/node_modules/express/node_modules/qs/support/expresso/package.json npm
node/node_modules/express/node_modules/qs/support/should/package.json npm
node/node_modules/express/package.json npm
  • connect-form 0.2.1 development
  • connect-redis >= 0.0.1 development
  • ejs 0.4.2 development
  • express-messages 0.0.2 development
  • expresso 0.7.2 development
  • hamljs 0.5.1 development
  • jade 0.11.0 development
  • node-markdown >= 0.0.1 development
  • should 0.2.1 development
  • stylus 0.13.0 development
  • connect 1.7.x
  • mime >= 0.0.1
  • mkdirp 0.0.7
  • qs >= 0.3.1
node/node_modules/node-uuid/package.json npm
node/node_modules/socket.io/examples/chat/package.json npm
  • express 2.3.11
  • jade 0.12.1
  • nib 0.0.8
  • stylus 0.13.3
node/node_modules/socket.io/examples/irc-output/package.json npm
  • express 2.3.11
  • jade 0.12.1
  • nib 0.0.8
  • stylus 0.13.3
node/node_modules/socket.io/node_modules/policyfile/package.json npm
node/node_modules/socket.io/node_modules/redis/package.json npm
node/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/package.json npm
node/node_modules/socket.io/node_modules/socket.io-client/node_modules/websocket-client/package.json npm
node/node_modules/socket.io/node_modules/socket.io-client/node_modules/xmlhttprequest/package.json npm
node/node_modules/socket.io/node_modules/socket.io-client/package.json npm
  • express 2.3.11 development
  • expresso 0.7.7 development
  • jade 0.12.1 development
  • socket.io 0.8.4 development
  • socket.io-client 0.8.4 development
  • stylus 0.13.3 development
  • uglify-js 1.0.6
  • websocket-client 1.0.0
  • xmlhttprequest 1.2.2
node/node_modules/socket.io/package.json npm
  • assertvanish 0.0.3-1 development
  • expresso 0.7.7 development
  • should 0.0.4 development
  • policyfile 0.0.4
  • redis 0.6.6
  • socket.io-client 0.8.4
node/node_modules/socket.io/support/node-websocket-client/package.json npm