少于 1 分钟阅读

当 Jenkins 无法直接访问 GitLab 仓库时,也可以通过 Jenkins Web 端直接上传文件或者压缩包的方式进行构建和发布。

解决方案

打开工程配置

在参数化构建过程中添加文件参数(File Parameter)

参数 备注
文件路径 指定上传文件的路径,相对于工作空间。(例如:./source.zip)
描述 后续展示给用户看的描述信息。

从浏览器表单提交中接受一个文件,作为构建参数。上传后的文件将会放在工作空间中指定的位置,你 可以在构建任务中访问并使用它。这对于很多场景下是有帮助的,例如:

  1. 让用户基于他们构建出来的成品运行测试。
  2. 允许用户在自动化上传、发布、部署过程中替换文件。
  3. 通过上传一个数据集来处理数据。

表单提交中的文件名称就是文件的路径,并且是在环境变量中可见的。例如:你把文件路径设置为 abc.zip,然后${abc.zip}会从浏览器传递给你原始的文件名称。 (例如my.zip。)这里的名称不会包含目录部分。

文件的上传是可选的。如果用户不上传任何文件,Jenkins只是简单地跳过这个参数并不会替换 任何文件(但是也不会删除任何已经存在的文件)。

在命令行模式下参数-p对于构建命令build会选择一个本地文件 (-remoting),或者从标准输出中读取。(在字符模式下,只允许定义一个文件参数)

在构建中直接通过执行 Shell 操作上传的文件

上传后的文件将会放在工作空间中指定的位置,通过执行 Shell 即可操作上传的文件,例如 unzip -o ./source.zip

其他细节

命令 描述
rm -rf mydirectory 删除目录
rm -rf mydirectory/* 删除目录下文件及目录
rm -rf mydirectory/{*,.[!.]*} 删除目录下所有文件及目录(包括以点.开始的隐藏文件及目录)
rm -rf mydirectory-* 删除所有以 mydirectory- 开始的目录

前端项目以点.开始的隐藏文件及目录较多,包括配置文件等等,所以用 {*,.[!.]*} 匹配这些文件至关重要。

具体参考《如何通过 glob 匹配除当前目录.及父目录..外所有隐藏文件》

how to glob every hidden file except current and parent directory

标签:

分类:

更新时间: