GiitHub Actions에서 동일한 분기에서 다른 기본 분기로의 Pull Request 자동 생성

3736 단어 GitHub Actionstech
주식회사 버지니아 엔지니어링 본부장 겸 CTO 마을입니다.이번에는 단락이다.
엔지니어 관리직업경로'라는 책에는 어떤 입장에 있든 기술에서 완전히 벗어나지 않는 것이 좋다고 적혀 있다.이런 대의명분을 바탕으로 틈틈이 제목 문제를 해결한 점을 소개하고 싶다.

배경.


SMARTCRM은 이제 Gitflow를 사용합니다.전면 창고는 주 지점developbeta로 준비되어 있다.develop는 Stage 환경의 역할입니다.그럼beta 할 말이 있다면 이쪽도 같은 스테이지 환경의 API를 두드리면서 AWS Amplifydevelop와 다른 애플리케이션으로 구축돼 있다.이렇게 되면 PR의 리뷰를 거쳐 바로 통합beta에 들어가면 단일 테스트가 가능하다.
그러나 이런 방법의 경우 각각 developbeta를 기초로 하는 분기별 PR을 만들어야 한다.이 의외로 귀찮아서 미리 라벨 등으로 식별하지 않으면 귀찮은 문제가 생길 수 있다.

해결책


상술한 문제를 해결해야 한다
  • PR을 제작할 때 해당 PR의 정보beta를 바탕으로 분기를 기초 분기로 하는 PR
  • 을 제작한다.

  • PR에 레이블develop 부여
  • 라는 두 가지 일을 했다.
    각자
  • https://github.com/repo-sync/pull-request
  • https://github.com/andymckay/labeler
  • 해결됐습니다.
    다음은 GiitHub Action의 YAML 파일입니다.
    name: create a pull request for beta
    
    on:
      pull_request:
        types: [ opened ]
        branches: [ develop ]
    jobs:
      action:
        runs-on: ubuntu-latest
    
        steps:
          - uses: actions/checkout@v2
    
          - name: Set variables
            run: |
              echo 'PR_BODY<<EOF' >> $GITHUB_ENV
              echo "the same as #${{ github.event.pull_request.number }}" >> $GITHUB_ENV
              echo "" >> $GITHUB_ENV
              echo "---" >> $GITHUB_ENV
              echo "" >> $GITHUB_ENV
              echo "${{ github.event.pull_request.body }}" >> $GITHUB_ENV
              echo 'EOF' >> $GITHUB_ENV
          - name: pull-request
            uses: repo-sync/pull-request@v2
            with:
              source_branch: "${{ github.event.pull_request.head.ref }}"
              destination_branch: beta
              github_token: ${{ secrets.GITHUB_TOKEN }}
              pr_label: beta
              pr_title: "${{ github.event.pull_request.title }}"
              pr_body : |
                ${{ env.PR_BODY }}
          - name: Labeling
            uses: andymckay/labeler@master
            with:
              add-labels: "develop"
    
    포인트는 다음과 같다.
  • 지정 트리거pull_requesttypes: [ opened ]를 통해 PR 제작 시만 한정
  • 아래 페이지에 적힌 pull_request의payload를 사용하여 제작자의 PR에서 제작된 PR에 필요한 정보를 수집한다.
  • https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#pull_request

  • 사용GITHUB_ENV, PR에 해당하는 description의 컨텐트를 포함하는 환경 변수 정의
  • 1에 대해서repo-sync/pull-request는 새 PR 작성만 지원하기 때문입니다.3에 관해서는 공식Setting an environment variable에 적혀 있기 때문에 어려운 것은 없지만 의외로 저는 GiitHub Actions로 환경 변수를 지정한 적이 없기 때문에 신중하게 보기 위해 중점을 두었습니다.
    이 GiitHub Action의 결과는 다음과 같습니다.


    라벨이 있어서 쉽게 구분할 수 있어요.또 PR 링크가 있지만 description도 복사돼 내용도 알기 쉽게 됐다.한편, 이 설정은 PR을 만들 때 제목과 description을 제대로 쓰지 않으면 어설픈 내용으로 복사된다는 단점이 있다.다만, PR이 실린 링크와 처음부터 잘 썼다는 의식도 있어 의외로 크게 고민하지는 않았다.
    정말 많은 기사인데 죄송하지만 같은 일을 하고 싶은 분들에게 참고가 됐으면 좋겠습니다.

    좋은 웹페이지 즐겨찾기