Deployment Hooks

Note: This document is based on Jelastic version 5.4

hooks logo

Hook (or webhook) is a  procedure of code insertion into some standard operation to apply some customization. In confines of Jelastic Platform, this functionality allows you to execute your custom scripts before and/or after the application deployment operation. Herewith, for Maven build node and Golang application server, the pre- and post- project build hooks can be additionally set up.

So below we’ll examine how to operate with hooks at Jelastic and will overview several common use cases with step-by-step instructions this functionality can come in handy for:

Hooks Management

Being a part of the deployment process, Hooks are available within an expandable section of the appropriate dashboard form. So, in order to manage hooks access a deployment dialog, using one of the following options:

  • Deployment Manager

    deployment manager


  • Deployments buttons for application server

    deploy buttons


1. Within the opened frame expand the Hooks section.

deployment hooks


Here, click on either Pre or Post button to provide your code, which will be executed just before or immediately after deployment.

2. Within the opened code editor window, you can use any preferable programming language - you just need to have the appropriate program for code interpretation (should be pre-installed on container).

hook example

Tip: Within the top pane, you have an access to the following tools to help you during code editing:

  • Wrap lines - brakes line if it reaches the frame border
  • Search - allows to easily find the needed information, with the additional Match case and Regex search options
  • Help - redirects to the current document to provide hooks usage details

hooks editor

Click Apply when ready and deploy application.

3. After successful deployment, you can click the Show Logs button within the appeared dashboard notification to view detailed response:

deploy success
Note: In case something goes wrong during hook execution, you’ll get the appropriate notification and the deployment process will be aborted:

deploy failure

Click the Show Logs button in order to analyze an error through the deployment action log or access the Log section and choose the dedicated hooks.log file.

Hooks Use Cases

Hooks provide a broad range of opportunities for developers, which allow to automate many processes and get a ready-to-work application without any manual steps required. For example, here are the most common tasks, that could be programmed to be automatically accomplished by hooks:
  • Pre deploy (before actually deploying application)
    • to check if all of the requirements are met
    • to pre-install required software
    • to clear or prepare a dedicated folder for application
    • to log data
  • Post deploy (after deployment is finished)
    • to restart your application server after deployment
    • to install project dependencies
    • to apply any other preferred customization
    • to log data

Below, we’ve provided a simple example of your own log file creation with the help of hooks.

1. Initiate deployment of your project using any preferable way. We’ll use the default HelloWorld.zip archive from a deployment manager.

deploy helloworld

2. Expand the Hooks section, click on the Pre hook and provide the following code within the opened editor:

echo "$(date) - deployment start" >> ~/mylog
if ! grep -q "$(pwd)/mylog" /etc/jelastic/redeploy.conf; then
    echo "$(pwd)/mylog" >> /etc/jelastic/redeploy.conf
fi

pre-deploy hook

This will add a string into the mylog file (will be automatically created in the home directory, if not exists), which will identify deployment start and provide the appropriate time stamp. Also, we check if the redeploy.conf file includes our custom log file and, if not, add the appropriate line - in such a way it will be kept after container redeploy operation.

3. For the Post hook add the next code:

echo "$(date) - deployment end" >> ~/mylog

post-deploy hook
Tip: If needed, you can use the exit command allows to break your hook and the appropriate deployment / build operation execution at any point. Herewith, the 0 value (i.e. exit 0) is used to indicate success, while any other value assumes an error (e.g. exit 1).
Here, we just log the end of our deployment.

4. Finally, deploy your application and check both mylog and redeploy.conf file to verify hooks successful execution.

check hooks execution

As you can see, our scripts have worked as intended, providing the deployment start / end time and ensuring it is protected during redeploy operation.

If you face any issues while working with hooks, feel free to appeal for our technical experts’ assistance at Stackoverflow.