This image provides a development image based around Debian 8. This container is big on purpose. This is due to it having all the utilities required to compile either Java or C/C++ applications already installed within it.

It has autoconf, automake, GCC & Java 8 installed along with the following source control systems installed: cvs, git, mercurial, subversion

Important Notice

This is for development purposes only i.e. to allow you to build and package an application, library etc but not for deployment.

What you should do is use this image to perform the build, package them and submit to some repository. Then in a separate Dockerfile you build a fresh minimal image which then installs the result of the build into that container.

Usage

As they are configured the same, the configuration for this image is listed under the area51/ubuntu-dev image's instructions.

Installing additonal packages

The images have sudo installed and configured to allow the jenkins user to switch to root without a password. This was done to allow a build job to configure the container as part of the job it's working on.

So as part of your job you can install additional libraries required by your job simply with sudo apt-get. Now this only affects this container and is lost when the container is destroyed - which is useful when running the container with the Cloud Bees plugin.

For example:

sudo apt-get install libarea51

To add a new repository it's as simple as:

echo "deb http://myrepo.example/packages mydist main" | sudo tee /etc/apt/sources.list.d/myrepo.list
sudo apt-get update

Recipes

These recipes are for area51/debian-dev only. Refer to the other images for appropriate recipes for those containers.

This is a simple build step to build a C application

autoconf
./configure
make clean all

Install additional libraries then perform a build - remember this only applies to the lifetime of this single build step, it will not persist

sudo apt-get install libarea51
autoconf
./configure
make clean all

Add a trusted local apt repository then build - remember this only applies to the lifetime of this single build step, it will not persist

echo "deb [trusted=yes] http://myrepo.example/packages $(grep '^VERSION=' /etc/os-release | cut -f2 -d'=' | grep -oP '[a-z]+') main" | sudo tee /etc/apt/sources.list.d/myrepo.list
sudo apt-get update
sudo apt-get install libarea51
autoconf
./configure
make clean all

Build a C application then deploy a .deb file to a remote server as an HTTP PUSH (no authentication shown)

autoconf
./configure
make clean all
curl -T build/*.deb http://myhost.example/packages/dists/$(grep '^VERSION=' /etc/os-release | cut -f2 -d'=' | grep -oP '[a-z]+')/main/binary-amd64/

Here the $(grep '^VERSION=' /etc/os-release | cut -f2 -d'=' | grep -oP '[a-z]+')) will return the ubuntu name for the distribution, jessie for the current image.