How to use Jenkins to run PHPUnit Tests that needs MySQL

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

How to use Jenkins to run PHPUnit Tests that needs MySQL

Alwin Augustin
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: '[hidden email]: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'
 
}
 
}
 
}
 
}



--
You received this message because you are subscribed to the Google Groups "Jenkins Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-users/fd9675e2-c4d6-4239-92ce-e485fa02cd24%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.