
# 基于弹性云服务器安装及部署Jenkins
#### 简介
Jenkins是一个开源的自动化服务器。它有助于自动化软件开发中与构建、测试和部署相关的部分，促进持续集成和持续交付。它是一个基于服务器的系统，可以在Apache Tomcat等Servlet容器中运行。
Jenkins拥有一系列出色的特性，值得将其添加到您的工具中，包括：
- 简单易用
- 用户界面简单直观
- 极其灵活，易于适应您的需求
- 拥有超过1000个插件，支持与众多外部应用程序的通信、集成和测试，如果某个插件不可用，您可以轻松地创建一个。
- 通过基于Web的GUI进行简单的配置，加快任务创建，提高一致性并降低维护成本。
- 支持跨操作系统的脚本编写。
- Jenkins工具是用Java编写的，因此它可以移植到大多数主要平台上。
 
#### 准备工作
- 在安装Jenkins之前，需要购买弹性云服务器（推荐配置：4GiB+内存，40GiB+硬盘），操作系统选择CentOS 7.6。同时购买弹性公网IP，绑定到购买的弹性云服务器上。
- ECS购买成功后，将下表中列出的入网规则添加到ECS所属的安全组。具体操作请参考[添加安全组规则](https://support.huaweicloud.com/usermanual-vpc/zh-cn_topic_0030969470.html)。
  
  | 方向  | 优先级 | 策略 | 类型   | 协议端口      | 源地址       |
  |:---|:---|:---|:---|:---|:---|
  | 入方向 | 1   | 允许 | IPv4 | TCP: 8080 | 0.0.0.0/0 |
     
  
 
#### 资源和成本规划
本次实践所用的资源配置及软件版本如[表1]中所示。当您使用不同的硬件规格或软件版本时，本指导中的命令及参数可能会发生改变，需要您根据实际情况进行调整。
 表1资源和成本规划 
| 资源       | 资源说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          | 成本说明                                                                                                                                                                                                                                                                                                                                                                                  |
|:---|:---|:---|
| 虚拟私有云VPC | VPC网段：192.168.0.0/16                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          | 免费                                                                                                                                                                                                                                                                                                                                                                                    |
| 虚拟私有云子网  | - 可用区：可用区1  - 子网网段：192.168.0.0/24                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | 免费                                                                                                                                                                                                                                                                                                                                                                                    |
| 弹性云服务器   | - 计费模式：包年/包月  - 可用区：可用区1  - 规格：c9.large.4  - 镜像：CentOS 7.6 64bit  - 系统盘：40G  - 弹性公网IP：现在购买  - 线路：全动态BGP  - 公网带宽：按流量计费  - 带宽大小：5 Mbit/s   | ECS涉及以下几项费用： - 云服务器  - 云硬盘  - 弹性公网IP   具体的计费方式及标准请参考[计费模式概述](https://support.huaweicloud.com/price-ecs/ecs_billing_2001.html)。 |
| JDK      | Java开发工具软件。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   | 免费                                                                                                                                                                                                                                                                                                                                                                                    |
| Jenkins  | 基于Java开发的一种持续集成工具，用于监控持续重复的工作。 获取方式： <https://repo.huaweicloud.com/jenkins/redhat-stable/jenkins-2.361.1-1.1.noarch.rpm>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          | 免费                                                                                                                                                                                                                                                                                                                                                                                    |
   
#### 操作步骤
1. 远程登录已购买的ECS。
2. 安装JDK 
   ![](https://support.huaweicloud.com/bestpractice-ecs/public_sys-resources/note_3.0-zh-cn.png)
   考虑到和Jenkins版本的兼容性，选择安装OpenJDK 11([支持的Java版本](https://pkg.jenkins.io/redhat-stable/))。
   1. 执行以下命令查看可安装版本。
      ```
      yum -y list java*
      ```
      
   
   2. 继续执行以下命令安装新版本JDK。
      ```
      yum install java-11-openjdk* -y
      ```
      
   
   3. 执行以下命令查看是否安装成功。
      ```
      java -version
      ```
      ![](https://support.huaweicloud.com/bestpractice-ecs/zh-cn_image_0000002392767366.png "点击放大")
      
   
   
   
   
3. 安装Jenkins 
   1. 依次执行以下命令，安装Jenkins。
      ```
      wget https://repo.huaweicloud.com/jenkins/redhat-stable/jenkins-2.361.1-1.1.noarch.rpm
      rpm -ivh jenkins-2.361.1-1.1.noarch.rpm
      ```
      
   
   2. 执行以下命令，编辑Jenkins文件。
      ```
      vim /etc/sysconfig/jenkins
      ```
      ```
      #Port
      JENKINS_PORT="8080"
      #Modify the user
      $JENKINS_USER="root"
      ```
      
   
   3. 执行以下命令，启动Jenkins并查看当前状态。
      ```
      systemctl start jenkins
      systemctl status jenkins
      ```
      ![](https://support.huaweicloud.com/bestpractice-ecs/zh-cn_image_0000002392927258.png "点击放大")
      
   
   
   
   
4. 激活Jenkins 
   1. 在本地浏览器访问地址http:*Jenkins所在主机绑定的EIP* :8080，出现解锁界面。
      ![](https://support.huaweicloud.com/bestpractice-ecs/zh-cn_image_0000002426327237.png "点击放大")
      
   
   2. 登录弹性云服务器。
   
   3. 执行以下命令获取激活密码。
      ```
      cat /var/lib/jenkins/secrets/initialAdminPassword
      ```
      ![](https://support.huaweicloud.com/bestpractice-ecs/zh-cn_image_0000002426367113.png "点击放大")
      
   
   4. 返回解锁界面输入激活密码，单击"继续"。
   
   5. 选择"安装推荐的插件"，等待安装完成。 ![](https://support.huaweicloud.com/bestpractice-ecs/zh-cn_image_0000002392767378.png "点击放大")
      
   
   6. 安装完成后，系统会提示您设置第一个管理员用户，输入用户名和密码，单击"保存并完成"。 ![](https://support.huaweicloud.com/bestpractice-ecs/zh-cn_image_0000002392927270.png "点击放大")
      
   
   7. 在实例配置页面确认Jenkins URL中的服务器域名或服务器IP地址，单击"保存并完成"。 Jenkins URL 用于给各种Jenkins资源提供绝对路径链接的根地址。
      ![](https://support.huaweicloud.com/bestpractice-ecs/zh-cn_image_0000002426327241.png "点击放大")
      
   
   8. 单击"开始使用Jenkins"，进入Jenkins主界面。 ![](https://support.huaweicloud.com/bestpractice-ecs/zh-cn_image_0000002426367117.png "点击放大")
      
   
   
   
   
 
#### 后续验证
**单一任务执行**
1. 创建任务，选择自由项目，输入项目名称，单击"OK"。
2. 在构建步骤，选择"执行shell"，填入**echo hello world; exit** ，其他不设置，单击"保存"。
   ![](https://support.huaweicloud.com/bestpractice-ecs/zh-cn_image_0000001451735941.png "点击放大")
   
3. 单击"立即构建"。
4. 等待左下方构建任务执行完成，单击进入，选择控制台输出，看到执行成功并输出hello world。 ![](https://support.huaweicloud.com/bestpractice-ecs/zh-cn_image_0000001401256176.png "点击放大")
   
**多任务顺序执行**
1. 在插件管理界面，搜索并安装MultiJob插件。
   ![](https://support.huaweicloud.com/bestpractice-ecs/public_sys-resources/note_3.0-zh-cn.png)
   - 插件安装后需要重启Jenkins方可生效，选择安装后重启选项。 ![](https://support.huaweicloud.com/bestpractice-ecs/zh-cn_image_0000001433165962.png "点击放大")
     
   
   - 重启Jenkins后，需要在已安装的插件界面，查看MultiJob插件是否生效。 ![](https://support.huaweicloud.com/bestpractice-ecs/zh-cn_image_0000001433008214.png "点击放大")
     
     
2. 创建多任务项目，选择MultiJob项目，输入项目名称，单击"OK"。 ![](https://support.huaweicloud.com/bestpractice-ecs/zh-cn_image_0000001451733717.png "点击放大")
   ![](https://support.huaweicloud.com/bestpractice-ecs/public_sys-resources/note_3.0-zh-cn.png)
   创建MultiJob项目前，需先创建三个单一任务子项目。
   
3. 在构建步骤，选择MultiJob Phase。 ![](https://support.huaweicloud.com/bestpractice-ecs/zh-cn_image_0000001451693893.png "点击放大")
   
4. 增加如下3个子任务，并设置按顺序运行。 ![](https://support.huaweicloud.com/bestpractice-ecs/zh-cn_image_0000001401413872.png "点击放大")
   ![](https://support.huaweicloud.com/bestpractice-ecs/zh-cn_image_0000001451853565.png "点击放大")
   
5. 单击"保存"，任务创建完成。
6. 单击"立即构建"，即可看到3个任务按顺序构建成功。 ![](https://support.huaweicloud.com/bestpractice-ecs/zh-cn_image_0000001401733636.png "点击放大")
   
 
