LoginSignup
0
1

More than 5 years have passed since last update.

CircleCIでAlpine LinuxベースのDockerイメージを使う時にGit LFSに対応する

Posted at

CircleCIでGit LFS管理下のファイルを使おうとする場合、CIの環境でもGit LFSが利用可能でなければいけません。
CircleCI提供のイメージでGit LFSをインストールする方法は「CircleCIでgit-lfsをインストールしてからテストする」で紹介されています。

しかし、独自のDockerイメージとして、軽量なAlpine Linuxベースのものを採用する場合があります(例えばpaperist/alpine-texlive-ja)。
Alpineは最小構成のLinuxであり、例えばcurlが存在しないため、上記記事の方法をそのまま使うことはできません。
そのため、Alpine用の設定方法を調べました。

環境

設定

テストなどを実行する前にGit LFSをインストールし、LFS管理下のファイルを取得します。

公開リポジトリ用

.circleci/config.yml
    steps:
      - checkout
      - run:
          name: Install Git LFS
          command: |
            apk add git git-lfs
            git lfs pull

非公開リポジトリ用

.circleci/config.yml
    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で管理しているファイルの実体を入手します。

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