How to use Jenkins to run PHPUnit Tests that needs MySQL

11 views
Skip to first unread message

Alwin Augustin

unread,
May 17, 2018, 4:15:43 AM5/17/18
to Jenkins Users
I am implementing a build system for PHP and need to execute a Build step , which needs repository checkout and run composer. Now this is working fine inside the docker container. As the next stage, I need to run automated test cased written in PHPUnit, which needs MySQL, Redis and Elasticsearch installation. Currently I am using CircleCI for the build process and there it is just a matter of pulling different docker images and executing migrations. I am trying to the same in Jenkins, but as soon as I am out of the MySQL stage, the docker container has been removed and so there is no point in running migrations. 

How can I run the MySQL sever persitantly so that all the scripts will be executed there ?

Or the better approach is to build a Docker container with MySQL, Redis and Elasticsearch and then run all the steps there ?

My current Jenkins file looks like the following

pipeline {
 agent any


 stages
{
 stage
('Build') {
 agent
{
 docker
{
 image
'cutomname/application:7.1'
 args
'-u root:root'
 
}
 
}
 steps
{
 checkout
([
 $class
: 'GitSCM',
 branches
: [[name: '*/master']],
 doGenerateSubmoduleConfigurations
: false,
 extensions
: [],
 submoduleCfg
: [],
 userRemoteConfigs
: [
 
[credentialsId: 'token', url: 'g...@github.com:MyCutstomOrg/repository.git']]
 
])
 sh
'yum install -y sudo'
 sh
'cp -f .env.circleci .env'
 sh
'chmod 755 ./build/database-migrations.sh'
 sh
'chmod a+rw -R storage'
 sh
'composer install --prefer-dist --no-interaction --no-progress'
 sh
'sudo npm install --progress=false'


 
}
 
}
 stage
('Starting MySQL') {
 agent
{
 docker
{
 image
'mysql:5.6'
 
}
 
}
 environment
{
 MYSQL_ALLOW_EMPTY_PASSWORD
='yes'
   
}
 steps
{
 sh
'echo MySQL server started successfully'
 
}
 
}
 stage
('Database Migration') {
 steps
{
 sh
'./build/database-migrations.sh'
 
}
 
}
 
}
 
}



Reply all
Reply to author
Forward
0 new messages