GitLab Git LFS管理
关于如何使用Git LFS的文档在下面使用Git LFS文档管理大型二进制文件。
需求
- 从8.2版本开始,GitLab支持Git LFS。
- 在10.0中引入了对对象存储(如AWS S3)的支持。
- 用户需要安装Git LFS客户端1.0.1及更高版本。
配置
Git LFS对象的大小可以很大。默认情况下,它们存储在安装了GitLab的服务器上。
有各种配置选项可以帮助GitLab服务器管理员:
- 启用/禁用Git LFS支持
- 修改LFS对象存储的位置
- 设置兼容AWS S3的对象存储
Omnibus安装的配置
在/etc/gitlab/gitlab.rb
:
#更改为true以启用lfsgitlab_rails[“lfs_enabled”]=假#可选,更改存储路径位置。默认为# " # {gitlab_rails [' shared_path ']} / lfs-objects’。其计算结果为# ' /var/opt/gitlab/gitlab-rails/shared/lfs-objects 'gitlab_rails[“lfs_storage_path”]=“/ mnt /存储/ lfs-objects”
从源代码安装的配置
在配置/ gitlab.yml
:
#更改为true以启用lfslfs:启用:假storage_path:/ mnt /存储/ lfs-objects
将LFS对象存储在兼容s3的对象存储中
可以将LFS对象存储在远程对象存储上,这允许您将存储卸载到外部AWS S3兼容服务,从而释放本地磁盘空间。您还可以托管与GitLab分离的自己的S3兼容存储,使用诸如Minio。
对象存储当前首先将文件传输到GitLab,然后在第二阶段传输到对象存储。这可以通过使用rake任务来传输现有对象,也可以在接收到每个文件后在后台作业中完成。
支持以下常规设置。
设置 | 描述 | 默认的 |
---|---|---|
启用 |
启用/禁用对象存储 | 假 |
remote_directory |
存储LFS对象的桶名 | |
direct_upload |
设置为true将启用直接上传LFS,而不需要本地共享存储。一旦我们决定只支持所有文件的单一存储,该选项可能会被删除。 | 假 |
background_upload |
设置为false表示禁用自动上传。一旦直接上载到S3,该选项可能会被删除 | 真正的 |
proxy_download |
设置为true将启用代理所有文件。选项允许减少出口流量,因为这允许客户端直接从远程存储下载,而不是代理所有数据 | 假 |
连接 |
下面描述的各种连接选项 |
的连接
提供的设置匹配雾。
设置 | 描述 | 默认的 |
---|---|---|
提供者 |
总是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 |
假 |
S3用于Omnibus安装
在Omnibus安装中,设置的前缀是lfs_object_store_
:
编辑
/etc/gitlab/gitlab.rb
然后用你想要的值替换下面的行:gitlab_rails[“lfs_object_store_enabled”]=真正的gitlab_rails[“lfs_object_store_remote_directory”]=“lfs-objects”gitlab_rails[“lfs_object_store_connection”]={“供应商”=>AWS的,“地区”=>“eu-central-1”,“aws_access_key_id”=>“1 abcd2efghi34jklm567n”,“aws_secret_access_key”=>“abcdefhijklmnopQRSTUVwxyz0123456789ABCDE”,下面的选项配置S3兼容主机而不是AWS“主机”=>“localhost”,“端点”=>“http://127.0.0.1:9000”,“path_style”=>真正的}
保存文件并重新配置GitLabS使更改生效。
将任何现有的本地LFS对象迁移到对象存储:
gitlab-rake gitlab: lfs:迁移
这将把现有的LFS对象迁移到对象存储。新的LFS对象将被转发到对象存储,除非
gitlab_rails(“lfs_object_store_background_upload”)
设置为false。
S3用于从源代码安装
对于源安装,设置嵌套在lfs:
然后object_store:
:
编辑
/home/git/gitlab/config/gitlab.yml
并增加或修改以下几行:lfs:启用:真正的object_store:启用:假remote_directory:lfs-objects#桶名连接:提供者:AWSaws_access_key_id:1 abcd2efghi34jklm567naws_secret_access_key:abcdefhijklmnopQRSTUVwxyz0123456789ABCDE地区:eu-central-1使用以下选项配置AWS兼容主机(如Minio)宿主:'本地主机的端点:'http://127.0.0.1:9000的path_style:真正的
保存文件并重启GitLab使更改生效。
将任何现有的本地LFS对象迁移到对象存储:
sudo- ugit- h包执行rake gitlab: lfs:迁移RAILS_ENV=生产
这将把现有的LFS对象迁移到对象存储。新的LFS对象将被转发到对象存储,除非
background_upload
设置为false。
存储数据
您可以在管理区域中查看组和项目上LFS对象使用的总存储空间,也可以通过组和项目的api。
已知的限制
- 8.14以后增加了对删除未引用的LFS对象的支持。
- 通过SSH的LFS认证是在GitLab 8.12中添加的
- 仅兼容GitLFS客户端版本1.1.0及以上,或1.0.2。
- 存储统计信息当前对每个链接到LFS对象的项目进行多次计数