0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[03] docker-composeを活用して即座にGitLabを立てて使ってみる ... Git LFS を使う

Last updated at Posted at 2021-07-23

はじめに

GitLab を試したくてローカルPC 上に立てることにしたときの記録である.
また、別PC でも素早く環境構築ができるように docker-compose を使うことにした.
なお、試行錯誤の中での記録なので誤りもあると思う.

前回は リポジトリを作成して、git clone 〜 push までを実施した.
今回は Git LFS を使ってみる. 1

参考サイトおよび書籍

URL
https://www.nemotos.net/?p=3425
https://docs.gitlab.com/ee/topics/git/lfs/
https://qiita.com/takish/items/4b397caa5549a39a8194
https://askubuntu.com/questions/1032565/how-to-upgrade-git-lfs-on-ubuntu-16-lts
https://cimadai.hateblo.jp/entry/gitlab_gitlfs
https://stackoverflow.com/questions/60349972/git-lfs-give-x509-certificate-signed-by-unknown-authority
https://github.com/git-lfs/git-lfs/issues/1047
GitLab実践ガイド (impress top gear) 北山 晋吾

環境

DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.4 LTS"

手順

Git LFS は次の条件で使われるようである.
・「リポジトリ単位」&&「指定したファイル名パターン」&&「100MB 以上のデータ

今回は、**拡張子「zip」、サイズ「123MB」**のデータで検証する.

1. git-lfs をインストールする

バージョン 2.3.4 がインストールされた

$ sudo apt install git-lfs
$ git lfs version
git-lfs/2.3.4 (GitHub; linux amd64; go 1.8.3)

個人的な理由2により 2.13.3 へと upgrade する

$ curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
$ sudo apt install git-lfs
$ git lfs version
git-lfs/2.13.3 (GitHub; linux amd64; go 1.16.2)

2. リポジトリ「mysoft」を clone する

mysoft前回 作成したリポジトリ (Project) である.

$ git clone ssh://git@server_01/02_software/mysoft
$ cd mysoft

3. リポジトリ「mysoft」で Git LFS が使えるようにする

リポジトリ単位である

$ git lfs install

4. 拡張子「zip」が LFS 対象となるように「.gitattributes」をリポジトリに設定する

#! *.zip を LFS 対象として登録する
$ git lfs track "*.zip"
Tracking "*.zip"
 
#! 登録できたか確認する
$ git lfs track
Listing tracked patterns
    *.zip (.gitattributes)

#! *.zip が LFS 対象になったことは、ファイル「.gitattributes」に書き出されている
$ cat .gitattributes 
*.zip filter=lfs diff=lfs merge=lfs -text

#! ファイル「`./.gitattributes`」をリポジトリに push する.
$ git add .gitattributes
$ git commit -m '.gitattributes を追加'
$ git push origin master

5. 投稿前の "おまじない" をする

次の 2つを実施する3

5-1.

ここでは「https://server_01:59443/02_software/ok.git/info/lfs」の前後を、
それぞれ「lfs.」「.locksverify」で囲んでいる.

$ git config lfs.https://server_01:59443/02_software/ok.git/info/lfs.locksverify false

5-2.

$ git config http.sslverify false

恒久対応したければ次をする

$ git config --global http.sslVerify false

補足1.

上記 2コマンドを実行したことで、 ./.git/config に対して次の 4行が追加されている.

[lfs "https://server_01:59443/02_software/ok.git/info/lfs"]
	locksverify = false
[http]
	sslverify = false

補足2. エラー「x509: certificate is not valid for any names, but wanted to match lfs push」

上記「5-2」を実施することで解消した

補足3. 「5-1」のパスはブラウザでアクセスしてみれば良い

上記の場合だと

https://server_01:59443/02_software/ok.git/info/lfs」+「/objects/batch」より、

https://server_01:59443/02_software/ok.git/info/lfs/objects/batch
にアクセスして、次のような表示がされていれば良い.

image.png

6. LFS の検証のために 100MB 超の zip データを作り、push する.

下記🛑より、123MB が push されている.

#! とりあえず 123MB の拡張子 zip データを作る
$ dd if=/dev/zero of=123MB.zip bs=1M count=123

#! git add 〜 commit をする
$ git add 123MB.zip 
#! このとき「git lfs ls-files」というコマンドで確認できる.
$ git lfs ls-files
8cb7b1825a * 123MB.zip
$ git commit -m '123MB.zip を追加する'

#! push をする.
#! このとき GitLab への認証が求められる (本記事では「root」「rootroot」を入力する)
$ git push origin master
Locking support detected on remote "origin". Consider enabling it with:
  $ git config lfs.https://server_01/02_software/ok.git/info/lfs.locksverify true
Uploading LFS objects: 100% (1/1), 129 MB | 62 MB/s, done. 🛑                                                                                                                        
Counting objects: 3, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 391 bytes | 391.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To ssh://server_01/02_software/ok
   8639b5a..c90c782  master -> master

本 docker-compose.yml の場合、LFS 用のデータ置き場は GitLab コンテナの中である↓

$ docker-compose exec gitlab bash -c 'ls -ltr /var/opt/gitlab/gitlab-rails/shared/lfs-objects/'

7. LFS を使っているリポジトリを clone する場合

$ git lfs clone ssh://git@server_01/02_software/mysoft

 

以上.

  1. git-media から Git LFS への置き換え案件があるかも知れないため

  2. 職場での要望で git-lfs のバージョンアップ方法を手順書に記してと言われたため

  3. "おまじない" という単語は本意では無いが、そう言いたくなるほどハマった.

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?