Capistrano에서 Git LFS를 사용하고 싶었습니다.

코미케의 서클 공간을 검색하는 웹 앱 을 제작하고 있어, 마무리에 Capistrano로 배포! 라고 생각하면, 타이틀대로 벽에 부딪쳤습니다.

이미지 리소스를 Git LFS에 던지고 원격으로 설치되지 않았기 때문입니다.

문제점


  • $ bundle exec cap production deploy 한다
  • 베어 리포지토리가 복제됩니다
  • (원격으로 Git LFS가 설치되어 있지 않기 때문에) 후크가 실행되지 않습니다
  • Git LFS에 던져진 모든 이미지가 표시되지 않습니다

  • 시도한 것



    로컬에서 애셋을 미리 컴파일하고 던지려고하면 rsync가 Too many levels of symbolic links를 토하고 무사히 사망했습니다 (왜)

    Git LFS를 넣지 않고 본래 그대로 해보고 싶었습니다만, 「capistrano git lfs」로 google 선생님에게 물어도 우선 검색 결과가 2000건 정도로 그럴듯한 자료도 발견되지 못합니다. "지정되지 않은 : capistrano"만의 검색 결과에 포기하려고했습니다.

    해결책



    capistrano-withrsync 을 사용합시다.
    capistrano-withrsync 를 Gemfile에 추가하고 Capfile 로 require 했는데, 제대로 파일을 가져왔습니다.

    이 Gem은 원래 Capistrano에서 rsync를 사용하여 git 저장소를 보내는 것이지만 로컬 복제 시점에서 가져온 Git LFS 객체를 흐름으로 원격으로 복사합니다.

    리소스가 많이 있는 경우는 이렇게 전달하는 형태가 좋을까…



    Git LFS를 설치하는 컴퓨터에 배포하는 명령을 두드리면 평소와 같이 쉽게 배포 할 수 있습니다.

    센덴



    Circlesearch 에서는, 각종 동인 이벤트의 참가 서클을 Twitter로부터 일람하고 있습니다. 참전 예정의 이벤트가 있으면 꼭 사용해 보세요.

    좋은 웹페이지 즐겨찾기