Services

Drone provides a services section in the Yaml file used for defining service containers. The below configuration composes database and cache containers.

pipeline:
  build:
    image: golang
    commands:
      - go build
      - go test

services:
  database:
    image: mysql

  cache:
    image: redis

Services are accessed using custom hostnames. In the above example the mysql service is assigned the hostname database and is available at database:3306.

Configuration

Service containers generally expose environment variables to customize service startup such as default usernames, passwords and ports. Please see the official image documentation to learn more.

services:
  database:
    image: mysql
+   environment:
+     - MYSQL_DATABASE=test
+     - MYSQL_ALLOW_EMPTY_PASSWORD=yes

  cache:
    image: redis

Initialization

Service containers require time to initialize and begin accept connections. If you are unable to connect to a service you may need to wait a few seconds or implement a backoff.

pipeline:
  test:
    image: golang
    commands:
+     - sleep 15
      - go get
      - go test

services:
  database:
    image: mysql

Next Steps

Questions?

We are always happy to help with questions you might have. Search our documentation or check out answers to common questions. You can also post questions or comments to our community forum.