area51/debian-dev
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.