DevOps 项目 - 终极 CICD 企业 DevOps 管道项目 postgres 命令语法不正确,正确的 cmd 是

2025-05-26

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 实例

  1. 登录 AWS 管理控制台:

  2. 导航到 EC2:

    • 在搜索栏中输入“EC2”或选择“计算”部分下的“服务”>“EC2”。
  3. 启动实例:

    • 单击 EC2 仪表板侧栏中的“实例”。
    • 单击“启动实例”按钮。
  4. 选择 Amazon 系统映像 (AMI):

    • 从可用 AMI 列表中选择“Ubuntu”。
    • 选择“Ubuntu Server 24.04 LTS”。
    • 点击“选择”。
  5. 选择实例类型:

    • 选择实例类型(例如,t2.micro 用于测试)。
    • 单击“下一步:配置实例详细信息”。
  6. 配置实例详细信息:

    • 配置可选设置或保留默认设置。
    • 单击“下一步:添加存储”。
  7. 添加存储:

    • 指定根卷大小(通常使用默认值即可)。
    • 点击“下一步:添加标签”。
  8. 添加标签:

    • 或者,添加标签以便更好地组织。
    • 单击“下一步:配置安全组”。
  9. 配置安全组:

    • 允许从您的 IP 地址进行 SSH 访问(端口 22)。
    • 或者,允许其他端口(例如,HTTP 端口 80、HTTPS 端口 443)。
    • 单击“审核并启动”。
  10. 审核并发布:

    • 检查实例配置。
    • 点击“启动”。
  11. 选择密钥对:

    • 选择现有的密钥对或创建一个新的密钥对。
    • 勾选确认框。
    • 单击“启动实例”。
  12. 访问您的实例:

    • 使用像 MobaXterm 这样的 SSH 客户端:
      • 打开 MobaXterm 并点击“会话”>“SSH”。
      • 输入您的实例的公共 IP 地址。
      • 选择“指定用户名”并输入“ubuntu”。
      • 在“高级 SSH 设置”下,选择“使用私钥”并浏览到您的密钥对文件 (.pem)。
      • 单击“确定”即可连接。

2. 在所有 3 台虚拟机上安装 Docker

分步安装:

  1. 安装必备软件包:

    sudo apt-get update
    sudo apt-get install ca-certificates curl
    
  2. 下载并添加 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
    
  3. 将 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
    
  4. 更新包索引:

    sudo apt-get update
    
  5. 安装 Docker 软件包:

    sudo apt-get install docker-ce docker-ce-cli containerd.io -y
    
  6. 授予 Docker 套接字权限(可选,为了方便):

    sudo chmod 666 /var/run/docker.sock
    

按照这些步骤,你应该已经在 Ubuntu 系统上成功安装了 Docker。现在你可以开始使用 Docker 来容器化和管理你的应用程序了。


在 Ubuntu 上设置 Jenkins

分步安装:

  1. 更新系统:

    sudo apt-get update
    sudo apt-get upgrade -y
    
  2. 安装 Java(Jenkins 需要 Java):

    sudo apt install -y fontconfig openjdk-17-jre
    
  3. 添加 Jenkins 存储库密钥:

    sudo wget -O /usr/share/keyrings/jenkins-keyring.asc https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key
    
  4. 添加 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
    
  5. 更新包索引:

    sudo apt-get update
    
  6. 安装 Jenkins:

    sudo apt-get install -y jenkins
    
  7. 启动并启用 Jenkins:

    sudo systemctl start jenkins
    sudo systemctl enable jenkins
    
  8. 访问 Jenkins:

    sudo cat /var/lib/jenkins/secrets/initialAdminPassword
    
- Enter the password, install suggested plugins, and create your first admin user.
Enter fullscreen mode Exit fullscreen mode

在 Jenkins 服务器上安装 Trivy

分步安装:

  1. 安装必备软件包:

    sudo apt-get install wget apt-transport-https gnupg lsb-release
    
  2. 添加 Trivy 存储库密钥:

    wget -qO - https://aquasecurity.github.io/trivy-repo/deb/public.key | sudo apt-key add -
    
  3. 将 Trivy 存储库添加到源:

    echo deb https://aquasecurity.github.io/trivy-repo/deb $(lsb_release -sc) main | sudo tee -a /etc/apt/sources.list.d/trivy.list
    
  4. 更新包索引:

    sudo apt-get update
    
  5. 安装Trivy:

    sudo apt-get install trivy
    

使用 Docker 设置 Nexus 存储库管理器

分步安装:

  1. 拉取 Nexus Docker 镜像:

    sudo docker pull sonatype/nexus3
    
  2. 运行 Nexus 容器:

    sudo docker run -d -p 8081:8081 --name nexus -v nexus-data:/nexus-data sonatype/nexus3
    
  3. 访问 Nexus:

    • 打开 Web 浏览器并转到http://your_server_ip_or_domain:8081
    • 默认用户名是admin。从日志中检索初始管理员密码:

      sudo docker logs nexus 2>&1 | grep -i password
      
- Complete the setup wizard.
Enter fullscreen mode Exit fullscreen mode

使用 Docker 设置 SonarQube

分步安装:

  1. 为 SonarQube 和 PostgreSQL 创建网络:

    sudo docker network create sonarnet
    
  2. 运行 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
    
  3. 运行 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
    
  4. 访问 SonarQube:


设置 Jenkins 流水线以自动化 CI/CD 流程

逐步管道设置:

  1. 创建一个新的管道作业:

    • 在 Jenkins 中,单击“新建项目”并选择“管道”。
    • 命名管道并单击“确定”。
  2. 配置管道:

    • 向下滚动到“管道”部分。
    • 选择“管道脚本”并使用 Groovy 定义管道阶段。
  3. 示例管道脚本:

    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'
                    }
                }
            }
        }
    }
    
  4. 保存并运行管道:

    • 保存管道配置。
    • 单击“立即构建”以运行管道。

该管道将​​自动化整个 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
PREV
端到端 AWS DevOps 项目:在 Amazon EKS 上自动构建和部署 Java 应用程序
NEXT
DevOps 项目:Kubernetes 上基于微服务的应用程序的 CI/CD 管道