DevOps 项目 - 终极 CICD 企业 DevOps 管道项目
postgres 命令语法不正确,正确的 cmd 是
介绍
在当今快节奏的开发环境中,持续集成和持续交付 (CI/CD) 是快速可靠地交付高质量软件的关键实践。在本项目中,我们将逐步讲解如何从零开始构建一个强大的 CI/CD 流水线,并利用 Jenkins、Docker、Trivy、SonarQube 和 Nexus 等行业标准工具。本指南面向希望以可扩展且安全的方式自动化构建、测试和部署应用程序流程的开发者和 DevOps 爱好者。
我们将首先在 AWS 上搭建必要的基础设施,然后安装并配置 Docker、Jenkins、Trivy、Nexus 和 SonarQube。最后,我们将创建一个 Jenkins 流水线,用于自动化整个 CI/CD 流程,确保您的应用程序持续构建、漏洞扫描、代码质量分析以及部署,并且只需极少的人工干预。
让我们深入研究并利用这个强大的 CI/CD 设置来改变您的软件交付流程。
第一阶段:基础设施设置
1. 在 AWS 上创建 3 个 Ubuntu 24.04 VM 实例
-
登录 AWS 管理控制台:
- 转到AWS 管理控制台。
- 使用您的 AWS 账户凭证登录。
-
导航到 EC2:
- 在搜索栏中输入“EC2”或选择“计算”部分下的“服务”>“EC2”。
-
启动实例:
- 单击 EC2 仪表板侧栏中的“实例”。
- 单击“启动实例”按钮。
-
选择 Amazon 系统映像 (AMI):
- 从可用 AMI 列表中选择“Ubuntu”。
- 选择“Ubuntu Server 24.04 LTS”。
- 点击“选择”。
-
选择实例类型:
- 选择实例类型(例如,t2.micro 用于测试)。
- 单击“下一步:配置实例详细信息”。
-
配置实例详细信息:
- 配置可选设置或保留默认设置。
- 单击“下一步:添加存储”。
-
添加存储:
- 指定根卷大小(通常使用默认值即可)。
- 点击“下一步:添加标签”。
-
添加标签:
- 或者,添加标签以便更好地组织。
- 单击“下一步:配置安全组”。
-
配置安全组:
- 允许从您的 IP 地址进行 SSH 访问(端口 22)。
- 或者,允许其他端口(例如,HTTP 端口 80、HTTPS 端口 443)。
- 单击“审核并启动”。
-
审核并发布:
- 检查实例配置。
- 点击“启动”。
-
选择密钥对:
- 选择现有的密钥对或创建一个新的密钥对。
- 勾选确认框。
- 单击“启动实例”。
-
访问您的实例:
- 使用像 MobaXterm 这样的 SSH 客户端:
- 打开 MobaXterm 并点击“会话”>“SSH”。
- 输入您的实例的公共 IP 地址。
- 选择“指定用户名”并输入“ubuntu”。
- 在“高级 SSH 设置”下,选择“使用私钥”并浏览到您的密钥对文件 (.pem)。
- 单击“确定”即可连接。
- 使用像 MobaXterm 这样的 SSH 客户端:
2. 在所有 3 台虚拟机上安装 Docker
分步安装:
-
安装必备软件包:
sudo apt-get update sudo apt-get install ca-certificates curl
-
下载并添加 Docker 的官方 GPG 密钥:
sudo install -m 0755 -d /etc/apt/keyrings sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc sudo chmod a+r /etc/apt/keyrings/docker.asc
-
将 Docker 存储库添加到 Apt 源:
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
-
更新包索引:
sudo apt-get update
-
安装 Docker 软件包:
sudo apt-get install docker-ce docker-ce-cli containerd.io -y
-
授予 Docker 套接字权限(可选,为了方便):
sudo chmod 666 /var/run/docker.sock
按照这些步骤,你应该已经在 Ubuntu 系统上成功安装了 Docker。现在你可以开始使用 Docker 来容器化和管理你的应用程序了。
在 Ubuntu 上设置 Jenkins
分步安装:
-
更新系统:
sudo apt-get update sudo apt-get upgrade -y
-
安装 Java(Jenkins 需要 Java):
sudo apt install -y fontconfig openjdk-17-jre
-
添加 Jenkins 存储库密钥:
sudo wget -O /usr/share/keyrings/jenkins-keyring.asc https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key
-
添加 Jenkins 存储库:
echo "deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] https://pkg.jenkins.io/debian-stable binary/" | sudo tee /etc/apt/sources.list.d/jenkins.list > /dev/null
-
更新包索引:
sudo apt-get update
-
安装 Jenkins:
sudo apt-get install -y jenkins
-
启动并启用 Jenkins:
sudo systemctl start jenkins sudo systemctl enable jenkins
-
访问 Jenkins:
- 打开 Web 浏览器并转到http://your_server_ip_or_domain:8080。
- 您将看到一个页面,要求输入初始管理员密码。使用以下命令检索:
sudo cat /var/lib/jenkins/secrets/initialAdminPassword
- Enter the password, install suggested plugins, and create your first admin user.
在 Jenkins 服务器上安装 Trivy
分步安装:
-
安装必备软件包:
sudo apt-get install wget apt-transport-https gnupg lsb-release
-
添加 Trivy 存储库密钥:
wget -qO - https://aquasecurity.github.io/trivy-repo/deb/public.key | sudo apt-key add -
-
将 Trivy 存储库添加到源:
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
-
安装Trivy:
sudo apt-get install trivy
使用 Docker 设置 Nexus 存储库管理器
分步安装:
-
拉取 Nexus Docker 镜像:
sudo docker pull sonatype/nexus3
-
运行 Nexus 容器:
sudo docker run -d -p 8081:8081 --name nexus -v nexus-data:/nexus-data sonatype/nexus3
-
访问 Nexus:
- 打开 Web 浏览器并转到http://your_server_ip_or_domain:8081。
-
默认用户名是
admin
。从日志中检索初始管理员密码:sudo docker logs nexus 2>&1 | grep -i password
- Complete the setup wizard.
使用 Docker 设置 SonarQube
分步安装:
-
为 SonarQube 和 PostgreSQL 创建网络:
sudo docker network create sonarnet
-
运行 PostgreSQL 容器:
sudo docker run -d --name sonarqube_db --network sonarnet -e POSTGRES_USER=sonar -e POSTGRES_PASSWORD=sonar -e POSTGRES_DB=sonarqube -v postgresql:/var/lib/postgresql -v postgresql_data:/var/lib/postgresql/data postgres:latest
-
运行 SonarQube 容器:
sudo docker run -d --name sonarqube --network sonarnet -p 9000:9000 -e sonar.jdbc.url=jdbc:postgresql://sonarqube_db:5432/sonarqube -e sonar.jdbc.username=sonar -e sonar.jdbc.password=sonar -v sonarqube_data:/opt/sonarqube/data -v sonarqube_extensions:/opt/sonarqube/extensions sonarqube:latest
-
访问 SonarQube:
- 打开 Web 浏览器并转到http://your_server_ip_or_domain:9000。
- 默认登录是
admin
使用密码admin
。 - 通过配置 SonarQube 服务器完成设置。
设置 Jenkins 流水线以自动化 CI/CD 流程
逐步管道设置:
-
创建一个新的管道作业:
- 在 Jenkins 中,单击“新建项目”并选择“管道”。
- 命名管道并单击“确定”。
-
配置管道:
- 向下滚动到“管道”部分。
- 选择“管道脚本”并使用 Groovy 定义管道阶段。
-
示例管道脚本:
pipeline { agent any stages { stage('Clone Repository') { steps { git 'https://github.com/your-repo.git' } } stage('Build with Maven') { steps { sh 'mvn clean install' } } stage('Docker Build and Push') { steps { script { docker.build("your-app:latest").push("your-docker-repo/your-app:latest") } } } stage('Security Scan with Trivy') { steps { sh 'trivy image your-docker-repo/your-app:latest' } } stage('Quality Analysis with SonarQube') { steps { withSonarQubeEnv('SonarQube Server') { sh 'mvn sonar:sonar' } } } } }
-
保存并运行管道:
- 保存管道配置。
- 单击“立即构建”以运行管道。
该管道将自动化整个 CI/CD 流程,从克隆存储库到构建应用程序、使用 Trivy 扫描漏洞以及使用 SonarQube 分析代码质量。
结论
恭喜!您已成功使用 Jenkins、Docker、Trivy、SonarQube 和 Nexus 搭建了完整的 CI/CD 流水线。该流水线不仅实现了构建和部署流程的自动化,还集成了关键的安全和质量检查,确保您的应用程序安全高效地交付。无论您是在开发个人项目还是管理大型生产环境,此设置都能为持续集成和交付奠定坚实的基础,帮助您在不影响质量或安全性的情况下更快地发布软件。
现在您已经掌握了基础知识,不妨考虑添加更多阶段或工具来扩展此流程,探索更多高级功能,并根据您的特定需求定制流程。祝您部署愉快!
👤 作者

加入我们的电报社区||在 GitHub 上关注我以获取更多 DevOps 内容!
文章来源:https://dev.to/prodevopsguytech/devops-project-the-ultimate-cicd-corporate-devops-pipeline-project-3km