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

如何通过Jenkins构建在AWS上运行MongoDB脚本

在Jenkins中配置AWS EC2上MongoDB脚本的构建前后执行流程

一、确保Jenkins能访问目标AWS EC2实例

  • 生成SSH密钥对:在Jenkins服务器上执行ssh-keygen -t rsa,一路回车生成密钥(默认路径~/.ssh/id_rsa和~/.ssh/id_rsa.pub)
  • 把公钥传到EC2实例:将id_rsa.pub的内容追加到EC2实例的~/.ssh/authorized_keys文件中,确保权限正确(执行chmod 600 ~/.ssh/authorized_keys和chmod 700 ~/.ssh)
  • 测试连接:在Jenkins服务器上执行ssh ec2-user@<EC2实例公网IP>,确认能免密登录

二、安装Jenkins必备插件

进入Jenkins的「Manage Jenkins」->「Plugins」->「Available plugins」,搜索并安装:

  • SSH plugin:用于远程连接EC2执行脚本
  • AWS Credentials plugin(可选):如果需要用IAM凭证替代SSH密钥,可安装此插件管理AWS权限

三、配置Jenkins远程SSH服务器

  1. 进入「Manage Jenkins」->「Configure System」
  2. 找到「SSH remote hosts」区域,点击「Add」
  3. 填写信息:
    • Name:自定义名称(比如EC2-Mongo-Server)
    • Hostname:EC2实例的公网/内网IP
    • Username:EC2实例的登录用户名(比如ec2-user或ubuntu)
    • Credentials:点击「Add」,选择「SSH Username with private key」,输入用户名,粘贴Jenkins服务器上的私钥(id_rsa的内容)
  4. 点击「Test Connection」,确认连接成功

四、在Freestyle项目中配置构建前后步骤

构建前(备份MongoDB片段)

  1. 打开你的Jenkins任务,进入「Configure」
  2. 找到「Build Steps」上方的「Add build step」,选择「Execute shell script on remote host using ssh」
  3. 在弹出的选项中:
    • 选择刚才配置的SSH服务器名称
    • 在「Command」中填写执行备份脚本的命令,比如:/home/ec2-user/mongo-backup.sh
    • 提前在EC2上给脚本加可执行权限:chmod +x /home/ec2-user/mongo-backup.sh

构建后(恢复MongoDB片段)

  1. 在任务配置页,找到「Post-build Actions」,点击「Add post-build action」,选择「Execute shell script on remote host using ssh」
  2. 选择同一个SSH服务器,在「Command」中填写恢复脚本的命令:/home/ec2-user/mongo-restore.sh
  3. (可选)如果需要不管构建成功/失败都执行恢复,勾选「Run regardless of build result」

五、Pipeline项目的配置方式(更灵活)

如果用Pipeline任务,可直接编写Jenkinsfile,示例如下:

pipeline {
    agent any
    stages {
        stage('Pre-build: 备份MongoDB片段') {
            steps {
                sshPublisher(publishers: [sshPublisherDesc(
                    configName: 'EC2-Mongo-Server', // 对应你配置的SSH服务器名称
                    transfers: [sshTransfer(
                        execCommand: '/home/ec2-user/mongo-backup.sh'
                    )]
                )])
            }
        }
        stage('主构建流程') {
            steps {
                // 这里替换成你的实际构建步骤,比如代码编译、部署等
                echo '执行主构建任务...'
            }
        }
    }
    post {
        always { // 无论构建成功/失败都执行恢复
            sshPublisher(publishers: [sshPublisherDesc(
                configName: 'EC2-Mongo-Server',
                transfers: [sshTransfer(
                    execCommand: '/home/ec2-user/mongo-restore.sh'
                )]
            )])
        }
    }
}

注意事项

  • 确保EC2实例的安全组允许Jenkins服务器的IP访问SSH端口(默认22)
  • MongoDB的运行用户需要有备份、恢复权限,可提前给对应MongoDB用户分配backup和restore角色
  • 脚本路径要和EC2上的实际路径一致,避免路径错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 09:45:34