mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-02-26 15:47:21 +00:00
A new pointless fad appeared recently where people just create a fairly low information tag at the beginning of their github PR titles. Something like `feat` or other keywords. This seems to originate from the angular community and to be used for automation scripts over there. We do not use any of those scripts and if we did we would be using the github labels, which offer strictly equivalent functionalities without wasting useful PR title space. In order for these keywords to fail the validation, I am adding a check that these directories listed indeed exist in the repository.
44 lines
1.4 KiB
YAML
44 lines
1.4 KiB
YAML
name: PR Format Validation
|
|
|
|
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');
|