Skip to main content

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.

Comments

Popular posts from this blog

How to Speedup your WordPress site with Amazon CloudFront.

Introduction A WordPress performance is quite excellent . The number of WordPress plugins to handle performance is such evidence. But the easiest way to improve your user experience is to accelerate the entire WordPress website using CloudFront. This will help you not only improve site response time reduces the necessary infrastructure, reducing the load on the Web server, so you can reduce the total cost of the infrastructure works WordPress. CloudFront is actually a site can greatly help your site to respond to unexpected load when gained popularity. Today this post is to clarify the method of providing a reasonable standard configuration on the WordPress website or blog. How does CloudFront help? Amazon CloudFront is to improve the user's experience accessing the Web site in several ways: 1.  Anycast DNS is to ensure that customers are routed to the nearest edge location. 2.  The cached content is available to users at the edge position (i

Linux System : Free Employee Monitoring with Automatic Screenshots

Introduction :   A utomatic screen-shots  of Linux system directly import  on your web server with Linux samba server service and scrot command. 1)  Setup web panel UI on your web server :   Get web panel PHP/HTML code from Github URL: https://github.com/raj412/Employee-Monitoring-for-Linux-System It’s work in Linux server LAMP environment(no need database for this configuration ) Defult login username password is admin/1234. You can change username/passwrod from login.php file in line number #6 Login Page : Dashboard : Screenshot Page : 2)  Samba server configuration on web server : I.  Install Samba on your server where you setup Linux screenshot log system web panel. sudo apt-get update sudo apt-get install samba II.  Set a password for your user in Samba sudo smbpasswd -a <user_name> III.  Share gallery-images folder from you web panel. This is my web panel gallery-images p

How to control high traffic load on Apache servers : optimization performance of APACHE2 & PHP-FPM

Everyone handle high traffic loads  on Apache server. During down-time they forget to check server memory . Apache not used lot of memory  still server not responding. All time we restart Apache service and all things will start working good. I also faced same issue numerous time and all-time  used same solution : Restart Apache. After lots of research and reading found one solution. In this blog you see step-by-step guide to apache2 performance settings. System environment: Intel(R) Xeon(R) CPU 3.10GHz, 4 cores | 8GB RAM Ubuntu 16.04 Apache2 version using mpm_event PHP FPM (5.6,7.1) First,  Calculate process size : Download : python script file “ps_mem.py” from Github Open this and ps_mem.py file upload on you server :  https://github.com/raj412/ps_mem chmod a+x ps_mem.py sudo python ps_mem.py Output like this:  See here : 12 Apache processes, consuming a total of  35.7MiB, so each Apache process is using roughly 3MiB of RAM. The 42 php-fpm process u