如何通过Jenkinsfile连接服务器拉取代码并执行Docker构建?
Jenkins远程服务器拉取代码并Docker构建模板
以下是实现连接目标服务器、拉取代码到服务器、执行Docker构建的Jenkinsfile参考模板,解决你当前仅在Jenkins本地执行构建的问题:
pipeline { agent any environment { // 替换为你的实际配置 REMOTE_SERVER = "192.168.1.100" // 目标服务器IP/域名 REMOTE_USER = "ubuntu" // 服务器登录用户名 PROJECT_PATH = "/opt/my-project"// 项目在服务器上的存放路径 GIT_REPO_URL = "git@gitlab.com:your-group/your-project.git" // Git仓库地址 GIT_BRANCH = "jks" // 要拉取的分支 } stages { stage('初始化远程项目目录') { steps { sshagent(['ssh-remote-server-cred']) { // 替换为你的SSH凭证ID sh """ ssh ${REMOTE_USER}@${REMOTE_SERVER} "mkdir -p ${PROJECT_PATH}" """ } } } stage('远程拉取代码') { steps { sshagent(['ssh-remote-server-cred']) { // 首次克隆/后续更新代码的逻辑 sh """ ssh ${REMOTE_USER}@${REMOTE_SERVER} " cd ${PROJECT_PATH} if [ -d .git ]; then git pull origin ${GIT_BRANCH} else git clone -b ${GIT_BRANCH} ${GIT_REPO_URL} . fi " """ } } } stage('远程执行Docker构建') { steps { sshagent(['ssh-remote-server-cred']) { sh """ ssh ${REMOTE_USER}@${REMOTE_SERVER} " cd ${PROJECT_PATH} docker compose up -d --build " """ } } } } post { failure { echo '构建流程失败,请检查日志排查问题' } success { echo '远程服务器代码拉取及Docker构建已完成' } } }
关键说明
- SSH凭证配置:需要在Jenkins的「凭证管理」中添加目标服务器的SSH私钥凭证,将模板中的
ssh-remote-server-cred替换为你的凭证ID。 - 环境变量统一管理:把服务器地址、项目路径等配置放在
environment块,方便后续修改维护。 - 代码拉取逻辑:通过判断
.git目录是否存在,自动选择clone(首次)或pull(更新)操作,避免重复克隆。 - 远程命令执行:所有拉取代码、Docker构建的操作都通过SSH在目标服务器上执行,确保流程完全在目标环境中完成。
前置准备
- Jenkins安装
SSH Agent插件(用于加载SSH凭证)。 - 目标服务器已安装Git、Docker、Docker Compose。
- 确保Jenkins服务器能通过SSH无密码登录目标服务器(通过凭证中的私钥实现)。
内容的提问来源于stack exchange,提问作者Lionel
相关产品推荐
相关产品推荐

