(共556篇)
全部分类

CI/CD中的artifacts--job之间的文件传递与保存下载
[ CICD ] 

artifacts

artifacts 的功能很简单, 就是把 job 中的某些文件保存下来, 并在 gitlab 中提供下载功能, 比如下面的案例可以把 dist 目录与 package.json 文件压缩为 down.zip 文件中保存下来以供下载

artifacts 文件会保存在 gitlab 服务器上

如果在一个 job 中, 既要拉取 cache 中的文件, 又要拉取 artifacts 中的文件, 如果 cache 与 artifacts 中存在相同的文件, 文件内容会以 artifacts 为准, 因为 cache 会在 artifacts 之前拉取

1
2
3
4
5
6
job1:
  artifacts:
    name: "down.zip"
    paths:
      - dist/
      - package.json

name 用来定义可下载文件的名称

paths 用来定义要保存的文件列表, 支持 glob 语法

exclude

exclude 用来排除某些文件, 可以与 paths 配合使用

untracked

untracked 用来告诉 gitlab 是否自动把未跟踪状态的文件添加到 artifacts 中

expires_in

expires_in 用来设置可下载文件的有效期, 比如:

1
2
3
4
5
6
7
8
job1:
  artifacts:
    name: "down.zip"
    paths:
      - dist/
    expires_in: '45' # 不提供单位的情况下, 默认是秒
    expires_in: 45 seconds  # 45秒
    expires_in: 3 min  # 不提供单位的情况下, 默认是秒

when

when 用来设置何时保存这些文件, 与 cache 的用法相同

  1. on_success, 这是默认值, job 执行成功的时候才能更新 cache
  2. on_failure, job 执行失败的时候才能更新 cache
  3. always, 不管 job 执行成功还是失败, 都要更新 cache

在 job 之间使用 artifacts

通过 artifacts 保存的文件, 可以在 job 之间传递

1
2
3
4
5
6
7
8
job1:
  artifacts:
    paths:
      - dist/

job2:
  dependencies:
    - job1 # 注意这里的是job1的任务名称

这个案例中, job2 执行时, 会自动下载 job1 产生的 artifacts 文件