CircleCIでGit LFS管理下のファイルを使おうとする場合、CIの環境でもGit LFSが利用可能でなければいけません。
CircleCI提供のイメージでGit LFSをインストールする方法は「CircleCIでgit-lfsをインストールしてからテストする」で紹介されています。
しかし、独自のDockerイメージとして、軽量なAlpine Linuxベースのものを採用する場合があります(例えばpaperist/alpine-texlive-ja)。
Alpineは最小構成のLinuxであり、例えばcurl
が存在しないため、上記記事の方法をそのまま使うことはできません。
そのため、Alpine用の設定方法を調べました。
環境
- CircleCI 2.0
-
Alpine Linux
3.8.2
設定
テストなどを実行する前にGit LFSをインストールし、LFS管理下のファイルを取得します。
公開リポジトリ用
steps:
- checkout
- run:
name: Install Git LFS
command: |
apk add git git-lfs
git lfs pull
非公開リポジトリ用
steps:
- checkout
- run:
name: Install Git LFS
command: |
apk add openssh git git-lfs
mkdir ~/.ssh
ssh-keyscan github.com >> ~/.ssh/known_hosts
git lfs pull
解説
apk add (openssh) git git-lfs
Alpineではapk add
でGit LFSをインストールすることができます。素の状態のAlpineにはGitもないので、一緒に入れています。
リポジトリが非公開の場合は、OpenSSHも必要です。
mkdir ~/.ssh
/ ssh-keyscan github.com >> ~/.ssh/known_hosts
非公開リポジトリに対してSSHを使ってpullを行います。しかし、CIの場合大抵は初めての接続なので、以下の警告が出てCIが止まってしまいます。
The authenticity of host 'github.com (192.30.253.112)' can't be established.
RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
Are you sure you want to continue connecting (yes/no)?
回避方法は様々ありますが、本記事では「初回SSH接続時の対話的Fingerprint確認フローをssh-keyscanでスキップする」を参考にssh-keyscan
で警告を回避しています。ただ、そもそも~/.ssh
がないとエラーでCIが落ちてしまうので、作成しておきましょう。
git lfs pull
Git LFSで管理しているファイルの実体を入手します。