jenkins checkout仓库单个文件或者目录

进入流水线语法

流水线语法界面

仓库设置

仓库设置

新增选项

在这里插入图片描述

Sparse Checkout paths

是只clone指定的目录或者某个具体文件
在这里插入图片描述

检出到子目录

是将目标仓库clone到指定目录(无需创建目录)

具体语法

// 将目标仓库内的test.sh文件clone到temp文件夹下,多个文件就多个[path: '1.txt'],之间使用逗号分开
checkout([$class: 'GitSCM', branches: [[name: '*/main']], extensions: [[$class: 'SparseCheckoutPaths', sparseCheckoutPaths: [[path: 'test.sh']]], [$class: 'RelativeTargetDirectory', relativeTargetDir: 'temp']], userRemoteConfigs: [[credentialsId: '5561c197-********d161cbf7', url: 'http://xx.xx.xx.xx/jenkins/scripts.git']]])
//多个指定文件示例
checkout([$class: 'GitSCM', branches: [[name: '*/main']], extensions: [[$class: 'SparseCheckoutPaths', sparseCheckoutPaths: [[path: 'test.sh'], [path: '1.txt']]], [$class: 'RelativeTargetDirectory', relativeTargetDir: 'temp']], userRemoteConfigs: [[credentialsId: '5561c197-********d161cbf7', url: 'http://xx.xx.xx.xx/jenkins/scripts.git']]])

会在workspace目录下的temp文件夹下存在一个test.sh的文件
仓库内容

验证

验证1
temp文件夹下只有一个test.sh文件并没有将test-file.txt克隆下来
验证2

### 配置 Jenkins 构建和部署单包系统 #### 单包系统的定义与需求分析 单包系统通常指将应用程序及其依赖打包成单一可执行文件或安装包的形式。为了实现这一目标,在 Jenkins 中配置构建和部署流程时,需考虑以下几个方面: - **源码管理**:确保可以从版本控制系统获取最新代码。 - **环境准备**:创建适合项目技术栈的运行环境。 - **构建过程**:通过脚本自动化编译、测试以及打包操作。 - **发布机制**:设计合理的分发策略以便于后续上线。 #### 创建 Jenkins Pipeline 脚本 对于大多数现代 Java 或 Kotlin 项目而言,可以利用 Gradle 或 Maven 这样的构建工具来进行打包工作;而对于 C/C++ 类型的应用,则可能更倾向于使用 Makefile 或 CMake 等工具[^1]。下面是一个简单的 Jenkins pipeline 示例用于说明如何针对不同类型的项目实施上述四个阶段的任务: ```groovy pipeline { agent any stages { stage('Checkout') { steps { git 'https://github.com/your-repo.git' } } stage('Prepare Environment'){ when{ expression{ return env.BRANCH_NAME ==~ /(feature|hotfix)/.*} } steps { sh ''' sudo apt-get update && \ sudo apt-get install -y openjdk-8-jdk maven python3-pip ''' } } stage('Build & Test') { parallel { stage('Java Project with Maven') { when{ expression{ return fileExists('pom.xml')} } steps { sh 'mvn clean package' } } stage('C++ Project with CMake') { when{ expression{ return fileExists('CMakeLists.txt')} } steps { dir ('build') { sh ''' cmake .. make all test ''' } } } } } stage('Package Single Artifact') { steps { script { if (fileExists('target/*.jar')) { stash includes: 'target/*.jar', name: 'java-app' } else if(fileExists('*.deb')){ stash includes: '*.deb', name:'cpp-deb-package' } } } } stage('Deploy') { environment { DEPLOY_USER='deployer' SERVER_IP='192.168.1.100' } steps { unstash 'java-app' // or cpp-deb-package based on previous stashing sshPublisher( publishers:[ sshPublisherDesc( configName:"${SERVER_IP}", transfers:[sshTransfer(cleanRemote:true, sourceFiles:'target/*.jar')], usePromotion:false, failOnError:true ) ] ) } } } post { always { junit '**/test-results/**/*.xml' archiveArtifacts artifacts: '**/*.{war,jar}', allowEmptyArchive: true } failure { mail to: "${env.NOTIFY_EMAIL}", subject: "Failed Job ${currentBuild.fullDisplayName}" } } } ``` 此 Groovy 脚本展示了如何在一个典型的 CI 流程中完成从检出仓库到最终部署的过程,并特别关注了单个工件(artifact)的打包方式。值得注意的是,实际应用中的具体细节可能会有所不同,取决于所使用的编程语言和技术框架的选择。 #### 提升效率的方法 如果涉及到复杂的多模块工程或是大型企业级解决方案,还可以探索一些额外的技术手段来进一步优化整个流水线的速度和稳定性,比如引入缓存层加速依赖下载速度、采用分布式计算资源池提高并行度等措施。另外,对于 iOS 应用来说,切换至新的 Xcode 编译系统也可以有效缩短构建耗时[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值