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 yourPick any Trigger when you need to build your projects with Jenkins.
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.
In Source Code Management
Add GitLab Repository URL, Credentials and Branches to build (*/branchname "*/master")
Continuous Integration with Jenkins Certification Training
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.
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
Post a Comment