You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将本地Jenkins与AWS服务器集成实现前后端Pipeline构建?

本地Jenkins与AWS构建服务器集成实现Pipeline前后端构建方案

一、前置配置:Jenkins与AWS服务器建立免密SSH连接

要让本地Jenkins远程操作AWS构建服务器,先搞定免密登录:

  • 在本地Jenkins服务器生成SSH密钥对:ssh-keygen -t rsa -b 4096,一路回车生成默认路径的密钥(~/.ssh/id_rsa 和 ~/.ssh/id_rsa.pub)
  • 将公钥内容复制到AWS服务器的 ~/.ssh/authorized_keys 文件中,确保该文件权限为 600,.ssh 目录权限为 700
  • 在Jenkins后台「凭据管理」中添加「SSH用户名和私钥」类型凭据:用户名填AWS服务器登录用户名,私钥选择「直接输入」并粘贴本地Jenkins的id_rsa内容,给凭据起标识名(比如aws-build-server)

二、安装Jenkins必要插件

在Jenkins插件中心安装以下插件:

  • SSH Pipeline Steps:用于在Pipeline脚本中执行远程SSH命令
  • Git Plugin:若代码存储在Git仓库,需拉取代码则安装(按需选择)

三、编写Pipeline脚本实现前后端构建

以下是包含后端Gradle构建、前端NPM构建的完整Pipeline示例:

pipeline {
    agent any
    environment {
        AWS_SERVER_CRED = 'aws-build-server' // 与添加的凭据名一致
        REMOTE_WORKSPACE = '/home/build/workspace' // AWS服务器提前创建的工作目录
        CODE_REPO = 'git@github.com:your-org/your-project.git' // 代码仓库地址(按需修改)
    }
    stages {
        stage('拉取代码到AWS服务器') {
            steps {
                script {
                    sshPublisher(publishers: [sshPublisherDesc(
                        configName: AWS_SERVER_CRED,
                        transfers: [sshTransfer(
                            execCommand: """
                                cd ${REMOTE_WORKSPACE}
                                git pull ${CODE_REPO} main || git clone ${CODE_REPO} .
                            """
                        )]
                    )])
                }
            }
        }
        stage('后端Gradle构建') {
            steps {
                script {
                    sshPublisher(publishers: [sshPublisherDesc(
                        configName: AWS_SERVER_CRED,
                        transfers: [sshTransfer(
                            execCommand: """
                                cd ${REMOTE_WORKSPACE}/backend
                                gradle clean build -x test // 若gradle未配置环境变量则用绝对路径
                            """
                        )]
                    )])
                }
            }
        }
        stage('前端NPM构建') {
            steps {
                script {
                    sshPublisher(publishers: [sshPublisherDesc(
                        configName: AWS_SERVER_CRED,
                        transfers: [sshTransfer(
                            execCommand: """
                                cd ${REMOTE_WORKSPACE}/frontend
                                npm install
                                npm run build // 若npm未配置环境变量则用绝对路径
                            """
                        )]
                    )])
                }
            }
        }
        stage('回传构建产物到本地Jenkins') {
            steps {
                script {
                    sshPublisher(publishers: [sshPublisherDesc(
                        configName: AWS_SERVER_CRED,
                        transfers: [sshTransfer(
                            sourceFiles: "${REMOTE_WORKSPACE}/backend/build/libs/*.jar, ${REMOTE_WORKSPACE}/frontend/dist/**",
                            localDirectory: "${WORKSPACE}/build-artifacts"
                        )]
                    )])
                }
            }
        }
    }
    post {
        always {
            echo '构建流程结束,可查看日志排查问题'
        }
    }
}

四、关键注意事项

  • 确保AWS服务器防火墙/安全组开放22端口,允许本地Jenkins服务器IP访问
  • 验证AWS服务器上gradle -v和npm -v可正常执行,若命令不可用则检查环境变量或使用绝对路径
  • 若代码不在Git仓库,可通过Jenkins的sshPublisher将本地代码上传到AWS工作目录,替换「拉取代码」阶段的命令即可

内容的提问来源于stack exchange,提问作者Prashant Malshette

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 02:40:11