Use this plugin to build and push Docker images to the Google Container Registry (GCR). Please read the GCR documentation before you begin. You will need to generate a JSON token to authenticate to the registry and push images.
The following parameters are used to configure this plugin:
registry
- authenticates to this registry (defaults togcr.io
)token
- json tokenrepo
- repository name for the imagetag
- repository tag for the image (defaults tolatest
)storage_driver
- useaufs
,devicemapper
,btrfs
oroverlay
driver
Sample configuration:
publish:
gcr:
repo: foo/bar
token: >
{
"private_key_id": "...",
"private_key": "...",
"client_email": "...",
"client_id": "...",
"type": "..."
}
Sample configuration using multiple tags:
publish:
gcr:
repo: foo/bar
tag:
- latest
- "1.0.1"
- "1.0"
token: >
{
"private_key_id": "...",
"private_key": "...",
"client_email": "...",
"client_id": "...",
"type": "..."
}
When setting your token in the .drone.yml
file you must use folded block scalars to avoid parsing errors:
publish:
gcr:
token: >
{
"private_key_id": "...",
"private_key": "...",
"client_email": "...",
"client_id": "...",
"type": "..."
}
When injecting secrets you must also use a folded block scalar:
publish:
gcr:
token: >
$$GOOGLE_KEY
When defining secrets in a .drone.sec
file you must also use folded block scalars. Please note that you should either place your JSON string on a single line:
environment:
GOOGLE_KEY: >
{ "private_key_id": "...", "private_key": "..." ... }
Or you must ensure all lines have the exact same indentation:
environment:
GOOGLE_KEY: >
{
"private_key_id": "...",
"private_key": "...",
"client_email": "...",
"client_id": "...",
"type": "..."
}
For detailed output you can set the DOCKER_LAUNCH_DEBUG
environment variable in your plugin configuration. This starts Docker with verbose logging enabled.
publish:
gcr:
environment:
- DOCKER_LAUNCH_DEBUG=true
There are known issues when attempting to run this plugin on CentOS, RedHat, and Linux installations that do not have a supported storage driver installed. You can check by running docker info | grep 'Storage Driver:'
on your host machine. If the storage driver is not aufs
or overlay
you will need to re-configure your host machine.
This error occurs when trying to use the default aufs
storage Driver but aufs is not installed:
level=fatal msg="Error starting daemon: error initializing graphdriver: driver not supported
This error occurs when trying to use the overlay
storage Driver but overlay is not installed:
level=error msg="'overlay' not found as a supported filesystem on this host.
Please ensure kernel is new enough and has overlay support loaded."
level=fatal msg="Error starting daemon: error initializing graphdriver: driver not supported"
This error occurs when using CentOS or RedHat which default to the devicemapper
storage driver:
level=error msg="There are no more loopback devices available."
level=fatal msg="Error starting daemon: error initializing graphdriver: loopback mounting failed"
Cannot connect to the Docker daemon. Is 'docker -d' running on this host?
The above issue can be resolved by setting storage_driver: vfs
in the .drone.yml
file. This may work, but will have very poor performance as discussed here.