如何将本地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
相关产品推荐
相关产品推荐

