每次手动部署到深夜,你是否也曾仰望星空思考:为啥不让Jenkins这个贴心小助手把活儿全干了?
第一章:Jenkins与构建产物——一场不得不说的“姻缘”
什么是构建产物?
简单来说,构建产物就是构建过程产生的重要结果。比如Java项目打包后的JAR/WAR文件、前端项目构建后的dist目录、Android项目生成的APK文件等。这些文件是我们整个CI/CD流程的最终交付物,需要被妥善保存并传输到合适的位置。
为什么需要复制构建产物?
复制构建产物在自动化流程中至关重要,因为它:
- 实现阶段间传递:构建阶段生成的产物,需要传递给测试、部署阶段使用
- 支持多环境部署:同一份构建产物可能需要部署到测试、预发布、生产等多个环境
- 便于归档管理:按照版本号、构建时间等动态目录保存构建结果,方便追溯
- 提高部署效率:自动化复制比手动上传更快速、更可靠
第二章:Jenkins复制构建产物的四大法门
Jenkins提供了多种方式来处理构建产物,每种方法都有其适用场景。且让我为你一一道来。
方法一:Copy Artifacts插件——最受欢迎的“快递小哥”
Copy Artifacts插件是Jenkins中最常用的构建产物复制工具,它就像一个可靠的快递小哥,可以在不同任务之间准确无误地传递文件。
安装与配置
使用管理员登录Jenkins,依次点击“系统管理”-“插件管理”-“可选插件”,在搜索框中输入“Copy Artifact”即可安装。
基本使用方式
在源项目中,你需要配置“归档成品”的构建后操作:
- 在A节点新增“构建后操作”,选择“归档成品(Archive the artifacts)”
- 在“Files to archives”中填写归档文件的名称
在目标项目中,配置复制操作:
- 在B节点任务中增加构建步骤,选择“Copy artifacts from another project”
- 填写需要复制的文件,以及保存的路径
具体配置字段包括:
- Project name:指定父级任务的名称
- Which build:指定需要基于父级任务的哪一次构建
- Artifacts to copy:指定需要拷贝的文件名称
- Target directory:指定归档文件存放的目录
管道脚本示例
pipeline {
agent any
stages {
stage('Copy Artifacts') {
steps {
script {
// 假设前一个作业名为'build-job',我们想要复制其最新构建的产物
copyArtifacts(
projectName: 'build-job',
filter: 'target/*.jar',
fingerprintArtifacts: true,
target: 'deploy-artifacts/'
)
}
}
}
}
}
方法二:SCP命令——简单直接的“文件搬运工”
对于需要将文件复制到远程服务器的场景,SCP命令是最直接简单的选择。
基本SCP命令使用
stage('Deploy to Server') {
steps {
sh '''
scp -r deploy-artifacts/* username@remote-server:/path/to/deployment
'''
}
}
动态目录技巧
如果你希望根据构建版本创建动态目录,可以这样做:
stage('Dynamic Directory') {
steps {
script {
// 创建版本目录
sh "mkdir -p ${BUILD_NUMBER}"
// 移动构建产物到版本目录
sh "mv target/*.jar ${BUILD_NUMBER}/"
// 压缩整个目录
sh "tar -czf ${BUILD_NUMBER}.tar.gz ${BUILD_NUMBER}/"
// 传输到远程服务器
sh "scp ${BUILD_NUMBER}.tar.gz user@remote-server:/builds/"
# 在远程服务器解压
sh "ssh user@remote-server 'cd /builds && tar -xzf ${BUILD_NUMBER}.tar.gz'"
}
}
}
这种方法特别适合需要按版本管理构建产物的场景。
方法三:Publish Over SSH插件——专业可靠的“传输专员”
当你需要更强大的SSH支持时,Publish Over SSH插件是专业级别的选择。它提供了更稳定的连接和更丰富的功能。
配置步骤
- 在Jenkins系统配置中设置远程服务器的SSH连接信息
- 在任务配置中选择“Send files or execute commands over SSH”
- 配置源文件和远程目录

最低0.47元/天 解锁文章
811

被折叠的 条评论
为什么被折叠?



