Hugo에서 시작한 블로그 기사를 멋지게 관리합니다.

요약


  • Hugo에서 블로그를 시작하면 블로그 게시물을 다른 저장소에서 관리하면 커밋 로그가 더러워지지 않습니다.
  • CI/CD를 사용하여 블로그 기사 저장소를 복제하고 빌드하는 파이프 라인을 구축하면 블로그 본문 소스를 만질 필요가 없습니다.

    배경



    요 전날 Hugo을 사용하여 포트폴리오 사이트를 만들고 그 안에 블로그를 병설했습니다.

    Fairy Select - My Portfolio

    소스 코드를 관리할 때 Git을 사용하는 것이지만, 그렇게 하면 블로그 기사를 추가하기 위해서만 커밋 로그를 쌓아야 하고 커밋 로그가 매우 더러워져 버립니다.

    기사를 3 번 ​​가필 수정 한 것만으로 이렇게 커밋 로그가 쌓입니다.



    거기서 생각한 것이 ...

    블로그 기사만 다른 리포지토리로 하면 좋지 않아?

    입니다.

    생각한 방법



    「블로그 기사만 다른 리포지토리에」한 후를 생각합니다.

    서브 모듈화



    Git에는 서브 모듈이라는 편리한 기능이 있으며, 이것을 사용하면 적어도 블로그 기사의 커밋 로그는 별도로 관리할 수 있습니다.

    그런데, 서브 모듈에 관한 한 기사을 읽은 바, 서브 모듈의 갱신이 있었을 경우에 스스로 갱신을 읽어야 하는 것 같습니다.

    결국은 Update submodule: posts 와 같은 커밋 로그를 쌓지 않으면 안 되기 때문에, 번거롭기 보다는 블로그 기사와 같이 갱신 빈도가 높은 컨텐츠를 서브 모듈화하는 것은 그다지 적합하지 않다고 느꼈습니다.

    그런 이렇게 채용한 것이 다음 방법입니다.

    블로그 기사를 복제하고 빌드하는 파이프라인 구축


    .gitlab-ci.yml 를 아래와 같이 써서 CI/CD 를 설정했습니다. (실제로는 좀더 다양한 처리를 쓰고 있습니다만, 개략은 이런 느낌입니다)
    image: registry.gitlab.com/pages/hugo:latest
    
    variables:
      GIT_SUBMODULE_STRATEGY: recursive
    
    pages:
      script:
        - apk update && apk --no-cache add git
        - git clone ${ブログ記事の URL}
        - git clone ${ブログ記事画像の URL}
        - hugo
      artifacts:
        paths:
          - public
      only:
        - master
    

    이제 master 브랜치에 무언가를 푸시하면 파이프 라인이 실행되고 기사를 업데이트 할 수 있습니다!
  • 파이프라인에서 git clone 하므로 빌드 아티팩트에 .git 가 포함되지 않도록 주의합시다.
  • GitLab에서 HTTPS를 통해 개인 저장소를 복제하는 경우 사용자 이름과 암호를 입력해야 합니다. 2단계 인증을 사용하는 경우 액세스 토큰이 필요합니다. 이것들은 GitLab 의 환경 변수에 설정해 참조하도록 해, 스크립트에 직접 쓰지 않게 합시다.

  • GitLab의 환경 변수는 리포지토리 페이지에서 Settings → CI/CD → Variables로 이동하여 설정할 수 있습니다.

    자세한 내용은 여기



    정기 실행도 설정



    GitLab에는 파이프라인을 정기적으로 실행하는 편리한 기능이 있습니다.

    모처럼이므로 설정해 보려고합니다.

    리포지토리 페이지에서 CI/CD → Schedules → New schedule로 이동하여 일본 시간 매일 아침 4시에 파이프라인을 실행하도록 설정해 봅니다.



    이것으로 정기 실행도 완성입니다.

    제대로 실행할 수 있는지 걱정되는 경우 목록 화면에서 수동으로 실행할 수도 있습니다.

    끝까지 읽어 주셔서 감사합니다!

    좋은 웹페이지 즐겨찾기