How to set up CI/CD process for WordPress database and code with GitLab and Jenkins?



How to set up CI/CD process for WordPress with GitLab and Jenkins?

Introduction:

GitLab is a web-based Git-repository manager.

WordPress is a free and open-source content management system based on PHP and MySQL.

Jenkins is open source automation server-based system.



1) Integrations GitLab project with Jenkins

Login in your GitLab server and open your project

Go to settings > integrations and add URL of your Jenkins projects.


Jenkins URL will be similar : 
http://username:password@jenkishost:port/project/projectname





Pick any Trigger when you need to build your projects with Jenkins.
You can test webhooks with your event and get HTTP 200 means your
webhook connection is perfect





2) Jenkins Configuration


Before start configuration, you must require to install GitLab plugins from Jenkins Manage Plugins.
Other plugins :  SSH remote hosts (Run command remotely)
Extended E-mail Notification (Email notification)

Next, Create Project job in Jenkins.


  • Source Code Management


In Source Code Management
Add GitLab Repository URL, Credentials and Branches to build (*/branchname "*/master")



  • Build Triggers

Build Triggers (when you perform any event in GitLab (like - Push Events). Then this trigger run).

  • Build



Build > Execute Shell 
and copy your workspace on your project's location 

Add this for only copy files
#!/bin/bash
rsync -a -v -r -d --delete-after /var/lib/jenkins/workspace/Newproject/ /home/projectspath


In WordPress, if you want to add database as well as then add this commands in Execute Shell

If,
source database details: sdbuser, spassword, sdbname
target database details: tdbuser, tpassword, tdbname

mysqldump -u sdbuser -pspassword sdbname  > test.sql
mysql  -u tdbuser -ptpassword tdbname < test.sql

And for change URL in database

mysql -u tdbuser -ptpassword -D tdbname  -e "UPDATE wp_options SET option_value = replace(option_value, 'Old_URL', 'New_URL') WHERE option_name = 'home' OR option_name = 'siteurl'"; 

mysql -u tdbuser -ptpassword -D tdbname  -e "UPDATE wp_posts SET guid = replace(guid, 'Old_URL', 'New_URL')"; 

mysql -u tdbuser -ptpassword -D tdbname  -e "UPDATE wp_posts SET post_content = replace(post_content, 'Old_URL', 'New_URL')"; 

mysql -u tdbuser -ptpassword -D tdbname  -e "UPDATE wp_postmeta SET meta_value = replace(meta_value, 'Old_URL', 'New_URL')";


Save all settings.

Continuous Integration with Jenkins Certification Training

With this settings.

When you will push on GitLab the Jenkins will automatically get your changes in the workspace and after you changed file will move in you protect location with needful WordPress database changes.
How to set up CI/CD process for WordPress database and code with GitLab and Jenkins? How to set up CI/CD process for WordPress database and code with GitLab and Jenkins? Reviewed by Raj on October 02, 2018 Rating: 5

No comments:

Powered by Blogger.