mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-02-26 15:47:21 +00:00
44 lines
1.4 KiB
YAML
44 lines
1.4 KiB
YAML
name: PR Format Validatio
|
|
|
|
on:
|
|
pull_request:
|
|
types: [opened, edited, synchronize]
|
|
|
|
jobs:
|
|
validate-pr:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Check PR Title Format
|
|
uses: actions/github-script@v7
|
|
with:
|
|
script: |
|
|
const fs = require('fs');
|
|
const path = require('path');
|
|
const prTitle = context.payload.pull_request.title;
|
|
const titleRegex = /^([\w\s,{}/.]+): .+/;
|
|
|
|
if (!titleRegex.test(prTitle)) {
|
|
core.setFailed(`PR title "${prTitle}" does not match required format: directory, ...: description`);
|
|
return;
|
|
}
|
|
|
|
const match = prTitle.match(titleRegex);
|
|
const dirPart = match[1];
|
|
const directories = dirPart.split(',').map(d => d.trim());
|
|
const missingDirs = [];
|
|
for (const dir of directories) {
|
|
const fullPath = path.join(process.env.GITHUB_WORKSPACE, dir);
|
|
if (!fs.existsSync(fullPath)) {
|
|
missingDirs.push(dir);
|
|
}
|
|
}
|
|
|
|
if (missingDirs.length > 0) {
|
|
core.setFailed(`The following directories in the PR title do not exist: ${missingDirs.join(', ')}`);
|
|
return;
|
|
}
|
|
|
|
console.log('✅ PR title format is valid');
|