GiitHub Actions를 사용하여 하위 창고를 Push할 때 부모 창고에 확장 가능한 라이브러리 만들기

필기예요.

모티프


어떤 이유로 나는 내 창고에서 다른 창고를submodule로 이용했다.git submodule의 사양은 특정 제출 형식을 의미하기 때문에 HEAD를 자주 참조할 수 없습니다.
Git Tools - Submodules
따라서 요청을 자동으로 만들 수 없을 것 같습니다.

방침.

  • github actions
  • 사용
  • 하위 창고에서 모 창고repository_dispatch로 해결
  • 집계 요청peter-evans/create-pull-request@v3을 작성하는 데 사용
  • 창설했어

  • push 시 하위 창고에서 부모 창고로 POST,repository 보내기dispatch 트리거 시작
  • repository_디스패치에서 감청, 변경된pull 요청한 것 만들기
  • 두 부류로 나누다

    submodule 측


    다만 push를 트리거로 하고 POST에서 대상 창고의 단점을 두드리기 때문에 간단하다.
    update-submodule.yml
    name: Dispatch
    on:
      push:
        branches: [ master ]
    jobs:
      build:
        runs-on: ubuntu-latest
        steps:
          - run: |
              curl -X POST -H "Authorization: token ${{ secrets.AUTO_PR_TOKEN }}" -H "Accept: application/vnd.github.everest-preview+json" -d '{"event_type": "update-submodule"}' -i  https://api.github.com/repos/{送信対象ユーザ or 組織}/{送信対象リポジトリ}/dispatches
    
    마스터 분기의push에서 시작하고crel에서 대상 분기의 단점 이벤트type을 보내는 중입니다.
     https://api.github.com/repos/{送信対象ユーザ or 組織}/{送信対象リポジトリ}/dispatches
    
    이 섹션을 실제로 보내려는 저장소로 변경하십시오.
    token ${{ secrets.AUTO_PR_TOKEN }}
    
    의 부분은 창고로 설치된 방문 영패입니다.
    사용자 메뉴의 Settings→Developer settings→Personal access tokens에서 발행한
    창고 탭의 Settings→Secrets→New repository secret에 등록할 수 있습니다.
    Personal access tokens를 발행할 때 권한을 지정할 수 있지만, 이 글에 리포의 역할 범위가 있다면 문제없습니다.
    トークン
    -d '{"event_type": "update-submodule"}' 
    
    이 이벤트 유형에 지정된 문자열과 일치하는 경우에만 부모 창고의 Workflow를 실행합니다.

    부모님 창고 옆


    부모 창고는 확장 가능한 창고를 만들 때까지 repository_dispatch에서 대기하고 있습니다.
    autoPR.yml
    name: Update submodule Pull Request
    on:
      repository_dispatch:
        types: [update-submodule]
    jobs:
      patch:
        runs-on: ubuntu-latest
    
        steps:
    
          - uses: actions/checkout@master 
            with:
              submodules: true
    
          - run: git submodule update --remote
    
          - name: Create Pull Request 
            id: cpr
            uses: peter-evans/create-pull-request@v3
            with:
              title: Update submodule.
              labels: Auto PR
              branch: auto-pr/update-submodule 
              branch-suffix : timestamp 
              commit-message: auto update submodule
              base : master
              delete-branch: true
              token: ${{ secrets.AUTO_PR_TOKEN }}
    
    repository_dispatch에서 이벤트 형식 '업데이트-submodule' (하위 창고 지정) 을 지정하고 기다립니다.
    step1에서 하위 모듈을 포함하는 checkkout, step2를 통해submodule 업데이트를 진행합니다.
    step3의
          - name: Create Pull Request 
            id: cpr
            uses: peter-evans/create-pull-request@v3
            with:
              title: Update submodule.
              labels: Auto PR
              branch: auto-pr/update-submodule 
              branch-suffix : timestamp 
              commit-message: auto update submodule
              base : master
              delete-branch: true
              token: ${{ secrets.AUTO_PR_TOKEN }}
    
    peter-evans/create-pull-request@v3에 대한 상세한 설명이 있습니다.
    현재 디렉터리의 상태를 제출하고 지정한 지점에 그룹 요청을 만듭니다.
    이것은 여기에 사용된 옵션의 설명이다.
  • title: 생성된 요청의 제목
  • labels: 생성된 그룹 요청에 첨부된 탭
  • branch: 합병원이 되는 지점
  • branch-suffix: (random,timestamp,short-commiit-hash) 이 값을 설정하면 branch 옵션으로 설정된 문자열을 접두사로 지점을 만듭니다.브랜치 접미사는 지정된 형식으로 설정됩니다.(반대로 이 값을 설정하지 않으면 branch가 지정한 지점이 존재하는 것을 전제로 이동한다? 그런 것 같다.)
  • commiit-message: 메시지 제출
  • base: 파생원이 되는 지점.지정하지 않은 경우 Workflow에서 이동할 분기를 지정합니다.
  • delete-branch: 요청을 통합한 상태에서 지점 삭제(boolean)
  • token: 창고에 대한 방문 영패를 지정합니다.하위 창고와 같은 방법으로 부모 창고에서도 만듭니다.
  • 실행 결과


    実行結果

    끝맺다


    대충 조사해서 만들었는데 github actions가 편한 것 같아요.
    나도 뭔가를 할 수 있다면 시장 광장에서 공개했으면 좋겠다.

    좋은 웹페이지 즐겨찾기