Jenkins Cluster Hosting for Continuous Integration and Delivery (CI/CD)

栏目: IT技术 · 发布时间: 5年前

Jenkins Cluster Hosting for Continuous Integration and Delivery (CI/CD)

Jenkins is an open-source continuous integration and delivery system designed to ensure build and deploy automation. It is well-suited to be installed in the cloud to run self- hosted pipelines .

Jenkins supports clustering via master-slave mode. A build process can be delegated to several slave (worker) nodes. This allows serving multiple projects in a single Jenkins cluster setup.

In this article, we’ll describe how to install Jenkins cluster with slave nodes auto-discovering and self-registering inside a master node. Jelastic PaaS implemented this solution in Jenkins DevOps Pack that can be installed from the Marketplace. Also, you will find out how to build a simple Java project hosted on GitHub using Jelastic Maven plugin .

Jenkins DevOps Pack Installation

1. Access the platform dashboard, click on Marketplace > Dev & Admin Tools, find Jenkins DevOps Pack and press Install .

Jenkins Cluster Hosting for Continuous Integration and Delivery (CI/CD)

2. If required, change the number of Workers (slaves), Environment name and destination Region .

Jenkins Cluster Hosting for Continuous Integration and Delivery (CI/CD)

3. As it is shown in the picture below, the deployed Jenkins topology comprises one master node and two worker nodes. 

Jenkins Cluster Hosting for Continuous Integration and Delivery (CI/CD)

Each worker node has an executor process that is used for building the projects . By default one job at a time can be run since there is one executor configured in a worker. You may change the number of executors. To do this click on Build Executor Status and press Configure at node you need to change the number of executors in.

Jenkins Cluster Hosting for Continuous Integration and Delivery (CI/CD)

Change the number of executors and apply changes with the Save button.

Jenkins Cluster Hosting for Continuous Integration and Delivery (CI/CD)

For example you build tasks stuck in a long queue , the worker nodes can be scaled out horizontally either manually or automatically for speeding up a large number of the project builds . In such cases, the package ensures an automatic discovery of new worker nodes by the Jenkins master node. It takes just a couple minutes to expand cluster e.g. up to 10 workers. 

Jenkins Cluster Hosting for Continuous Integration and Delivery (CI/CD)

Press Change Environment Topology and choose Workers layer (Java Engine) and do horizontal scaling with + button in the Horizontal Scaling section of the wizard. It’s also preferable to choose stateless scaling mode as we do not store any important state in the workers.  

Jenkins Cluster Hosting for Continuous Integration and Delivery (CI/CD)

Once scaling is completed, make sure the all newly created worker nodes were discovered and registered automatically at master. Go back to the Jenkins admin panel and click on Build Executor Status link once again to see all of available cluster members in a friendly format.

Jenkins Cluster Hosting for Continuous Integration and Delivery (CI/CD)

Create a New Job through Jenkins Admin Panel

Now let’s see how to create a job that builds and publishes a simple project to a remote application server hosted on Jelastic PaaS . Here we use a Maven to build HelloWorld project from GitHub and deploy it with the help of Jelastic Maven plugin .

1. After installation, log in to the admin panel with credentials from the successful installation window.

Jenkins Cluster Hosting for Continuous Integration and Delivery (CI/CD)

2. At the top of the page click on create new jobs .

Jenkins Cluster Hosting for Continuous Integration and Delivery (CI/CD)

3. Specify the project name (e.g. My Java Project ), choose Maven project and press OK .

Jenkins Cluster Hosting for Continuous Integration and Delivery (CI/CD)

4. Define the project Description, click on the GitHub project and specify the repository URL. Within this tutorial, we use https://github.com/jelastic/helloworld.git .

Jenkins Cluster Hosting for Continuous Integration and Delivery (CI/CD)

5. The Jelastic Maven plugin requires the destination environment access parameters to be defined and passed to the pom.xml file located in the repository of the application you build. 

The plugin’s section in the pom.xml looks as follows:

<plugin>
     <groupId>com.jelastic</groupId>
     <artifactId>jelastic-maven-plugin</artifactId>
     <version>1.9.4</version>
     <configuration>
     <apiToken>${TOKEN}</apiToken>
     <context>${CONTEXT}</context>
     <environment>${TARGET_ENV}</environment>
     <comment>test-plugin</comment>
     <api_hoster>${JELASTIC_API_ENDPOINT}</api_hoster>
     <deployParams>
        <delay>1000</delay>
        <param2>value2</param2>
       ...
        <paramN>valueN</paramN>
     </deployParams>
     </configuration>
</plugin>

For defining parameters via project variables click on the checkbox This project is parameterized and add the first variable clicking on Add Parameter > String Parameter .

Jenkins Cluster Hosting for Continuous Integration and Delivery (CI/CD)

As for our example, we use four variables defined globally for the project:

  • JELASTIC_API_ENDPOINT –  Defines destination hosting platform hostname. See Hoster Domain field in the list of Jelastic Hosting Providers .
  • TARGET_ENV – deployment destination environment shortdomain name within the destination hosting platform. The destination environment must have a Java application server , here we use Tomcat . You can deploy to a single node environment or clusterized one.

Jenkins Cluster Hosting for Continuous Integration and Delivery (CI/CD)

  • TOKEN access token for the platform on which the deployment environment is located.

Set the Description for new access token and expiry date, then in the API field use a predefined Maven Plugin template which will allow the DeployApp API method to be executed. The respective access parameters will be selected automatically. 

Jenkins Cluster Hosting for Continuous Integration and Delivery (CI/CD)

  • CONTEXT – the context path the application will be deployed to. The ROOT context is equivalent to the “ / ” path (e.g. http://myenv.vip.jelastic.cloud / ). In other occurrences (e.g. helloworld ), the context path is added to the environment name http://myenv.vip.jelastic.cloud/ helloworld/

Finally, the variables section should look like in the picture below.

Jenkins Cluster Hosting for Continuous Integration and Delivery (CI/CD)

6. Then scroll down to the Source Code Management section and specify the Repository URL .

Jenkins Cluster Hosting for Continuous Integration and Delivery (CI/CD)

7. In the Build section set the phases the Maven will execute: clean , package and jelastic:deploy . Finally, press the Save button.

Jenkins Cluster Hosting for Continuous Integration and Delivery (CI/CD)

Resulting from the clean and package phases you will get a war archive file. In our case, it will be helloworld.war file as for https://github.com/jelastic/helloworld project.

The jelastic:deploy is performed by Jelastic maven plugin on the fly during project build. The plugin allows you to deploy just built war file to Java application server in the remote environment at any available Jelastic Cloud Provider .

Build Java Project with Maven Plugin

1. Click on Build Now . Then confirm the parameters to be passed to the Jelastic Maven plugin.

Jenkins Cluster Hosting for Continuous Integration and Delivery (CI/CD)

2. In the Build History , you can see that the build is performed successfully and marked with a green sign next to the #1 .

Jenkins Cluster Hosting for Continuous Integration and Delivery (CI/CD)

Build Debug inside Jenkins

By hovering over the sign next to the build, you can open the Console Output that may help you to debug project building.

Jenkins Cluster Hosting for Continuous Integration and Delivery (CI/CD)

The output contains all of the commands executed during the build. Jenkins does job distribution among all of the available worker nodes trying to load them equally.

If you want to execute project building on the specific node, go to the General section and enable Restrict where this project can be run option. Fill out the Label Expression field with hostname like node${nodeID} .

Jenkins Cluster Hosting for Continuous Integration and Delivery (CI/CD)

Java Project Deployment via Jenkins

If the build procedure succeeds, it means that Jenkins deployed the result application archive to the application server (e.g. myenv.vip.jelastic.cloud ).

Click on the Open in Browser button at the destination server to make sure the deployment was performed properly.

Jenkins Cluster Hosting for Continuous Integration and Delivery (CI/CD)

The helloworld.war application web page should be displayed as follows.

Jenkins Cluster Hosting for Continuous Integration and Delivery (CI/CD)

That’s it! Now you know how to easily get Jenkins cluster installation in the cloud with the Maven project build and deploy . Register at one of Jelastic cloud service providers to automate continuous integration and delivery of your Java applications using pre-configured master-slave Jenkins cluster.


以上所述就是小编给大家介绍的《Jenkins Cluster Hosting for Continuous Integration and Delivery (CI/CD)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

数据挖掘技术

数据挖掘技术

[美]MichaelJ.A.B / 别荣芳、尹静、邓六爱 / 机械工业 / 2006-7 / 49.00元

本书是数据挖掘领域的经典著作,数年来畅销不衰。全书从技术和应用两个方面,全面、系统地介绍了数据挖掘的商业环境、数据挖掘技术及其在商业环境中的应用。自从1997年本书第1版出版以来,数据挖掘界发生了巨大的变化,其中的大部分核心算法仍然保持不变,但是算法嵌入的软件、应用算法的数据库以及用于解决的商业问题都有所演进。第2版展示如何利用基本的数据挖掘方法和技术,解决常见的商业问题。 本书涵盖核心的数......一起来看看 《数据挖掘技术》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试