[Hexo]TravisCI로 블로그 자동 배포시 겪은 문제

[Hexo]TravisCI로 블로그 자동 배포시 겪은 문제

WARN No layout 자동 배포를 했더니 빈 파일들만 올라가요!!

한줄 요약 : theme 폴더를 레포지토리에 추가하시면됩니다.

아래의 내용은 해당 원인을 찾아가던 본인의 경험담입니다…


블로그를 직접 만드는데, 시간을 투자하는것 보다 포스팅을 하는게 더 가치 있겠다 싶어

현재 블로그를 Hexo + Github Page를 이용하여 운영하고 있습니다

기존에는 배포를 Hexo-cli를 이용하여 아래와 같은 명령어를 사용하여 배포 했습니다.

1
2
3
$ hexo clean
$ hexo generate
$ hexo deploy

쉘에서 해당 명령어를 작성하는것 또한 귀찮아져서 package.json 파일을 이용하여,

1
2
3
4
5
6
7
8
/*
* package.json
*/
{
"scripts": {
"deploy": "hexo clean && hexo d -g"
}
}

해당 스크립트를 작성해서 npm deploy명령어로 배포를 하고, 소스는 별도의 레포지토리에 관리하고 있었습니다.

팀원에게는 자동 배포를 추천하였으나(https://jheloper.github.io/2019/04/hexo-ci-cd-with-codeship/),
저는 설정하지 않고 있었죠…

그러던 중 Gracefullight님의 추천을 받아,

이전에 보았던 ChangJoo Park님의 포스팅인 Travis CI를 이용한 Github Pages + Hexo 블로그 자동 배포하기를 참고하여
작업하기로 결심했습니다.

  • Github Access Token 발급 받기
  • _config.yml 파일에 deploy.repo 수정하기
  • 배포 스크립트인 .travis.yml 작성하기
  • 깃허브 플러그인을 이용하여 레포지토리와 연결하기
  • Travis CI 서비스에서 해당 프로젝트에 Environment Variables에 __GITHUB_TOKEN__ 이름의 환경변수에 액세스 토큰 추가하기

위의 다섯가지를 모두 마친 뒤,

드디어 소스코드를 관리하는 Github Repository에 푸시를 하였습니다!

빌드도 성공했고, 푸시도 성공적이였습니다.

확인하고자 블로그에 접속을 하였는데, 빈화면이 노출되고 있었습니다.

정적페이지이니까 우선적으로 Github Page Repo의 파일들을 확인했는데,
모든 경로의 index.html 파일들이 0바이트로 변경되어 있었습니다.

.gitignore 때문에 컨텐츠가 만들어지지 않는 것인가?

먼저 의심을 했고 hexo-generator가 만들어주는 db.json도 git으로 버전관리대상에 추가 후 다시 푸시하였습니다.
예상대로 hexo generate 스크립트를 실행할때 생성 되기 때문에, 동일한 현상이 재현 되었습니다.

스크립트 실행시 무슨 문제가 있었다면 빌드가 중지 되었을텐데, Job log를 보았을때는 그런 문제가 없었습니다.

그리하여 기존 방식대로 우선 배포를 해둔 후, Job Log를 하나씩 자세히 들여다 보았는데

1
2
3
4
WARN  No layout: 2019/06/05/where-is-constructor-inject/index.html
WARN No layout: 2019/06/04/json-property-not-working/index.html
WARN No layout: 2019/05/28/required-a-bean-of-type-that-could-not-be-found/index.html
...

위와 같이 No layout 이라는 경고 메세지가 있었습니다.

혹시나 하여 새로운 폴더에서 소스코드를 풀 받아 보았더니,

themes 폴더에 사용중이던 테마가 빈 폴더였습니다.

항상 로컬에서만 푸시 하였기 때문에, 그걸 모르고 있었죠…

깃허브 레포지토리에는 이와같이 표시되고 클릭 불가능한 상태였습니다.
Github themes directory

원인을 찾아본 결과, 해당 theme 마다 .git 디렉토리가 존재하고,

개별적으로 버전관리가 되고 있기 때문에 저의 레포지토리를 pull을 받아도 사용할 수 없었습니다.

해당 포스팅을 보고,
서브모듈을 사용해야겠다 생각했습니다.

하지만 템플릿쪽이다보니 개별적인 수정사항들도 생길 수 있기 때문에 직접 관리하는게 좋겠다 싶어서,
아예 .git 폴더를 지우고, 제 레포지토리에서 버전관리 할 수 있게 하는 쪽으로 마음을 바꾸었습니다.

그런데 themes/icarus/.git 폴더를 삭제하고, git status 명령을 쳤을때,

themes/icarus 디렉토리 하위 파일들이 Untracked files에 없었습니다.

혹시나해서 폴더명을 바꾸니까 노출이 되었고요..

git에 캐시가 남아 있나? 싶어 git rm --cached themes/icarus 명령어를 사용하였더니

정상적으로 Untracked files에 노출이 되어 버전관리에 추가한 후, 푸시를 했습니다.

그 후, 현재와 같이 정상적으로 동작하고 있습니다!!

정말 중요한 핵심은 theme 폴더를 레포지토리에 추가하시면됩니다. 였기 때문에

한줄 요약으로 맨 위에 기재해두었습니다.

#

댓글

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×