先决条件:第二部分端到端Java DevOps自动化项目
译自 Part-3 End-to-End Java DevOps Automation Project,作者 Naveen Kumar。
1. Eclipse Temurin 安装程序
2. Pipeline Maven 集成
3. 配置文件提供程序
4. SonarQube 扫描程序
5. Kubernetes CLI
kubectl
与 Kubernetes 集群交互。6. Kubernetes
7. Docker
8. Docker Pipeline
9. Maven 集成
Trivy 安装命令
sudo apt-get install wget apt-transport-https gnupg lsb-release -y
wget -qO - https://aquasecurity.github.io/trivy-repo/deb/public.key | sudo apt-key add -
echo deb https://aquasecurity.github.io/trivy-repo/deb $(lsb_release -sc) main | sudo tee -a /etc/apt/sources.list.d/trivy.list
sudo apt-get update -y
sudo apt-get install trivy -y
trivy -v
# Expected output: Version: 0.53.0 (or the latest version)
“全局工具配置”部分(以前称为“管理 Jenkins -> 配置工具”)是您定义和管理 Jenkins 在所有作业中使用的工具的地方。这包括编译器、构建工具以及构建项目所需的其它实用程序。
使用 GitHub 用户名作为用户名,使用我们在第 2 部分(设置私有存储库时)创建的令牌作为密码值
通过全局凭证创建 Git 凭证:将用户名设置为 GitHub 用户,将密码值设置为我们在第 2 部分(设置专用存储库时)创建的令牌。
“凭据”部分允许您管理 Jenkins 用于安全地与外部系统交互的凭据。凭据可以包括用户名和密码、SSH 密钥、API 令牌等等。
从这里开始,我们将开始编写 Jenkins Pipeline 代码,您可以从该文件获取完整代码:pipeline.groovy,并逐步执行。
“系统”部分位于“管理 Jenkins”下,您可以在其中配置 Jenkins 的整体系统设置。这包括影响整个 Jenkins 安装及其运行方式的设置。
在 Jenkins Pipeline 中编写 SonarQube 分析阶段之前,您需要在 Jenkins 中配置 SonarQube 服务器。以下是执行此操作的步骤:
1. 获取 SonarQube 服务器凭据:
转到 SonarQube 服务器 -> 管理 -> 安全 -> 用户 -> 令牌
2. 在 Jenkins 中创建全局凭据:
3. 在 Jenkins 中配置 SonarQube 服务器:
在 Jenkins Pipeline 中编写 SonarQube 质量门阶段之前的步骤,
转到 SonarQube 服务器 -> 管理 -> 配置 -> Webhook -> 令牌
添加 Jenkins IP:
以下是 SonarQube 和 Jenkins 集成完整架构的参考:
在编写 发布到 Nexus 工件阶段的代码之前,我们需要在 POM 文件中添加存储库 URL。
要配置 Jenkins 中的全局 Maven 设置,请执行以下步骤:
1. 导航到配置:
2. 设置配置类型和 ID:
global-settings
.3. 编辑内容:
<servers>
标签内添加以下代码来编辑配置文件的内容:<servers>
<server>
<id>maven-releases</id>
<username>nexus username</username>
<password>nexus password</password>
</server>
<server>
<id>maven-snapshots</id>
<username>nexus username</username>
<password>nexus password</password>
</server>
</servers>
将 nexus username
和 nexus password
替换为您的实际 Nexus 凭据。
通过执行这些步骤,您将在 Jenkins 中配置全局 Maven 设置,以包含必要的 Nexus 存储库凭据。
Jenkins 的“管理 Jenkins”下的“管理文件”部分用于处理集中管理的配置文件,这些文件可以在 Jenkins 作业中引用。此功能是 Config File Provider 插件的一部分。
阶段:部署到 Kubernetes 集群
通过运行以下命令在 Jenkins 服务器上安装 KUBECTL
curl -o kubectl https://amazon-eks.s3.us-west-2.amazonaws.com/1.19.6/2021-01-05/bin/linux/amd64/kubectl
chmod +x ./kubectl
sudo mv ./kubectl /usr/local/bin
kubectl version --short --client
为了正确且安全地将应用程序部署到 Kubernetes 集群,我们需要遵循正确的流程,例如创建服务帐户和使用基于角色的访问控制 (RBAC)。
RBAC 代表基于角色的访问控制。假设我们的项目中有三个用户:
在使用 Kubernetes 时,我们不能授予新人或中级人员完全访问权限。因此,我们创建角色:
这种方法通过不向所有人授予完全访问权限来确保安全性。相反,我们创建具有适当权限的特定角色,并将它们分配给相应的用户。
现在,让我们继续通过创建服务帐户来使我们的部署安全。
通过遵循这些步骤,我们确保我们的 Kubernetes 部署安全且得到妥善管理。现在,让我们进入实际部分并创建服务帐户。
请参考此文件:service-role-for-jenkins.md 创建用于 Jenkins 的服务帐户。
创建服务帐户后,将 secret/mysecretname 的复制令牌粘贴到 Jenkins 全局凭据中:
在 Jenkins 中设置 HTML 电子邮件通知
在 Jenkins 中配置电子邮件的步骤:
现在使用此应用程序密码在 Jenkins 中创建凭据:
使用此应用密码在 Jenkins 中创建凭据:
提供的命令是 Jenkins 管道 post
块,它始终在主管道阶段运行后执行某些操作。此特定块发送包含 Jenkins 构建详细信息的电子邮件通知。以下是其使用情况和功能的细分:
post { always { ... } }
环境变量和参数:
jobName = env.JOB_NAME
buildNumber = env.BUILD_NUMBER
pipelineStatus = currentBuild.result ?: 'UNKNOWN'
bannerColor = pipelineStatus.toUpperCase() == 'SUCCESS' ? 'green' : 'red'
电子邮件正文构建:
emailext 步骤:
总结:
此命令有助于通过自动电子邮件通知系统使利益相关者了解构建状态。
最终结果:
本文介绍了使用 Jenkins 为 Java DevOps 自动化项目设置全面的 CI/CD 管道的步骤。关键步骤包括安装必要的 Jenkins 插件,配置 SonarQube、Nexus、Docker 和 Kubernetes 等工具,以及设置全局凭据。我们还演示了如何使用基于角色的访问控制 (RBAC) 将应用程序安全地部署到 Kubernetes 集群,以及如何配置 HTML 电子邮件通知以获取构建状态更新。通过遵循这些步骤,您可以确保为您的 Java 应用程序建立一个健壮、自动化和安全的部署管道。