MySQL

This guide covers configuring continuous integration pipelines for projects that have a MySQL dependency. If you’re new to Drone please read our Tutorial and build configuration guides first.

Basic Example

In the below example we demonstrate a pipeline that launches a MySQL service container. The server will be available at localhost:3306.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
kind: pipeline
type: kubernetes
name: default

steps:
- name: test
  image: mysql
  commands:
  - sleep 15
  - mysql -u root --execute="SELECT VERSION();"

services:
- name: database
  image: mysql
  environment:
    MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
    MYSQL_DATABASE: test

Database Options

If you need to start the mysql container with additional runtime options you can override the entrypoint and command arguments.

services:
- name: database
  image: mysql
  entrypoint: [ "mysqld" ]
  command: [ "--character-set-server=utf8mb4" ]

Database Settings

The official MySQL image provides environment variables used at startup to create the default username, password, database and more. Please see the official image documentation for more details.

1
2
3
4
5
6
services:
- name: database
  image: mysql
  environment:
    MYSQL_DATABASE: test
    MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'

Common Problems

If you are unable to connect to the MySQL container please make sure you are giving MySQL adequate time to initialize and begin accepting connections.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
kind: pipeline
type: kubernetes
name: default

steps:
- name: test
  image: mysql
  commands:
  - sleep 15
  - mysql -u root -h database