Jenkins基础教程(170)Jenkins复制构建产物:Jenkins构建产物复制攻略:让部署像外卖一样准时送达

每次手动部署到深夜,你是否也曾仰望星空思考:为啥不让Jenkins这个贴心小助手把活儿全干了?

第一章:Jenkins与构建产物——一场不得不说的“姻缘”

什么是构建产物?

简单来说,构建产物就是构建过程产生的重要结果。比如Java项目打包后的JAR/WAR文件、前端项目构建后的dist目录、Android项目生成的APK文件等。这些文件是我们整个CI/CD流程的最终交付物,需要被妥善保存并传输到合适的位置。

为什么需要复制构建产物?

复制构建产物在自动化流程中至关重要,因为它:

  • 实现阶段间传递:构建阶段生成的产物,需要传递给测试、部署阶段使用
  • 支持多环境部署:同一份构建产物可能需要部署到测试、预发布、生产等多个环境
  • 便于归档管理:按照版本号、构建时间等动态目录保存构建结果,方便追溯
  • 提高部署效率:自动化复制比手动上传更快速、更可靠

第二章:Jenkins复制构建产物的四大法门

Jenkins提供了多种方式来处理构建产物,每种方法都有其适用场景。且让我为你一一道来。

方法一:Copy Artifacts插件——最受欢迎的“快递小哥”

Copy Artifacts插件是Jenkins中最常用的构建产物复制工具,它就像一个可靠的快递小哥,可以在不同任务之间准确无误地传递文件。

安装与配置

使用管理员登录Jenkins,依次点击“系统管理”-“插件管理”-“可选插件”,在搜索框中输入“Copy Artifact”即可安装。

基本使用方式

在源项目中,你需要配置“归档成品”的构建后操作:

  1. 在A节点新增“构建后操作”,选择“归档成品(Archive the artifacts)”
  2. 在“Files to archives”中填写归档文件的名称

在目标项目中,配置复制操作:

  1. 在B节点任务中增加构建步骤,选择“Copy artifacts from another project”
  2. 填写需要复制的文件,以及保存的路径

具体配置字段包括:

  • 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插件是专业级别的选择。它提供了更稳定的连接和更丰富的功能。

配置步骤
  1. 在Jenkins系统配置中设置远程服务器的SSH连接信息
  2. 在任务配置中选择“Send files or execute commands over SSH”
  3. 配置源文件和远程目录
管道脚本示例
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

值引力

持续创作,多谢支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值