|author||Joan Touzet <firstname.lastname@example.org>||Fri Jul 13 08:55:16 2018 -0700|
|committer||Joan Touzet <email@example.com>||Fri Jul 13 08:55:16 2018 -0700|
Document 16B03 deprecation build steps
The main purpose of this repository is to provide a number of Docker containers, Ansible roles/tasks and other configuration functionality so that the ASF Jenkins CI server (https://builds.apache.org/) is capable of building (and eventually packaging) CouchDB for a number of platforms. It intends to cover a range of both operating systems (Linux, macOS, BSD, Windows) and Erlang versions (17.x, 18.x, 19.x, etc.)
The current configuration builds CouchDB, Fauxton, its documentation, and runs the Erlang and JS test suites for each combination of OS and Erlang revision.
|OS / distro||Version||Erlang Version|
CouchDB's CI build philosophy is to use Travis (with
kerl) to validate CouchDB against different Erlang versions, and to use Jenkins to validate CouchDB against different OSes and architectures. Where possible, Jenkins also auto-builds convenience binaries or packages.
For those OSes that support Docker, we run builds inside of Docker containers. These containers are built using the
build.sh command at the root level.
Separate targets exist to build a compatible SpiderMonkey 1.8.5 package for each Linux target release.
./build.sh platform <distro>-<version>
version values come from the table above.
ERLANGVERSION=17.5.3 ./build.sh platform debian-jessie
couchdbdevorganization. Ask the CouchDB PMC for assistance with this.
docker loginand enter your password.
./build.sh publish <distro>-<version>just as above.
Recognized commands: clean <plat> Removes all images for <plat>. clean-all Cleans all images for all platforms. base <plat> Builds the base (no JS/Erlang) image for <plat>. base-all Builds all base (no JS/Erlang) images. js Builds the JS packages for <plat>. js-all Builds the JS packages for all platforms. js-no-rebuild Builds the JS packages for <plat> without rebuilding the base image first. js-all-no-rebuild Same as above, with the same condition. js-upload <plat> Uploads the JS packages for <plat> to bintray. Requires BINTRAY_USER and BINTRAY_API_KEY env vars. platform <plat> Builds the image for <plat> with Erlang & JS support. platform-all Builds all images with Erlang and JS support. platform-upload Uploads the couchdbdev/* images to Docker Hub. Requires appropriate credentials. platform-upload-all Uploads all the couchdbdev/* images to Docker Hub. couch <plat> Builds and tests CouchDB for <plat>. couch-all Builds and tests CouchDB on all platforms. couch-pkg <plat> Builds CouchDB packages for <plat>. couch-pkg-all Builds CouchDB packages for all platforms.
After building the image as above:
docker run -it couchdbdev/<tag>
<tag> is of the format
<distro>-<version>-<type>, such as
./build.sh couch <distro>-<version>
The Linux docker containers are also used to build suitable SpiderMonkey 1.8.5 binary packages.
./build.sh js <distro>-<version>
To build packages for all supported platforms:
./build.sh base <distro>-<version>. Solve any problems with the build process here.
./build.sh js <distro>-<version>. Again, fix any problems that arise.
./build.sh js-upload <distro>-<version>.
./build.sh platform <distro>-<version>.
./build.sh platform-upload <distro>-<version>.
couchdb-pkg, out for review and merging.
We are eager for contributions to enhance the build scripts to support setting up machines with the necessary build environment for:
as well as alternative architectures for the already supported image types (arm, ppc64le, s390x, sparc, etc).
We know that Docker won't support most of these, but we should be able to at least expand the install scripts for all of these platforms (save Win x64).