作业工件管理
注:
- 在GitLab 8.2和GitLab Runner 0.7.0中引入。
- 从GitLab 8.4和GitLab Runner 1.0开始,工件存档格式更改为
邮政编码
.- 从GitLab 8.17开始,构建被重命名为作业。
- 这是管理文档。用户指南请参见管道/ job_artifacts.
工件是在作业成功完成后附加到作业的文件和目录列表。在所有GitLab安装中默认启用此功能。如果你想知道如何禁用它,请继续阅读。
禁用作业工件
要在站点范围内禁用工件,请按照以下步骤操作。
在Omnibus装置中:
编辑
/etc/gitlab/gitlab.rb
并添加以下行:gitlab_rails[“artifacts_enabled”]=假
保存文件并从源代码安装:
编辑
/home/git/gitlab/config/gitlab.yml
并增加或修改以下几行:工件:启用:假
作业成功后,GitLab Runner将包含作业工件的归档文件上传到GitLab。
使用本地存储
要更改工件在本地存储的位置,请遵循以下步骤。
在Omnibus装置中:
默认情况下,构件存储在
/var/opt/gitlab/gitlab-rails /共享/工件
.修改存储路径,例如为
/ mnt /存储/工件
、编辑/etc/gitlab/gitlab.rb
并添加以下行:gitlab_rails[“artifacts_path”]=“/ mnt /存储/构件”
保存文件并从源代码安装:
默认情况下,构件存储在
/home/git/gitlab/shared/artifacts
.修改存储路径,例如为
/ mnt /存储/工件
、编辑/home/git/gitlab/config/gitlab.yml
并增加或修改以下几行:工件:启用:真正的路径:/ mnt /存储/工件
注:
- [GitLab Premium][eep] 9.4引入[ee-1762]
- 从9.5版本开始,当对象存储被启用时,工件是[可浏览的]。9.4缺少此功能。可以在GitLab溢价和GitLab.com银.从10.6版开始,在GitLab CE
如果您不想使用安装了GitLab的本地磁盘来存储工件,那么您可以使用像AWS S3这样的对象存储。此配置依赖于已配置的有效AWS凭据。使用一个对象存储选项如AWS S3来存储作业工件。
对象存储设置
对于源安装,以下设置嵌套在
构件:
然后object_store:
.在公共设施上,它们的前缀是artifacts_object_store_
.设置 描述 默认的 启用
启用/禁用对象存储 假
remote_directory
存储Artifacts的桶名 direct_upload
设置为true可以在不需要本地共享存储的情况下直接上传工件。一旦我们决定只支持所有文件的单一存储,该选项可能会被删除。目前只 谷歌
支持提供程序假
background_upload
设置为false表示禁用自动上传。一旦直接上载到S3,该选项可能会被删除 真正的
proxy_download
设置为true将启用代理所有文件。选项允许减少出口流量,因为这允许客户端直接从远程存储下载,而不是代理所有数据 假
连接
下面描述的各种连接选项 S3兼容连接设置
提供的连接设置相匹配雾,分别为:
设置 描述 默认的 提供者
总是 AWS
兼容主机AWS aws_access_key_id
AWS凭证,或兼容 aws_secret_access_key
AWS凭证,或兼容 地区
AWS地区 us-east-1 宿主
S3兼容主机,当不使用AWS时,例如。 本地主机
或storage.example.com
s3.amazonaws.com 端点
可以在配置S3兼容服务时使用,例如Minio,输入URL,例如 http://127.0.0.1:9000
(可选) path_style
设置为true才能使用 主机/ bucket_name /对象
样式路径而不是bucket_name.host /对象
.对于AWS S3设置为false假 在Omnibus装置中:
默认情况下,构件存储在
/var/opt/gitlab/gitlab-rails /共享/工件
.编辑
/etc/gitlab/gitlab.rb
然后用你想要的值替换下面的行:gitlab_rails[“artifacts_enabled”]=真正的gitlab_rails[“artifacts_object_store_enabled”]=真正的gitlab_rails[“artifacts_object_store_remote_directory”]=“构件”gitlab_rails[“artifacts_object_store_connection”]={“供应商”=>AWS的,“地区”=>“eu-central-1”,“aws_access_key_id”=>“AWS_ACCESS_KEY_ID”,“aws_secret_access_key”=>“AWS_SECRET_ACCESS_KEY”}
注意:对于GitLab 9.4+,如果您正在使用AWS IAM配置文件,请确保省略AWS访问密钥和秘密访问密钥/值对。例如:
gitlab_rails[“artifacts_object_store_connection”]={“供应商”=>AWS的,“地区”=>“eu-central-1”,“use_iam_profile”=>真正的}
保存文件并
gitlab-rake gitlab:工件:迁移
目前,这必须手动执行,并且允许您将现有工件迁移到对象存储中,但是所有新工件仍将存储在本地磁盘上。将来,您将获得为所有新文件定义默认存储构件的选项。
从源代码安装:
默认情况下,构件存储在
/home/git/gitlab/shared/artifacts
.编辑
/home/git/gitlab/config/gitlab.yml
并增加或修改以下几行:工件:启用:真正的object_store:启用:真正的remote_directory:"构件”#桶名连接:提供者:AWS#目前只支持AWSaws_access_key_id:AWS_ACESS_KEY_IDaws_secret_access_key:AWS_SECRET_ACCESS_KEY地区:eu-central-1
到期的工件
如果工件使用了过期日期,那么在该日期过后,它们将被标记为删除。工件由
expire_build_artifacts_worker
由Sidekiq每小时50分钟运行的cron作业(50 * * * *
)。要更改工件过期的默认计划,请遵循以下步骤。
在Omnibus装置中:
编辑
/etc/gitlab/gitlab.rb
并注释掉或添加以下行gitlab_rails[“expire_build_artifacts_worker_cron”]=“50 * * * *”
保存文件并从源代码安装:
编辑
/home/git/gitlab/config/gitlab.yml
并增加或修改以下几行:expire_build_artifacts_worker:cron:"50****”
在GitLab 10.3中引入。
禁用依赖性验证,您可以从Rails控制台中翻转特性标志。
在Omnibus装置中:
进入Rails控制台:
sudogitlab-rails控制台
拨动开关并禁用它:
功能.启用(“ci_disable_validates_dependencies”)
从源代码安装:
进入Rails控制台:
cd/home/git/gitlabRAILS_ENV=生产sudo- ugit- h包执行rails控制台
拨动开关并禁用它:
功能.启用(“ci_disable_validates_dependencies”)
设置工件的最大文件大小
如果工件被启用,您可以通过管理区设置.
存储数据
您可以在管理区域中查看组和项目上的作业工件使用的总存储空间,也可以通过组和项目的api.
实现细节
当GitLab接收到工件归档时,归档元数据文件也由GitLab主力.此元数据文件描述位于工件存档本身中的所有条目。元数据文件是二进制格式,带有额外的GZIP压缩。
为了节省空间、内存和磁盘I/O, GitLab不提取工件存档。相反,它检查包含所有相关信息的元数据文件。当有很多工件,或者存档是一个非常大的文件时,这一点尤其重要。
当点击一个特定文件时,GitLab主力从存档中提取它,然后开始下载。这个实现节省了空间、内存和磁盘I/O。