Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Boxiang Sun
gitlab-ce
Commits
47e81da8
Commit
47e81da8
authored
Dec 08, 2015
by
Achilleas Pipinellis
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Clean up mysql CI example
parent
06b86de9
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
90 additions
and
47 deletions
+90
-47
doc/ci/services/mysql.md
doc/ci/services/mysql.md
+90
-47
No files found.
doc/ci/services/mysql.md
View file @
47e81da8
#
#
Using MySQL
# Using MySQL
It's possible to use MySQL database test your apps during builds.
As many applications depend on MySQL as their database, you will eventually
need it in order for your tests to run. Below you are guided how to do this
with the Docker and Shell executors of GitLab Runner.
##
# Use MySQL with
Docker executor
##
Use MySQL with the
Docker executor
If you are using our Docker integration you basically have everything already.
If you are using
[
GitLab Runner
](
../runners/README.md
)
with the Docker executor
you basically have everything set up already.
1.
Add this to your
`.gitlab-ci.yml`
:
First, in your
`.gitlab-ci.yml`
add
:
services:
```
yaml
services
:
-
mysql
-
mysql
variables:
variables
:
# Configure mysql service (https://hub.docker.com/_/mysql/)
# Configure mysql environment variables (https://hub.docker.com/_/mysql/)
MYSQL_DATABASE: hello_world_test
MYSQL_DATABASE
:
el_duderino
MYSQL_ROOT_PASSWORD: mysql
MYSQL_ROOT_PASSWORD
:
mysql_strong_password
```
2.
Configure your application to use the databas
e:
And then configure your application to use the database, for exampl
e:
Host: mysql
```
yaml
User: root
Host
:
localhost
Password: mysql
User
:
root
Database: hello_world_test
Password
:
mysql_strong_password
Database
:
el_duderino
```
3.
You can also use any other available on
[
DockerHub
](
https://hub.docker.com/_/mysql/
)
. For example:
`mysql:5.5`
.
You can also use any other docker image available on
[
Docker Hub
][
hub-mysql
]
.
For example, to use MySQL 5.5 the service becomes
`mysql:5.5`
.
Example: https://gitlab.com/gitlab-examples/mysql/blob/master/.gitlab-ci.yml
The
`mysql`
image can accept some environment variables. For more details
check the documentation on
[
Docker Hub
][
hub-mysql
]
.
##
# Use MySQL with
Shell executor
##
Use MySQL with the
Shell executor
It's possible to use MySQL on manually configured servers that are using GitLab Runner with Shell executor.
You can also use MySQL on manually configured servers that are using
GitLab Runner with the Shell executor.
1.
First install the MySQL server:
First install the MySQL server:
sudo apt-get install -y mysql-server mysql-client libmysqlclient-dev
```
bash
sudo
apt-get
install
-y
mysql-server mysql-client libmysqlclient-dev
```
# Pick a MySQL root password (can be anything), type it and press enter
Pick a MySQL root password (can be anything), and type it twice when asked.
# Retype the MySQL root password and press enter
2.
Create an user:
*
Note: As a security measure you can run
`mysql_secure_installation`
to
remove anonymous users, drop the test database and disable remote logins with
the root user.
*
mysql -u root -p
The next step is to create a user, so login to MySQL as root:
# Create a user which will be used by your apps
```
bash
# do not type the 'mysql>', this is part of the prompt
mysql
-u
root
-p
# change $password in the command below to a real password you pick
```
mysql> CREATE USER 'runner'@'localhost' IDENTIFIED BY '$password';
# Ensure you can use the InnoDB engine which is necessary to support long indexes
Then create a user (in our case
`runner`
) which will be used by your
# If this fails, check your MySQL config files (e.g. `/etc/mysql/*.cnf`, `/etc/mysql/conf.d/*`) for the setting "innodb = off"
application. Change
`$password`
in the command below to a real strong password.
mysql> SET storage_engine=INNODB;
# Create the database
*Note: Do not type `mysql>`, this is part of the MySQL prompt.*
mysql> CREATE DATABASE IF NOT EXISTS `hello_world_test` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`;
# Grant necessary permissions on the database
```
bash
mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, CREATE TEMPORARY TABLES, DROP, INDEX, ALTER, LOCK TABLES ON `hello_world_test`.* TO 'runner'@'localhost';
mysql> CREATE USER
'runner'
@
'localhost'
IDENTIFIED BY
'$password'
;
```
# Quit the database session
Create the database:
mysql> \q
3.
Try to connect to database:
```
bash
mysql> CREATE DATABASE IF NOT EXISTS
`
el_duderino
`
DEFAULT CHARACTER SET
`
utf8
`
COLLATE
`
utf8_unicode_ci
`
;
```
sudo -u gitlab-runner -H mysql -u runner -p -D hello_world_test
Grant the necessary permissions on the database:
4.
Configure your application to use the database:
```
bash
mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, CREATE TEMPORARY TABLES, DROP, INDEX, ALTER, LOCK TABLES ON
`
el_duderino
`
.
*
TO
'runner'
@
'localhost'
;
```
Host: localhost
If all went well you can now quit the database session:
User: runner
Password: $password
```
bash
Database: hello_world_test
mysql>
\q
```
Now, try to connect to the newly created database to check that everything is
in place:
```
bash
mysql
-u
runner
-p
-D
el_duderino
```
As a final step, configure your application to use the database, for example:
```
bash
Host: localhost
User: runner
Password:
$password
Database: el_duderino
```
## Example project
We have set up an
[
Example MySQL Project
][
mysql-example-repo
]
for your
convenience that runs on
[
GitLab.com
](
https://gitlab.com
)
using our publicly
available
[
shared runners
](
../runners/README.md
)
.
Want to hack on it? Simply fork it, commit and push your changes. Within a few
moments the changes will be picked by a public runner and the build will begin.
[
hub-mysql
]:
https://hub.docker.com/_/mysql/
[
mysql-example-repo
]:
https://gitlab.com/gitlab-examples/mysql
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment