🐼

Denoの依存をUDDで自動アップデート 2023年版

2023/08/19に公開

結論

このGitHub Workflowの設定を置きましょう。

GitHub Repositoryの設定を変更する必要があります。
Actions→General→Workflow permissions でAllow GitHub Actions to create and approve pull requestsをオンにします。
参考: GitHub ActionsでのPR操作権限はデフォルトでオフになったよ

また、頻度はCRONで毎日午前9時の指定を行っているので、好きな頻度に変更して良いと思います。

.github/workflows/deno-update.yml
name: Deno Update

on:
  push:
    branches:
      - main
  schedule:
    - cron: "0 9 * * *"

jobs:
  update:
    permissions: write-all
    runs-on: ubuntu-latest

    steps:
      - name: Setup repo
        uses: actions/checkout@v3

      - name: Setup Deno
        uses: denoland/setup-deno@v1
        with:
          deno-version: v2.x

      - name: Update dependencies with udd
        id: run-deno-udd
        env:
          NO_COLOR: true
        run: |
          {
            echo 'UDD_RESULT<<EOF'
            deno run --allow-all https://deno.land/x/udd/main.ts $(find . -type f | grep -E ".*\.([mc]?(ts|js)|(ts|js)x?)$" -)
            echo EOF
          } >> $GITHUB_OUTPUT

      - name: Create pull request
        uses: peter-evans/create-pull-request@v3
        with:
          commit-message: "chore(deps): Update deno dependencies"
          title: Update Deno dependencies
          body: |-
            Some external modules are stale.
            <details><summary>Details</summary><div>

            ```
            ${{ steps.run-deno-udd.outputs.UDD_RESULT }}
            ```

            </div></details>
          branch: udd-update
          author: GitHub <noreply@github.com>
          delete-branch: true

参考: Deno版dependabot(UDD)で自動アップデート

is 何

denoの依存関係で古くなったものを自動アップデートしてくれるサードパーティ製のツール、UDDを使って依存の更新をPull-Requestとして生成します。
すでにいくつかの記事で解説されていますが、GitHub Actionsの仕様更新前の記事が多かったので、2023年8月現在でも動作確認が取れるものを記事化しました。

注意点

uddのリポジトリ(https://github.com/hayd/deno-udd)自体のアクティビティが落ちているので、プロジェクト自体がForkされたり、廃止されたりするかもしれません。
一応注視しておきましょう。

Discussion