GitHub 작업을 사용하여 GitHub 페이지에서 Hugo 구축 스케줄링

여러 해 동안 나는 각종 블로그 플랫폼을 사용한 적이 있다.블로거와 잠시 정을 주고받은 후, 나는 거의 피할 수 없는Wordpress를 실제로 사용하기 시작했다.일반 도메인 이름 형식.그때부터 저는 Ghost를 이용해서 자기 관리를 하는 것이 재미있을 거라고 결정했습니다. 그리고 거의exactly two years ago to the day 제 블로그 플랫폼을 수정하고 업그레이드하는 데 시간이 걸리면 블로그 글을 쓰는 것이 재미없을 거라고 생각했기 때문에 저는 현재 선택한 플랫폼을 선택했습니다. Hugo는 GitHub 페이지에 맡겼습니다.그 동안 이것은 나에게 매우 효과적이었다. 최근까지 나는 내가 하고 싶은 모든 것을 해 왔다.
정적 사이트 생성기로서 Hugo는 미래 날짜 게시물을 지원하지만, 날짜가 도착하면 정적 사이트를 다시 만들어야 합니다.이것은 블로그에 동적 내용을 제공하는 것과 달리, 당신은 단지 IF blogDate ⇒ NOW()만 말할 수 있습니다.정적 웹 사이트의 경우 콘텐츠를 구축하고 이러한 정적 파일을 서버로 전송하여 내용을 발표할 수 있습니다. (내 예는 GitHub 페이지) 미래 날짜와 관련된 내용을 발표하면 발표 과정을 촉발하는 방법을 찾아야 합니다.
나는 최근에 크리스마스 이브에 12개의 동영상을 제작하고 발표하는 작은 프로젝트를 맡았다.그중 세 권은 내가 노트북을 걸고 1년 후에 출판될 것이다. 나는 소파에 편안하게 앉아서, 고품질의 거리와 고기 파이에 앉아서, 내 귀까지 편안하게 앉을 것이다.시간표에 따라 트윗을 할 수 있는 도구가 많고 유튜브에서도 동영상 게시를 안배할 수 있지만 제 블로그(동영상 링크의 출처)는 좀 문제가 있을 것 같습니다.내 노트북에서 실행되는 bashwhile 순환, 심지어crontab은 해커가 있는 것 같아서 믿을 수가 없다.
정답은 기허브 액션스라는 것이 지금의 많은 기술들처럼 들었고 희미하게 깨달았지만 실제로 무슨 짓을 했는지 모르겠다.
GitHub Actions에서 작업 허용(Duh!)GitHub의 재구매 계약에 포함된 코드를 기반으로 합니다.내 블로그is just a repo부터 내가 새로운 문장(예를 들어 이)을 읽을 때마다 동작을 촉발하거나 계획대로 진행할 수 있도록 설정할 수 있다.
나는 사용할 수 있는 문장을 찾았는데, 주로 this nice one 에서 왔다.

준비 작업


Hugo를 설치하고 구성하는 방법에 대한 자세한 내용은 my previous article를 참조하십시오.
두 개의 저장소가 있습니다.
  • https://github.com/rmoff/rmoff-blog/ - 내 블로그
  • 의 소스 코드 저장
  • https://github.com/rmoff/rmoff.github.io - GitHub 페이지를 통해 서비스가 제공되는 정적 사이트입니다.이
  • 에 사용자 정의 영역을 설정했습니다 rmoff.net

    라이브러리 기밀(소스 저장소)


    GitHub 작업에서 실행될 소스 저장소에 Repository secret를 생성해야 합니다.이것은 이 행동을 집행할 수 있는 권한이다.
    SSH 키 쌍과 GitHub Personal Access Tokens 를 사용하여 이 점을 실현하는 강좌를 보았습니다.Gunnar’s article 기반으로 SSH 키 쌍 메소드를 사용하여 다음과 같은 목적으로 고유한 키 쌍을 생성했습니다.
    ssh-keygen -t rsa -b 4096 -C "$(git config user.email)" -f gh-pages -N ""
    
    원본 라이브러리의 Repository secret (내 예는 https://github.com/rmoff/rmoff-blog/) 에 키의 개인 부분을 넣습니다. (상기 명령을 사용하면 gh-pages 라고 부릅니다.그것의 이름을 짓고 이 이름을 적어라.나는 사용한 적이 있다ACTIONS_DEPLOY_KEY.

    주의: 원본 저장소에서 이 비밀을 설정했습니다. GitHub 프로필 설정에서 존재하지 않는 옵션을 찾는 데 시간을 낭비했습니다.🤦‍♂️

    배포 키(대상 저장소)


    배치 키는 사용자의 작업에 따라 정적 사이트 내용을 저장소로 전송하는 것입니다. 제 예는 https://github.com/rmoff/rmoff.github.io 입니다.SSH 키를 사용하는 경우 생성된 키 쌍의 공통 부분이 호출됩니다gh-pages.pub.

    주의: 정적 사이트를 저장하는 목표 저장소에 이 배치 키를 설정했습니다. GitHub 설정 파일 설정에서 시간을 낭비하고 존재하지 않는 옵션을 찾았습니다.🤦‍♂️

    구성 작업


    위에서 신분 검증을 설정한 후 조작 자체를 설정해야 한다.이것은 YAML 파일을 통해 완성된 것으로 원본 저장소에 파일을 두고 실행할 수 있습니다.제 버전은 주로 Gunnar’s article의 버전을 바탕으로 조정을 했습니다.
    name: GitHub Pages
    
    on:
      push:
        branches:
         - master
      schedule:
        # Run every ten minutes
        - cron: '*/10 * * * *'
    
    jobs:
      build-deploy:
        runs-on: ubuntu-18.04
        steps:
        - uses: actions/checkout@v1                  
    
        - name: Install Ruby Dev                     
          run: sudo apt-get install ruby-dev
    
        - name: Install AsciiDoctor and Rouge
          run: sudo gem install asciidoctor rouge
    
        - name: Setup Hugo                           
          uses: peaceiris/actions-hugo@v2
          with:
            hugo-version: '0.75.1'
    
        - name: Build                                
          run: hugo
    
        - name: Deploy                               
          uses: peaceiris/actions-gh-pages@v3
          with:
            deploy_key: ${{ secrets.ACTIONS_DEPLOY_KEY }}
            external_repository: rmoff/rmoff.github.io
            publish_branch: master
            # Without `keep_files` the `CNAME` file in the target repo will get removed
            # and the custom domain configured for GitHub pages will get dropped every 
            # time the action runs…
            keep_files: true
    
    참고 사항:
  • 10분마다 트리거:
  •     schedule:
          # Run every ten minutes
          - cron: '*/10 * * * *'
    
    그리고 주 브랜치로 밀어넣을 때:
        push:
          branches:
          - master
    
  • 우과의 버전과 특정한 숫자를 연결할 수 있다.제가 쓰는 거랑 현지에서 달리기할 때 쓰는 거랑 똑같아요.
  •           hugo-version: '0.75.1'
    
  • 위에서 구성한 저장소 기밀의 이름과 일치하는지 확인해야 합니다.
  •           deploy_key: ${{ secrets.ACTIONS_DEPLOY_KEY }}
    
  • Hugo배치는 보통 deploy_key와 함께 설정하여 다른 리포(정적 사이트 리포를 위탁 관리하는 서브 모듈로 한다.나는 이곳에서 번거로움을 겪었기 때문에 최종적으로 설치/public를 했는데 효과가 매우 좋았다.external_repositorythe Hugo action 기본 푸시 폴더입니다.
  •           external_repository: rmoff/rmoff.github.io
    
  • 마지막 설정이 중요합니다.내 GitHub 페이지 사이트에 사용자 정의 영역을 사용했는데, 내가 이것을 설정할 때... 매우 혼란스러웠다.사용자 정의 도메인 이름이 파일/public로 저장소에 저장되어 있음을 깨닫고 실행할 때마다 저장소의 내용을 바꿉니다!따라서 CNAME가 없으면 대상 리포의 keep_files 파일이 삭제되고GitHub 페이지에 설정된 사용자 정의 영역은 작업이 실행될 때마다 삭제됩니다.
  •           keep_files: true
    
    나의 유일한 문제는 나의 주제와 내가 설정한 교활한 명령에 관한 것이다.나는 결국 하위 모듈로 사용하는 주제를 포기하고 내 사이트 코드에 포함시켰다.지저분하지만 쓸모가 있고 주제도 더 이상 적극적으로 발전하지 않기 때문에 '()ツ)_/¯

    요약


    거의 이렇다.구축은 몇 분마다 한 번씩 발생한다. 이것은 내가 쓴 미래 날짜와 관련된 게시물이 그들의 시간이 다가올 때 발표될 가능성이 있다는 것을 의미한다.

    Gunnar은 그가 처음 발표한 버전에서 자신의 버전을 개선하고 PRs에 미리 보기 버전을 만들었다는 게 좋은 생각이라고 지적했다.

    가나 모린🌍
    포병림

    현재 나의 미리보기 절차도 설정되었다.올바른 기본 URL(예: 업스트림 시 Disqs를 비활성화하는 경우)noindex 메타데이터를 추가하는 것도 고려하지만, 미리보기가 상당히 짧기 때문에 가치가 없을 수도 있습니다.github.com/gunnarmorling/… .
    2020년 12월 20일 오전 11:27
    0
    0

    좋은 웹페이지 즐겨찾기