자동 병합 요청
이 기기의 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
- 분기를 커밋할 때 또는 잡아당기기 요청을 열거나 새로 커밋할 때 이 워크플로우를 실행합니다.php app generate
을 실행하여 새 코드 세그먼트 패키지 생성 vendor/bin/phpunit
이 아니라 php app generate
을 실행할 것입니다.또는 Node에서 작업하는 경우 npm run test
과 비슷한 프로그램을 실행할 수 있습니다.이제 Releadot에서 Pull 요청을 열 때 아무런 중단도 없을 것이며, 자동으로 통합되기를 희망합니다.
이를 위해 새로운 작업 흐름을 만들었습니다. 신기한 "Integrate" 조작을 사용했습니다.먼저
.github/workflows
에 auto-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
설명서를 읽고 보호 지점에 사용할 수 있는 방법에 대한 자세한 내용을 참조하십시오.)PRESET
은 DEPENDABOT_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
이벤트를 통해 터치되지 않기 때문이다.Reference
이 문제에 관하여(자동 병합 요청), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/_stefanzweifel/auto-merge-dependabot-pull-requests-49ia텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)