Dependabet과 Mergify를 사용하여 의존 관계의 업데이트에서 지점의 합병까지 자동화

의 목적

  • 의존관계를 최신 상태로 유지함으로써 의존관계로 인한 취약성 등이 포함되지 않기를 바란다.
  • 자동화된 업데이트, 검증, 통합을 통해 의존 관계를 갱신하는 시간을 줄인다.
  • Dependabet 정보


    https://docs.github.com/en/code-security/supply-chain-security/managing-vulnerabilities-in-your-projects-dependencies/about-dependabot-security-updates
    https://github.blog/2020-06-01-keep-all-your-packages-up-to-date-with-dependabot/
    디펜다봇은 창고에 의존하는 포장 등을 최신 상태로 유지하는 데 도움이 된다.

    Mergify 정보


    https://mergify.com/
    Mergify는 창고 코드를 자동으로 병합하는 데 사용되는 GitHub 응용 프로그램입니다.

    시험해 보다


    차리다


    이번에는 당분간create-react-app 그 의존 관계를 대상으로 한다.
    npx create-react-app my-app
    
    CI의 테스트용에도 npm-Sscripts를 추가하자.
    "scripts": {
        "test:ci": "CI=true npm test",
      },
    

    Dependabet의 설정 파일 만들기


    https://docs.github.com/ja/code-security/supply-chain-security/keeping-your-dependencies-updated-automatically/enabling-and-disabling-version-updates?learn=dependency_version_updates
    Dependab은 현지인이기 때문에 .github 디렉터리에 dependabot.yml를 포함하면 유효합니다.
    또한 Merigify에서 인용 요청에 대해 임의의 동작을 수행하기 위해 먼저 Dependabbot의 설정 파일을 만들어서 프로젝트 의존 관계의 업데이트와 요청 제작을 자동으로 실행합니다./.github/dependabot.yml
    version: 2
    updates:
    # npm のバージョン更新を有効にする
      - package-ecosystem: "npm"
    # 「root」ディレクトリで「package.json」と「lock」ファイルを探す
        directory: "/"
    # npm レジストリの更新を毎日(平日)チェックする
        schedule:
          interval: "daily"
    
    npm뿐만 아니라 다양한 포장 관리자도 지원합니다. 다른 언어를 사용하고자 하는 사람은 공식package-ecosystem에서 확인하세요.
    파일 설정에 대한 세부내용여기.
    수행 후 다음과 같은 요구 사항이 발생합니다.

    또한 Dependabot alerts가 유효하면 취약한 경우에도 알림을 받을 수 있습니다.

    이렇게 하는 것도 매우 편리하지만, 그래도 자동으로 요청을 통합해야 한다.

    Mergify 설치


    Mergify는 기능을 수행하려면 GiitHub 계정에 Mergify를 설치해야 합니다.
    대상 창고에 대한 액세스가 허용되면 Mergify 대시보드로 리디렉션됩니다. Mergify 구성 파일 작성 요청에 대해 임의의 동작을 수행하는 규칙을 적용합니다. Dependabet에 대응하는 example도 있으니 그쪽을 참고하세요. https://docs.mergify.com/examples/#bots
    프로필은 루트를 다음과 같은 방식으로 설정해서 식별합니다.
  • .mergify.yml
  • .mergify/config.yml
  • .github/mergify.yml
  • 이번에는 다음과 같이 규칙을 정한다./.github/mergify.yml
    pull_request_rules:
      - name: automatic merge for Dependabot pull requests
    # プルリクエストが特定のルールに一致しているか
        conditions:
          - author~=^dependabot(|-preview)\[bot\]$
          - check-success=auto-merge-test
    # プルリクエストがルールに一致している場合に実行されるアクション
        actions:
    # ベースのブランチにプルリクエストをマージ
          merge:
            method: merge
    
    상기 규칙에서 자동으로 병합될 대상
  • Dependabbot에서 발행한pull 요청
  • auto-merge-test라는 작업 완성
  • 의 물건.
    conditions의 내용에 따라 무관한 요청에 합병될 위험이 있으니 주의하세요.
    condition 상세 정보여기.
    Dependabbot에서pull 요청을 할 때까지 설정되었지만, 검증을 위한 작업 절차가 없기 때문에 이쪽도 미리 제작되었습니다./.github/workflows/test.yml
    name: Dependabot Auto Merge
    
    on:
      pull_request:
    
    jobs:
      auto-merge-test:
        runs-on: ubuntu-latest
        steps:
          - uses: actions/checkout@v2
          - uses: actions/setup-node@master
            with:
              node-version: 14
          - name: install dependencies
            run: yarn
          - name: test
            run: yarn test:ci
          - name: build
            run: yarn build
    

    동작 확인


    새로 설정한 CI를 실행하고 싶지만, 과거 요청에는 적용되지 않습니다.

    요청을 닫고 다시 엽니다.
    CI가 올바르게 실행되고 Mergify를 통해 재평가 및 병합되었습니다.

    앞으로 디펜다봇 발행 요구는 자동 검증 또는 평가 후 통합된다.

    총결산


    이 글에서는 Dependabbot의 종속성 업데이트 및 게시 요청에 따라 Mergify에 의뢰하여 요청을 검증 및 병합함으로써 창고 내 종속성을 최신 상태로 유지합니다.
    Dependabbot을 사용하여 최신 의존 관계를 유지한다는 보도 자체가 많고 수법도 광범위하지만 GiitHub의 Personal Acces Token이 필요하면 그에 상응하는 시간이 필요하다.
    확장성이 있어 사용해 보셔도 좋습니다.
    이 글은 12월 9일IPFactory Advent Calendar 2021의 글이다.
    IPFactory에 관한 이 그룹은 여기.보십시오.
    어제 12월 8일은futabato 선배의'반교사 공부'였다.
    https://01futabato10.hateblo.jp/entry/2021/12/08/234305
    내일 12월 10일은 야피크의'AWS 초보자가 Nodejs로 만든 링크봇의 인프라를 구축해 보자'.기대하세요.

    좋은 웹페이지 즐겨찾기