DevOps-IIB BuildAndDeploy Automation v1.2
DevOps-IIB BuildAndDeploy Automation v1.2
Surendrakumar Jebakani
Perficient Inc.
1
1 OVERVIEW ............................................................................................................................................................................................................ 3
1.1 BASIC FUNCTIONALITIES .............................................................................................................................................................................. 4
1.2 BUILD ENVIRONMENTS ................................................................................................................................................................................ 4
2 DEVELOPMENT ..................................................................................................................................................................................................... 5
2.1 GITHUB CONFIGURATION ............................................................................................................................................................................ 5
2.2 IIB TOOLKIT CONFIGURATION (Using eGit plugin, you can clone GitHub repositories into your IIB toolkit workspace.) .......................... 13
3 JENKINS ............................................................................................................................................................................................................... 25
3.1 ANT BUILD SCRIPT ...................................................................................................................................................................................... 25
3.2 JENKINS CONFIGURATION ......................................................................................................................................................................... 26
3.3 SCM Configuration ..................................................................................................................................................................................... 31
4 JFrog Artifactory Configuration .......................................................................................................................................................................... 38
5 CONTINUOUS BUILD AND DEPLOYMENT ........................................................................................................................................................... 43
2
1 OVERVIEW
This document demonstrates how continuous build and deploy automation is achieved for IBM Integration Bus v9 deployment
using open source GitHub, Jenkins and JFrog Artifactory.
3
1.1 BASIC FUNCTIONALITIES
• Full Deployment – Latest code is pulled from GitHub repositories, and each IIB applications are assembled, packed, override
properties applied then deployed to respective Integration Server (Execution Group) on IIB nodes.
• Assemble and Deploy by Application Name – Latest code for the given Application is pulled from GitHub repository. It is
then assembled, packed, override properties applied then deployed to respective Integration Server (Execution Group) on IIB
nodes
• Deploy Only – Latest bar file is taken from Git repository and after the environment specific bar override applied, the
overridden bar file is deployed to respective Integration Server (Execution Group) on IIB nodes
• Assemble and Build – Latest code for the given Application is pulled from GitHub repository. It is then assembled, packed,
and compiled. The newly created bar file is published to the Artifactory. In this option, deployment will not happen.
• Deploy from Artifactory – Works only with “Deploy Only” option, when this option is selected bar file is downloaded from
Artifactory (by default latest bar file for the given application is downloaded. Bar file can also be downloaded by specifying
the target build number)
• Continuous Build and Deployment
o Scheduled Build Trigger – the build job gets triggered automatically by a scheduler at the scheduled time.
o Build when a change is pushed to GitHub – the build job gets triggered automatically every time when there is a
change pushed by someone to IIB GitHub repositories.
4
• GitHub - for version control (eGit plugin can be installed on top of IIB Toolkit for source code management. i.e pull/push
changes from/to Git respository)
• Apache ANT v1.9.7 – for build automation
• JFrog Artifactory 4.13.2 – Artifact Repository Manager for archiving the build artifacts
2 DEVELOPMENT
2.1 GITHUB CONFIGURATION
o Create multiple repositories, one per IIB application and one for all the common components (error handling, common esql
procedure/functions, logging etc).
5
o Create a dedicated repository for IIB build process to store and manage the build related artifacts.
o Click the Green New button
o Have a naming standard for naming the repositories.
6
o Make the repo Public and Initialize the README file.
8
o Click the README.md file to edit.
9
o Fill in the “Edit File” tab with info using the text below as a template.
10
*A library is a logical grouping of related code, data, or both. A library typically contains reusable helper routines and
resources such as subflows, ESQL modules, message definitions, maps, and Java utilities. A library is useful to group together
resources of the same type or function, for reuse or ease of management. Libraries are optional.*
o Click Commit Changes
11
o Repo should be successfully created. Click the “Clone or download” button and then the “Copy to Clipboard” button
to copy the HTTPs URL.
12
2.2 IIB TOOLKIT CONFIGURATION (Using eGit plugin, you can clone GitHub repositories into your IIB toolkit
workspace.)
o Switch to IIB Toolkit and go to the Git Repository Exploring Perspective
13
o Click the Clone Repo Button
o Paste the URL in the URI box and put in your Git Username and Password
14
15
o Click the Next Button
16
17
o Click Browse and select a local folder that you have chosen to store all your Git Repositories. Click Finish.
o The repository should now show in your Git Perspective.
18
o To share the IIB project (application, library etc) to Git respository:
o Right click on the project and select “Team” and “Share application”.
19
o Right click on the project and select “Team” and “Share Project”.
20
o Select “Git” and click Next.
21
o Select the repository from the drop-down list and click Finish.
22
o To push the changes to GitHub:
o Make the changes in the message flow code, after the changes are unit-tested locally and ready for DEV/QA
deployment:
o You will see all the changed artifacts in the “Git Staging” view.
o Select the changed files under “Unstaged Changes” in “Git Staging” and move to “Staged Changes” by drag-and-drop.
o Add a comment in “Commit Message” and click the “Commit (Ctrl + Enter)”
23
o As you soon as you committed the change, you will see a change pending to be pushed (↑) in corresponding Git
repository. At this time the changes are only committed locally and not pushed to the Github server repository.
o Right click on the repository and select “Push to Upstream” to push the changes to Github server respository.
24
o Confirm the change in GitHub by logging into https://github.com/<yourcompanyname>/<repository name>
3 JENKINS
3.1 ANT BUILD SCRIPT
o Ant needs to be installed on the Jenkins server.
o An ant build.xml is created with multiple ant target tasks to perform the following tasks
o GetApplicationList – For “Full Deployment”, IIB application list is taken from the Jenkins property file
o assembleApp – Get the IIB code from Jenkins workspace (pulled from Git repositories)
25
o mqsipackagebar – To create deployable BAR files. (mqsicreatebar could not be used as IIB Toolkit is not installed on
build Jenkins/IIB servers)
o mqsiapplybaroverride – To replace the environment specific configurable values taken from the bar override property
files
o mqsideploy.deploybar – To deploy the overridden bar file to respective Execution Group (Integration Server) on
multiple IIB nodes
o copyFiles – To copy the deployable bar file from one IIB server to other IIB servers for deployment
o cleanupFiles – To cleanup the files/directories from IIB server after the deployment
26
§ You can parameterize the project with parameters that you want to input into the build. These parameters will be
passed to the build job when you start the build.
Select the PROJECT_NAME in which the Application resides.
o APPLICATION_NAME
§ Select the Application you wish to deploy.
27
28
o DEPLOYMENT_OPTION
§ There are three deployment options given.
§ ASSEMBLE_AND_DEPLOY - Pulls the sourcecode from GitHub repository, builds, applies bar overrides and then
deploys. Newly built bar file will be published to Artifactory.
§ ASSEMBLE_AND_BUILD - Pulls the sourcecode from GitHub repository, builds but DOESN’T deploy. Newly built
bar file will be published to Artifactory.
§ DEPLOY_ONLY - Gets the bar file from GitHub, applies bar overrides and then deploys.
o DEPLOY_FROM_ARTIFACTORY?
§ When the “DEPLOY_ONLY” option is chosen, also choose whether to deploy from Github or Artifactory
§ YES - To deploy the bar file from Artifactory. NO - To deploy the bar file from GitHub.
o ARTIFACTORY_BUILD_NO
29
§ If you choose YES for DEPLOY_FROM_ARTIFACTORY?, then enter either the Artifactory Build Number of the
bar file or “LATEST” to get the latest bar file.
o ENV_NAME
§ Name of the IIB environment, DEV or QA
o BRANCH_NAME
§ GitHub repository branch name
o USER_NAME
§ IIB server login username (AD username)
o PASSWORD
§ IIB server login password (AD password)
30
31
§ Build Configuration
o In the “Build” section, click “Add build step” and select “Invoke Ant” from the drop-down list.
o Fill-up the information as below
§ Ant Verion – Name of the Ant installation.
32
§ Targets – Not needed if you are using custom build file. If not, specify the ant target tasks here.
§ Build File – The location of custom build file. It is pulled from Git “iib-build-process” repository
§ Properties – You can add the properties with key-value pair in this section.
o
§ FULL_DEPLOYMENT
o It is used for deploying all the IIB applications to respective EG/IS running on multiple IIB nodes.
33
o Make sure to add the application name in the APPLICATION_NAME list first.
o Make sure to add the Git repositories in Jenkins “Multiple SCMs” under “Source Control Management” .
o Click the “iib-build-job” project from the list of Jenkins projects
o Click the “Build with Parameters” from the listed options at the left side.
34
o Select the options like above and input your user name and password in USER_NAME and PASSWORD
o Click “Build” to trigger the build deployment.
o You will see a new build job in progress under “Build History”, click on the build job to see the progress
35
o You can also click the “workspace” to see the components pulled from Git repository into Jenkins workspace
36
o “Console Output” shows the build logs step-by-step. At the end it shows whether the build is success or not.
37
§ ASSEMBLE_AND_DEPLOY
o This option is used for build and deploying a particular IIB application. (Source code for that given application is
pulled from Git repository)
§ Select the IIB application name from the drop-down list in the APPLICATION_NAME input parameter.
§ Select “ASSEMBLE_AND_DEPLOY” in the DEPLOYMENT_OPTION input parameter
§ Select the environment in ENV_NAME
§ After inputting the username/password, click build.
§ DEPLOY_ONLY
o This option is used just for deploying previously deployed bar file. (Bar file is taken from Git repository iib-build-
process/build_process/barfileBaseLocation/)
o The bar file is overridden with environment specific configurable values taken from property files (iib-build-
process/build_process/BarFileProperties/DEV/).
o Overridden bar file is then deployed.
38
o Make the Artifactory configuration as below:
Upload:
39
Download:
40
o Make sure that “Capture and publish build info” is selected under “More Details”
o
o In Action:
Upon completion of deployment – See the Jenkins job logs to get the URL of the Artificatory to see and download the
newly built and deployed bar file.
o To deploy the bar file from Artifactory:
41
42
o By default, “FULL_DEPLOYMENT” option will be executed (configurable so can be changed)
• “Build when a change is pushed to GitHub” option
o Using this option, the build job gets triggered automatically every time when there is a change pushed by someone to
IIB GitHub repositories.
o Get the Jenkins hook URL
§ In Jenkins, go to Manage Jenkins à Configure System, look for “Manually manage hook URL’s in the “GitHub
Web Hook” section. The hook URL will be shown when you’re clicking on the question mark icon on the right
43
side. Usually, it consists of your hostname and the /web-hook/ postfix. Example: https://<your-domain-
name>/web-hook/
o Add the hook URL in GitHub repository
§ Go to the IIB repository for which you want to enable “Build when a change is pushed to GitHub”.
§ Under “Settings” and “Webhook & Services”, click “Add service” in the “Services” section.
§ Select Jenkins (GitHub plugin) from the drop-down list.
§ And click “Add service”
§ You can click “Test Service” to confirm everything is correctly configured.
44