簡體   English   中英

如何自動合並依賴機器人更新(配置版本 2)?

[英]How do I automerge dependabot updates (config version 2)?

在“Dependabot 正在原生遷移到 GitHub!”之后,我不得不更新我的dependabot 配置文件以使用版本 2 格式。

我的.dependabot/config.yaml看起來像:

version: 1
update_configs:
  - package_manager: "python"
    directory: "/"
    update_schedule: "live"
    automerged_updates:
      - match:
          dependency_type: "all"
          update_type: "all"

我有以下工作:

version: 2
updates:
- package-ecosystem: pip
  directory: "/"
  schedule:
    interval: daily

但我似乎無法再次添加 automerge 選項(使用dependabot驗證器檢查時)?

這是一種不需要任何額外市場安裝的解決方案(最初在此處找到)。 只需創建一個新的 GitHub 工作流(例如.github/workflows/dependabotautomerge.yml ),其中包含:

name: "Dependabot Automerge - Action"

on:
  pull_request:

jobs:
  worker:
    runs-on: ubuntu-latest

    if: github.actor == 'dependabot[bot]'
    steps:
      - name: automerge
        uses: actions/github-script@0.2.0
        with:
          script: |
            github.pullRequests.createReview({
              owner: context.payload.repository.owner.login,
              repo: context.payload.repository.name,
              pull_number: context.payload.pull_request.number,
              event: 'APPROVE'
            })
            github.pullRequests.merge({
              owner: context.payload.repository.owner.login,
              repo: context.payload.repository.name,
              pull_number: context.payload.pull_request.number
            })
          github-token: ${{github.token}}

GitHub Marketplace上還有各種可用的第三方解決方案。

自動合並在 Dependabot 上被禁用到 GitHub:

在可預見的將來,GitHub-native Dependabot 將不支持自動合並。 我們知道你們中的一些人已經構建了依賴自動合並的出色工作流程,但現在,我們擔心自動合並被用於在整個生態系統中快速傳播惡意程序包。 我們建議始終在合並之前驗證您的依賴關系。

有一些技巧可以完成這項工作,您可以查看 GitHubdependabot dependabot-core issue #1973以獲取一些想法。

現在這是一個正式記錄的功能 您可以批准 Dependabot 拉取請求並將其設置為與 GitHub Actions 工作流程自動合並,例如……

name: Dependabot auto-approve
on: pull_request_target
    
permissions:
  contents: write
  pull-requests: write
    
jobs:
  dependabot:
    runs-on: ubuntu-latest
    if: ${{ github.actor == 'dependabot[bot]' }}
    steps:
      - name: Dependabot metadata
        id: metadata
        uses: dependabot/fetch-metadata@v1.1.1
        with:
          github-token: "${{ secrets.GITHUB_TOKEN }}"
      - name: Enable auto-merge for Dependabot PRs
        if: ${{contains(steps.metadata.outputs.dependency-names, 'my-dependency') && steps.metadata.outputs.update-type == 'version-update:semver-patch'}}
        run: gh pr merge --auto --merge "$PR_URL"
        env:
          PR_URL: ${{github.event.pull_request.html_url}}
          GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}

如果您使用代碼所有者並且分支受到保護,您可能會發現這仍將等待代碼所有者審查合並。 不幸的是,代碼所有者不允許您否定受影響的文件,因此您需要在代碼所有者中明確列出擁有的文件以啟用完全非交互式的合並步驟。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM