我们在使用 Jenkins
构建的时候,有时候需要提供一个构建好的文件包的下载地址给协作者下载使用。而不是每次都点击进去 workspace
的指定位置下载。
那么,配合 Jenkinsfile
,我们需要怎么做呢?
我们的 Demo
环境:
- MacBook Air (M1, 2020)
- dist: 一份构建好的
dist
包(这个可以随便什么都行) - Jenkins: 会频繁使用到其构建项目中的
Replay
功能进行调试 - 测试服务: 一个测试服务进行
SCP
的文件传输
自定义描述信息
我们可以通过使用 currentBuild.description
进行自定义描述。比如下面的简单使用:
# jenkinsfile
stage("Custom Description") {
agent any;
steps {
script {
currentBuild.description = "My custom build description"
}
}
}
构建成功后,我们可以看到构建的描述信息展示:
文件下载
既然,我们可以自定了文件的描述信息,那么我们可以参考 前端文件下载(一) 文章,通过 a
标签进行文件的下载。
- 生成压缩文件
我们将 dist
文件进行压缩。
# jenkinsfile
stage("Zip Dist File") {
agent any;
steps {
script {
# 压缩
sh 'tar -czf worksapce.tar.gz dist/*'
# 将 tar 文件缓存起来
stash includes: 'workspace.tar.gz', name: 'workspace'
}
}
}
tar -czf worksapce.tar.gz dist/*
用于创建一个名称为 worksapce.tar.gz
的归档文件,其中包含了 dist
目录下的所有文件和子目录。
c
表示创建新的归档文件z
表示使gzip
进行压缩f
表示指定文件名- 指定下载的地址
上面我们生成了压缩的文件,但是该压缩文件是在文件系统中的工作空间的绝对路径上(即 env.WORKSPACE
),比如 /var/jenkins_home/workspace/demo_project/worksapce.tar.gz
。如果我们直接引用该地址,肯定是行不通的。
那么,我们需要怎么获取到压缩包的地址呢?
下面有有两种方案的思考