Docker images for Azure Pipeline Agents.
- 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.
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 |
You can find a Helm chart for running the agents in Kubernetes here.
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.
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
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
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
The base
image has Python installed to install yq
and awscli
.
- python2
- python3
- python3-pip
- python
- python2
- python3
- pip
- pip2
- pip3
- 2to3 (v2+)
- python2-config (v2+)
- python3-config (v2+)
- clang
- cpp
- cppcheck
- g++
- gcc
- clang
- c++
- cpp
- g++
- gcc
- gpp
- ant
- clojure (lein)
- gradle
- maven
- openjdk
- sbt
- scala
- 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
- 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
- ant
- clojure
- gradle
- java
- lein
- maven
- mvn
- sbt
- scala
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)
- .NET Core SDK 2.1.801
- .NET Core SDK 2.2.401
- .NET Core SDK 2.1.802
- .NET Core SDK 3.0.100
- coverlet
- dotnet
- dotnet-gitversion
- dotnet-sqldb
- dotnet-stryker
- nbgv
- nuget
- golang
- go-dep
- golang 1.12.7
- golang 1.13.4
- go
- golang
The base
image has Node installed.
- cjs
- gjs
- nodejs
- npm
- yarn
- node
- nodejs
- npm
- yarn
- Node 8.10.0
The base
image has Ruby installed.
- bundle
- bundler
- erb
- gem
- irb
- rake
- rdoc
- ri
- ruby
- gem
- ruby
Installed version is 8.0.2.
- haskell-platform
- ghc
- haskell