Closed3
Danger JSでGitHubリポジトリのPull Requestをチェックする
Workflowの作成
イベントのアクティビティは用途によって変更する。
ワークフローを追加したら、ブランチ保護の設定のRequire status checks to pass before mergingでDangerをRequiredに指定するとよい。
Nodeベース
Dockerベース
実行が遅いので非推奨。
.github/workflows/danger.yml
name: Danger JS
on:
pull_request:
types: [opened, synchronize, reopened, edited]
jobs:
build:
name: Danger JS
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Danger
uses: danger/danger-js@11.2.8
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
DANGER_DISABLE_TRANSPILATION: true
dangerfile.ts
プロジェクトのルートにdangerfile.ts
を作成する。DSLなどは以下を参照。
以下はPull Requestについて、タイトルにConventional CommitsのPrefixが付与されていないときにfailする例と本文にIssueのcloseが書かれていないときにwarnする例。
dangerfile.ts
import { danger, fail, warn } from "danger"
const title = danger.github.pr.title
const body = danger.github.pr.body
const checkTitle = () => {
const allowedPrefixList = ["chore", "docs", "feat", "fix", "perf", "refactor", "style", "test"]
const allowTitleRegex = new RegExp(`^(${allowedPrefixList.join("|")})(\\(([\\w$.* -]*)\\))?: (.+)(?:\\n|$)`, "g")
if (!allowTitleRegex.test(title)) {
fail(
`PRのタイトルが不正です: \`${title}\`\n次のいずれかのPrefixを使用してください: \n${allowedPrefixList
.map((prefix) => {
return `\`${prefix}: \``
})
.join(" ")}\n例: \`feat: ユーザーの削除機能を追加\``,
)
}
}
const checkCloseIssue = () => {
if (
!/\[bot\]$/.test(danger.github.pr.user.login) &&
!/(close|closes|closed|fix|fixes|fixed|resolve|resolves|resolved)\s+(#\d+|https:\/\/github\.com\/[\w.-]+\/[\w.-]+\/issues\/\d+)/i.test(
body,
)
) {
warn("このPRが解決するIssueへのリンクを記載してください。\n例: `close #123`")
}
}
checkTitle()
checkCloseIssue()
このスクラップは2023/09/17にクローズされました