AWS

Automated Code deployments with Github Webhooks

Automate Code Deployments with Git and Webhooks in AWS – EC2 Servers

Developing production applications, the unknown quantity is how are we going to deploy the code to the staging/production servers, “One Click Deployment” is the famous word that want to hear from a Development team. A Good practice is having multiple environment with their github branches, and deploying the code accordingly, this manual practice can be annoying for the developer and can be automated using Webhooks with Github or Bitbucket. This process of connecting to the server, executing github pull, restarting the web server can be time consuming when you are constantly deploying code to the stating environments. With webhooks you could setup Automated Code deployments and avoid this extra step. Often software architects require a Continuous integration process, a continuous delivery tool, but with this webhooks approach you can accomplish similar job.

One of the most commons ways to perform this is to use a webhooks in a EC2 server, the webhook is a tool of Github to call a url after an action, like a push or pull of the code. By this way and with a bash script you can have a continuous integration environment in your application or your website. In this blog I will demonstrate how to use the webhooks with github, and how to make a very easy bash script to get this completed.

1) Log in to your github and Click on your Repository, and search for settings tab.

2) Click on the webhook & services section

3) Click on Add webhook

In payload Url, put the url of the webhook script, for example. test.com/deploy. Select which event will trigger the webhook in this case a push to the repository, then click Add webhook

The most common way is to call a php script if you aren’t very familiarized with the php scripts, you can use one only to execute a shell_exec to call a bash script. The php script will be:

php shell_exec(‘ bash /path/to/bash/script.sh’);

The bash script needs to be out of the Document Root, to prevent errors on the download of the new code. This bash is really simple, the steps are:

  • Move in to a different folder.
  • Download the repository with the credentials.
  • Change the actual name of the folder with the application for a new one.
  • Move the recently download Repository to the correct location.
  • Remove the old version of the application.
  • Change permissions and owners of the files.

Here is the complete bash:

#!/bin/bash
cd /tmp/
git clone {https://user:passwd@gitrepo//}
mv /var/www/html/repo /var/www/html/repo_
mv /tmp/repo /var/www/html/repo
rm  -rf /var/www/repo_
cd /var/www/html/repo
find . –type f –exec chmod 644 {} ;
find . –type d –exec chmod 755 {} ;
chown –R www-data:www-data

Next steps can be performed with Apache or Nginx, in this case we will do it with Apache. You will need to have an Alias parameter on the Apache configuration to allow execute the bash script without be inside the Document Root. Here is the parameter for the Apache configuration.

Alias /deploy      “/path/to/bash/script/”

Once you add this parameter to the vhosts and restart Apache service .

$> sudo service apache2 restart

The next step is to test the webhook, to perform this you can make a change to the repository and push the changes. The changes will take effect in 5 or 6 minutes before the push depends on the repository size. After the push github will search for the webhooks, that are triggered with a push, the webhook will call the url, and this url is the bash script that we made, this script will download the new version and replace the old one.

I would like to highlight, a webhook is a very handy solution for your continuous deployments, but if you want something more sophisticated, I would jump to use Jenkins, TravisCI or AWS Code Deploy. Here At ClickIT you can learn the process to improve your development productivity by Automating tasks, design Continuous integration and Delivery or even Dockerize your application.

Why are we different ? Simple we love help Developers and make their lives easier with this One Click Automated Deployment. Contact Us Now!”

Disqus Comments Loading...

Recent Posts

Web Application Architecture: The Latest Guide 2024

When a user logs on to this desktop/laptop or mobile, opens a browser and types…

4 days ago

Low-Code Development for Business Success

Low-code development is great news for businesses, reducing time-to-market for apps, and allocating costs more…

6 days ago

PHP Latest Versions Guide | Video

So, have you caught wind of the latest PHP update? If you not, this PHP…

2 weeks ago

ECS vs EC2: Choosing the Right AWS Service for Your Workloads

When it comes to AWS ECS vs EC2, the choice boils down to your specific…

3 weeks ago

Netflix Architecture | A Look Into Its System Architecture

Ever wondered how Netflix keeps you glued to your screen with uninterrupted streaming bliss? Netflix…

4 weeks ago

Snowflake vs Redshift: Key Differences

In today's busy world, where information is important, handling data well is crucial for success.…

1 month ago