azp-agent-docker-image
Docker images for Azure Pipeline Agents.
Goals:
- Create an Azure Pipelines agent docker image with newer packages, primarly
kubectl
andhelm
. - Include the latest Azure Pipeline
start.sh
script compared to the existingmicrosoft/vsts-agents
images. - Provide environment variables that can be used as agent demands in pipelines.
The sizes of individual APT packages are listed in package-sizes. The results are retrieved by running
dpkg-query --show --showformat='${Package;-50}\t${Installed-Size}\n' | sort -k 2 -n
inside of the container.
The start.sh
script comes from https://docs.microsoft.com/en-us/azure/devops/pipelines/agents/docker?view=azure-devops.
Tags
The Docker images are hosted in the Docker Hub repository docker.io/gmaresca/azure-pipeline-agent
.
Tag | Size | Notes | Dockerfile | Versions |
---|---|---|---|---|
ubuntu-18.04-minimal | 223MB | The bare minimum required to run the agents. | Dockerfile | v1, v2 |
ubuntu-18.04-base | 4.88GB | The image with all generic tools installed as well as Python, Ruby, and the .NET runtime. | Dockerfile | v1, v2 |
ubuntu-18.04-dotnet | 5.35GB | The image with dotnet tools installed. | Dockerfile | v1, v2 |
ubuntu-18.04-java | 5.71GB | The image with Java tools installed. | Dockerfile | v1, v2 |
ubuntu-18.04-go | 5.27GB | The image with Go tools installed. | Dockerfile | v1, v2 |
ubuntu-18.04-cpp | 5.1GB | The image with C++ tools installed. | Dockerfile | v1, v2 |
ubuntu-18.04-haskell | 5.79GB | The image with Haskell tools installed. | Dockerfile | v1, v2 |
ubuntu-18.04-standard | 7.7GB | The image with all of the above tools installed. | v1, v2 |
Installation
You can find a Helm chart for running the agents in Kubernetes here.
Generic packages
The following packages are installed in the minimal
image (and every other image):
- ca-certificates
- curl
- git
- jq
- iputils-ping
- libicu60
- libcurl4
- libunwind8
- netcat
The following package are also installed in the base
image (and every other image besides minimal
):
- apt-transport-https
- apt-utils
- bc
- build-essential
- bzr
- chrome
- cron (v2+)
- dc
- dnsutils
- ed
- file
- firefox
- ftp
- gawk
- gettext
- gnupg
- go-dep
- gpg
- grep
- iproute2
- less
- locales
- lsb-release
- make
- net-tools
- nmap
- openssh-client
- openssl
- openvpn
- rsync
- ssl-cert
- sudo
- tcpdump
- telnet
- time
- tree
- unrar
- unzip
- uuid
- wget
- zip
Addition software that are also installed:
- awscli
- azcopy
- az
- docker
- gcloud
- helm
- kubectl
- mongo-client
- mysql-client
- postgresql-client
- powershell
- sqlcmd (v2+)
- sqlite3
- xq (XML version of
jq
) - yq (YAML version of
jq
)
Note: although Docker is installed, the standard version of Docker installed does not work in a containerized environment. You must set the DOCKER_HOST
environment variable that points to a working Docker instance or mount /var/run/docker.sock
from the host for Docker to work.
Environment Variables
All images, besides minimal
, have the following environment variables:
- aws
- awcli
- azcopy
- az
- azure
- azurecli
- chrome
- cron (v2+)
- docker
- firefox
- gce
- gcloud
- mongo
- mongodb
- mysql
- postgresql
- psql
- powershell
- pwsh
- sqlcmd (v2+)
- sqlite
- sqlite3
Versions
v1
The v1
images contain the following versions of packages. If the package is not listed here, it will be the version included in Ubuntu 18.04, or the latest if it comes from a third-party repository.
- Docker: 19.03.1
- Helm: 2.14.3
- Kubectl: 1.15.1
- Powershell: 6.2.2
v2
The v2
images contain the following versions of packages. If the package is not listed here, it will be the version included in Ubuntu 18.04, or the latest if it comes from a third-party repository.
- Docker: 19.03.4
- Helm: 2.16.0
- Kubectl: 1.16.2
- Powershell: 6.2.3
Language Support
Python
The base
image has Python installed to install yq
and awscli
.
- python2
- python3
- python3-pip
Environment Variables
- python
- python2
- python3
- pip
- pip2
- pip3
- 2to3 (v2+)
- python2-config (v2+)
- python3-config (v2+)
C/C++
- clang
- cpp
- cppcheck
- g++
- gcc
Environment Variables
- clang
- c++
- cpp
- g++
- gcc
- gpp
Java
- ant
- clojure (lein)
- gradle
- maven
- openjdk
- sbt
- scala
Versions
v1
- Ant 1.10.6
- Gradle 5.5.1
- Lein 2.9.1
- Maven 3.6.1
- OpenJDK 8u222 JDK
- OpenJDK 12.0.2 JDK
- Scala 2.13.0
- sbt 1.2.8
v2
- Ant 1.10.6
- Gradle 5.5.1
- Lein 2.9.1
- Maven 3.6.1
- OpenJDK 8u232 JDK
- OpenJDK 12.0.2 JDK
- Scala 2.13.0
- sbt 1.2.8
Environment Variables
- ant
- clojure
- gradle
- java
- lein
- maven
- mvn
- sbt
- scala
C#
The base
image has the C# runtime. The dotnet
image has the entire SDK and all other tools.
- .NET Core SDK
- coverlet.console (
dotnet
tool) - dotnet-sqldb (
dotnet
tool) - GitVersion.Tool (
dotnet
tool) - nbgv (
dotnet
tool)
Versions
v1
- .NET Core SDK 2.1.801
- .NET Core SDK 2.2.401
v2
- .NET Core SDK 2.1.802
- .NET Core SDK 3.0.100
Environment Variables
- coverlet
- dotnet
- dotnet-gitversion
- dotnet-sqldb
- dotnet-stryker
- nbgv
- nuget
Go
Versions
- golang
- go-dep
v1
- golang 1.12.7
v2
- golang 1.13.4
Environment Variables
- go
- golang
Javascript/Node
The base
image has Node installed.
- cjs
- gjs
- nodejs
- npm
- yarn
Environment Variables
- node
- nodejs
- npm
- yarn
Versions
v1
- Node 8.10.0
Ruby
The base
image has Ruby installed.
- bundle
- bundler
- erb
- gem
- irb
- rake
- rdoc
- ri
- ruby
Environment Variables
- gem
- ruby
Haskell
Installed version is 8.0.2.
- haskell-platform
Environment Variables
- ghc
- haskell