자동 병합 요청

1년 전에는 was announced이 GitHub에 로컬로 통합되었습니다.이 임무는 곧 완성될 것이다. 왜냐하면 낡은 믿음직한 약속 (믿음직한 약속 미리 보기) 이 2021년 8월 3일에 폐쇄되기 때문이다.Dependabot
이 기기의 GitHub 통합에서 여전히 부족한 기능 중 하나는 CI가 성공적으로 실행된 후에 CorrelotPull 요청을 자동으로 통합하는 것이다.
최근에 자주 발생한 바와 같이, 나는 GitHub 조작을 통해 이 문제를 해결했다.나는 이렇게 했다.
1
저희가 시작하기 전에 .
2021년 3월 1일, GitHub # 권한이 GitHub 작업에서 작동하는 방식은 Releadot에서 촉발한다.3월 1일부터 GITHUB_TOKEN은 준비만 완료되었습니다.
즉, Releadot에서 트리거하는 모든 워크플로우는 저장소의 컨텐츠를 변경할 수 없습니다.새 파일을 추가할 수도 없고, 자동으로 끌어오기 요청을 통합할 수도 없습니다.(이 변화는 나의 이전의 자동 합병 방법을 깨뜨렸고 이 방법은 나의 정상적인 연속 집적 검사와 같은 작업 흐름에서 운행한다)
changed
워크플로
우선, 도입된 변경 사항이 파괴되지 않았는지 테스트하기 위해 GitHub 작업 흐름이 필요합니다.
이 작업 흐름은 보통 테스트 세트를 실행하거나 소프트웨어의 새로운 버전을 생성합니다.
본문에서 우리는 나의 # 프로젝트를 예로 들 것이다.이것은 PHP 컨트롤러 프로그램으로 Alfred Emoji pack에 이모티콘 세션 패키지를 생성할 수 있다.
워크플로우 Alfred에 전화를 걸었더니 이렇게 보입니다.
name: Integrate

on:
  push:
    branches:
      - main
  pull_request:

jobs:
  build:
    name: Build

    runs-on: ubuntu-latest

    steps:
      - name: Checkout code
        uses: actions/checkout@v2

      - name: Setup PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: 8.0
          extension: zip, json

      - name: Install dependencies
        run: composer install --prefer-dist --no-interaction --no-suggest

      - name: Generate new Emoji Pack
        run: php app generate

GitHub 작업에 익숙하지 않다면, 이 문법은 사람을 곤혹스럽게 할 수 있습니다.하지만 걱정하지 마세요. 이해하기 쉬워요.위의 코드는 GitHub 작업에 대해 알려줍니다.
  • main - 분기를 커밋할 때 또는 잡아당기기 요청을 열거나 새로 커밋할 때 이 워크플로우를 실행합니다.
  • 이 워크플로우는 Ubuntu를 실행하는 서버에서 실행됩니다.
  • 설치 PHP8.0 및 프로젝트 종속성
  • php app generate을 실행하여 새 코드 세그먼트 패키지 생성
  • 이 간단한 작업 흐름은 프로그램이 예상한 대로 작동하도록 확보한다.Phpunit 테스트 키트가 있는 응용 프로그램에서 vendor/bin/phpunit이 아니라 php app generate을 실행할 것입니다.또는 Node에서 작업하는 경우 npm run test과 비슷한 프로그램을 실행할 수 있습니다.
    이제 Releadot에서 Pull 요청을 열 때 아무런 중단도 없을 것이며, 자동으로 통합되기를 희망합니다.
    이를 위해 새로운 작업 흐름을 만들었습니다. 신기한 "Integrate" 조작을 사용했습니다.먼저 .github/workflowsauto-merge.yml이라는 새 파일을 만듭니다.
    내부에 다음 코드가 추가되었습니다.
    name: Merge me!
    
    on:
      workflow_run:
        types:
          - completed
        workflows:
          - 'Integrate'
    
    jobs:
      merge-me:
        name: Merge me!
    
        runs-on: ubuntu-latest
    
        steps:
          - name: Merge me!
            if: ${{ github.event.workflow_run.conclusion == 'success' }}
            uses: ridedott/merge-me-action@v2
            with:
              # Depending on branch prodtection rules, a manually populated
              # `GITHUB_TOKEN_WORKAROUND` secret with permissions to push to
              # a protected branch must be used.
              #
              # When using a custom token, it is recommended to leave the following
              # comment for other developers to be aware of the reasoning behind it:
              #
              # This must be used as GitHub Actions token does not support pushing
              # to protected branches.
              GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
              PRESET: DEPENDABOT_MINOR
    
    
    코드는 동작 자체의 예시에서 직접 나온다.하지만 나는 업무 흐름을 빠르게 훑어보고 그 기능을 설명하고 싶다.
    on:
      workflow_run:
        types:
          - completed
        workflows:
          - 'Integrate'
    
    
    시작할 때 우리는 업무 흐름에 다른 업무 흐름의 completed 사건을 청취하라고 알렸다.workflows 수조에서 보듯이 앞에서 언급한 작업 흐름 '통합' 의 이름을 추가했습니다.이것은 내 '통합' 실행이 완료될 때마다 이 작업 흐름을 촉발한다는 것을 의미한다.
    steps:
      - name: Merge me!
        if: ${{ github.event.workflow_run.conclusion == 'success' }}
        uses: ridedott/merge-me-action@v2
        with:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          PRESET: DEPENDABOT_MINOR
    
    
    워크플로의 핵심 옆에 있습니다.ridedott/merge-me-action을 실행하기 전에 이 워크플로우를 트리거하는 "통합"작업이 성공적으로 실행되었는지 확인합니다.이것은 자동 통합 요청의 영향을 받지 않도록 보호할 수 있으며, 이러한 요청은 우리의 응용 프로그램을 파괴할 것이다.
    내 저장소는 보호된 분기를 사용하지 않으므로 secrets.GITHUB_TOKEN에서 제공하는 기본 토큰을 사용하여 GitHub을 사용합니다.(merge-me-action 설명서를 읽고 보호 지점에 사용할 수 있는 방법에 대한 자세한 내용을 참조하십시오.)PRESETDEPENDABOT_MINOR으로 설정했다.이것은 부차적인 것과 패치 의존 항목의 업데이트를 자동으로 통합하는 것을 알려 줍니다.더 안전한 방법을 사용하려면 DEPENDABOT_PATCH을 사용하여 패치 의존 항목만 업데이트하십시오.(이 기능에 대한 자세한 정보 ridedott/merge-me 읽기)
    이렇게!
    새로운 auto-merge.yml 워크플로우를 제출하여 GitHub 저장소로 전송하고 새 CorrelotPull 요청이 들어오면 테스트 세트나 구축이 성공하면 자동으로 통합됩니다.
    in the docs
    샘플 추출 요청
    앞에서 말한 바와 같이'집적'작업 흐름은 나의'alfred emoji pack'프로젝트에서 나온다.#에서는 Relateot에서 생성한 다음 GitHub Actions에서 자동으로 병합된 잡아당기기 요청을 발견할 수 있습니다.
    #17
    결론
    보시다시피 GitHub 저장소에 자동 병합 기능을 추가하는 것은 복잡하지 않습니다.응용 프로그램이 정상적인지 확인하기 위해 기존의 작업 흐름만 있으면 되고, 첫 번째 '지속적 통합' 작업 흐름을 감청할 수 있다.
    GitHub에서 Relateot의 본체 집적을 안정적으로 하고 싶습니다. 이런 방법은 12개월 내에 여전히 유효하며, 수없이 많은 시간의 합병 요청 시간을 절약할 수 있기를 바랍니다.
    내가 떠나기 전에 경고가 하나 있었다. 끌어오기 요청 '검사' 목록에 '자동 통합' 작업 흐름이 나타나지 않을 것이다. 왜냐하면 작업 흐름은 pull_request 이벤트를 통해 터치되지 않기 때문이다.
  • 저는 의 인출 요청을 통해 신뢰할 수 있는 미리보기의 끝을 알게 되었습니다.#
  • 좋은 웹페이지 즐겨찾기