Skip to content

Latest commit

 

History

History
47 lines (26 loc) · 2.33 KB

CONTRIBUTING.md

File metadata and controls

47 lines (26 loc) · 2.33 KB

Contributing

So you want to contribute to the NodeSource Docker Images, thats great!

We appreciate any and all feedback. This document will serve as a guide to preparing, building, and testing these images before submitting a PR against this repo.

Dependencies

TL;DR

These images are built from templates located in /dockerfiles. There are two sets of images built:

  1. Base images - These images install common packages
  2. Node Images - These images start from the base images and install the specific version of Node requires and then update the OS.

The templates are populated according to the file dockerfiles/dists.js, which is automatically generated by tools/gen-dists.sh.

Once built, the images are tested by running dante test.

Running Tests

Every Dockerfile generated by this repo must be tested. In order to accomplish this, we generate a file inventory.yml which is consumed by the testing framework dante. These tests are aumtomatically run at the end of ./tools/build.sh. If you would like to run them manually, execute the following:

dante test

Note: The base images and node images have two separate inventory.yml files and require two separate invocations of dante test. Be warned, these tests may take several hours to complete.

Getting Acclimated to the Code Base

An early decision of this project was to separate tasks into individual scripts that can be run independently of one another. This resulted in the tools directoy becoming quite daunting. Luckily, everything is strung together by a single script, build.sh.

tools/build.sh

This file stitches together all of the scripts necessary to generate and test these images. This is a good place to start reading if you are interested in learning how these images are created, or if you are interested in modifying the build process.

Submitting a PR

If you are interested in submitting a PR against this repo, please do the following:

  1. Run ./tools/build.sh
  2. Retrieve all logs created from ./logs/[date]/*.md. Create gists for each log and link to them from the PR.
  3. Delete the logs directory (logs should only be checked in for builds that push the the public repo)