# 安装 Jenkins
本页介绍如何安装 Jenkins 以使用流水线(Pipeline)功能。
## 开始之前
- 安装 Jenkins 之前需要确保将要安装 Jenkins 的集群中存在默认的存储类;
- 请提前做好资源规划,评估未来最大并发的流水线数,并根据 [Jenkins 场景配置文档](../../quickstart/scenarios-config.md)进行配置;
- 请确认安装的目标集群的容器运行时:只有使用 Docker 作为容器运行时才能选择 Agent 的 `ContainerRuntime` 为 Docker;
## 开始安装
1. 点击左上角的 **≡** 打开导航栏,选择 __容器管理__ -> __集群列表__ ,找到需要安装 Jenkins 的集群,点击该集群的名称。
!!! note
需要根据实际情况选择 Jenkins 的部署集群。目前不建议将其部署在全局服务集群,因为 Jenkins 执行流水线高并发时会占用大量资源,可能会导致全局服务集群的瘫痪。
![点击集群名称](https://docs.daocloud.io/daocloud-docs-images/docs/zh/docs/amamba/images/install-jenkins11.png)
2. 在左侧导航栏中选择 __Helm 应用__ -> __Helm 模板__ ,找到并点击 __Jenkins__ 。
![jenkins helm](https://docs.daocloud.io/daocloud-docs-images/docs/amamba/images/install-jenkins12.png)
3. 在 __版本选择__ 中选择想要安装的版本,点击 __安装__ 。
![安装](https://docs.daocloud.io/daocloud-docs-images/docs/amamba/images/install-jenkins13.png)
4. 在安装界面,填写所需的安装参数,最后在右下角点击 __确定__ 按钮。
![填写配置](https://docs.daocloud.io/daocloud-docs-images/docs/amamba/images/install-jenkins14.png)
以下是重要参数说明,根据实际业务需求进行参数更换编写。
| 参数 | 描述 |
| ------------------------------------ | ------------------------------------------------------------ |
| ContainerRuntime | 选择运行时,支持 podman、docker。需要根据集群的容器运行时决定。 |
| AdminUser | Jenkins 的用户名 |
| AdminPassword | Jenkins 的密码 |
| Deploy.JenkinsHost | Jenkins 的访问链接。如果选择 NodePort 方式,访问地址规则为:`http://{集群地址:端口}` |
| JavaOpts | 指定启动 Jenkins 的 JVM 启动参数 |
| ServiceType | 默认为 ClusterIP,支持 ClusterIP、NodePort、LoadBalancer |
| ServicePort | 服务访问端口 |
| NodePort | 如果 ServiceType=NodePort 则需要必填,范围为:30000-32767 |
| resources.requests | Jenkins 的资源请求值 |
| resources.limits | Jenkins 的资源限制值 |
| image.registry | Jenkins 镜像仓库地址 |
| eventProxy.enabled | EventProxy 是一个旨在为 Jenkins 到 Amamba APIServer 提供可靠连接的边车容器,当 Jenkins 部署的集群和 Global 集群不在同一个区域的时候,最好开启。 |
| eventProxy.image.registry | eventProxy 镜像仓库的地址。
如果 enabled=true 必须填写 |
| eventProxy.configMap.eventProxy.host | Jenkins 事件的接收地址的Host,Jenkins 如果部署在 Worker 集群,需要设置成 DCE 的入口地址。
如果 enabled=true 必须填写。 |
| eventProxy.configMap.eventProxy.proto | Jenkins 事件的接收地址的 Protocol,默认是 http。
如果 enabled=true 必须填写 |
| eventProxy.configMap.eventProxy.webhookUrl | Jenkins 事件的接收地址的路径,默认是 `/apis/internel.amamba.io/devops/pipeline/v1alpha1/webhooks/jenkins` 。 |
| eventProxy.configMap.eventProxy.token | 访问 DCE 的 token,获取方式参考[全局管理访问密钥文档](../../../ghippo/user-guide/personal-center/accesstoken.md)
如果 enabled=true 必须填写 |
5. 前往 Helm 应用查看部署结果。
![完成创建](https://docs.daocloud.io/daocloud-docs-images/docs/amamba/images/install-jenkins15.png)
## 集成 Jenkins
说明:目前仅支持集成通过 DCE 5.0 平台安装的 Jenkins。
1. 使用具有应用工作台管理员角色的用户登录 DCE 5.0 并进入应用工作台。
![完成创建](../../images/jenkins3.jpg)
2. 在左侧导航栏点击平台管理下的 __工具链集成__ ,点击右上角的 __集成__ 按钮。
![完成创建](../../images/jenkins2.jpg)
3. 选择工具链类型 __Jenkins__ ,填写集成名称、Jenkins 地址、用户名和密码。
如果 Jenkins 地址为 https 协议时,需要提供证书。通过 Helm 部署出来的 Jenkins 默认账户密码为 __admin/Admin01__ 。
![完成创建](../../images/jenkins.jpg)
4. 集成完毕后会在 __工具链列表__ 页面成功生成一条记录。
5. 接下来就可以前往工作空间内[创建流水线](create/custom.md)。
## 集成注意事项
如果集成的 Jenkins 实例未提供集群和命名空间信息时,会导致应用工作台无法更新 Jenkins 实例的配置文件,从而引发出下述两个问题:
- 流水线 __通知__ 步骤,在全局管理 -> 平台设置 -> 邮件服务器设置,配置好邮件服务器地址后,无法更新到 Jenkins 中配置中。
- 流水线 __SonarQube 配置__ 步骤,在工具链集成 SonarQube 实例后并绑定到当前工作空间,使用该实例会失效。
针对上述问题,需要前往 Jenkins 后台进行相关配置。
### 针对通知步骤,在 Jenkins 后台配置邮件通知
1. 前往 Jenkins 后台,点击 Manage Jenkins -> Configure System,然后下拉找到 __邮件通知__ 模块。
2. 填写相关参数,参数说明如下:
- SMTP 服务器:能够提供邮件服务的 SMTP 服务器地址
- 启用 SMTP 认证:根据需求选择,建议启用 SMTP 认证
- 用户名:SMTP 用户的名称
- 密码:SMTP 用户的密码
- SMTP 端口:发送邮件的端口,不填写此项将使用协议默认端口.
!!! note
配置发件人邮箱地址需要点击 右上角个人头像 -> __设置__ ,然后下拉找到 __邮件地址__
![Jenkins邮件配置页](https://docs.daocloud.io/daocloud-docs-images/docs/zh/docs/amamba/images/install-jenkins06.png)
### 针对 SonarQube 配置步骤,在 Jenkins 后台配置 SonarQube 服务器地址
1. 前往 Jenkins 后台,点击 __Manage Jenkins__ -> __Configure System__ ,然后下拉找到 __SonarQube servers__ ,然后点击 __Add SonarQube__ 。
![Jenkins Sonarqube配置页](https://docs.daocloud.io/daocloud-docs-images/docs/zh/docs/amamba/images/install-jenkins08.png)
2. 填写相关参数,参数说明如下:
- Name:给 SonarQube 服务器配置一个名称,在应用工作台流水线的 SonarQube 配置步骤中需要输入相同的名字。
- Server URL:SonarQube 服务器的 URL。
- Server authentication token:SonarQube 服务器的身份验证令牌。您可以在 SonarQube 控制台中生成一个令牌。
- 在 SonarQube 生成管理员令牌(Token),操作路径为:__My Account__ -> __Profile__ -> __Security__ -> __Generate__ -> __Copy__
- 添加凭据,类型选择 __Secret test__ ,Secret 输入 SonarQube 管理员令牌(Token),ID 不填会默认生成
![sonarqube](../../images/sonarqube.png)
!!! note
如果想要将工作台已经集成的 SornarQube 更新到新的 Jenkins 的配置中,请务必保证名称一致。需要注意的是,Name不是集成的时候输入的名称,
需要在流水线的 SonarQube 配置步骤中下拉获取。
![SonarQube Name](https://docs.daocloud.io/daocloud-docs-images/docs/zh/docs/amamba/images/install-jenkins07.png)
3. 前往 SonarQube 后台更新 Webhook 地址。依次点击 __Administration__ -> __Configuration__ -> __Webhooks__ ,选择对应的 Webhook,点击 __Update__ 。
!!! note
应用工作台 v0.25.0 之后的版本无需执行该步骤!
![sonarqube03](../../images/sonarqube03.png)
其中 URL 更新为 `http://{新部署的 Jenkins 的地址}/sonarqube-webhook/`
![sonarqube03](../../images/sonarqube04.png)