mirror of
https://github.com/searxng/searxng.git
synced 2026-07-26 18:01:33 +00:00
[ci] add ai policy checkbox detection
This commit is contained in:
90
.github/workflows/ai-policy-checkbox.yml
vendored
Normal file
90
.github/workflows/ai-policy-checkbox.yml
vendored
Normal file
@@ -0,0 +1,90 @@
|
||||
---
|
||||
name: AI Policy
|
||||
|
||||
# yamllint disable-line rule:truthy
|
||||
on:
|
||||
issues:
|
||||
types: [opened]
|
||||
pull_request_target:
|
||||
types: [opened]
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.event.issue.number || github.event.pull_request.number }}
|
||||
cancel-in-progress: true
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
issue:
|
||||
name: Check issue
|
||||
if: >-
|
||||
github.event_name == 'issues' &&
|
||||
github.event.sender.type != 'Bot' &&
|
||||
contains(fromJSON('["NONE","FIRST_TIMER","FIRST_TIME_CONTRIBUTOR"]'),
|
||||
github.event.issue.author_association)
|
||||
runs-on: ubuntu-26.04
|
||||
permissions:
|
||||
issues: write
|
||||
steps:
|
||||
- uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
|
||||
with:
|
||||
script: |
|
||||
const body = context.payload.issue.body || '';
|
||||
const lines = body.split(/\r?\n/).map((l) => l.trim().replace('[X]', '[x]'));
|
||||
const ref = '[AI Policy]: https://github.com/searxng/searxng/blob/master/AI_POLICY.rst';
|
||||
const box = '- [x] I read the [AI Policy] and hereby confirm that this issue'
|
||||
+ ' conforms with the policy.';
|
||||
if (lines.includes(ref) && lines.includes(box)) return;
|
||||
|
||||
const n = context.payload.issue.number;
|
||||
const msg = 'This issue was closed because the AI Policy box has not been ticked.\n\n'
|
||||
+ 'Please open a new issue with the checkbox ticked.';
|
||||
await github.rest.issues.createComment({
|
||||
owner: context.repo.owner, repo: context.repo.repo, issue_number: n,
|
||||
body: msg,
|
||||
});
|
||||
await github.rest.issues.addLabels({
|
||||
owner: context.repo.owner, repo: context.repo.repo, issue_number: n,
|
||||
labels: ['invalid:slop'],
|
||||
});
|
||||
await github.rest.issues.update({
|
||||
owner: context.repo.owner, repo: context.repo.repo, issue_number: n,
|
||||
state: 'closed', state_reason: 'not_planned',
|
||||
});
|
||||
|
||||
pull_request:
|
||||
name: Check pull request
|
||||
if: >-
|
||||
github.event_name == 'pull_request_target' &&
|
||||
github.event.sender.type != 'Bot' &&
|
||||
contains(fromJSON('["NONE","FIRST_TIMER","FIRST_TIME_CONTRIBUTOR"]'),
|
||||
github.event.pull_request.author_association)
|
||||
runs-on: ubuntu-26.04
|
||||
permissions:
|
||||
pull-requests: write
|
||||
steps:
|
||||
- uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
|
||||
with:
|
||||
script: |
|
||||
const body = context.payload.pull_request.body || '';
|
||||
const lines = body.split(/\r?\n/).map((l) => l.trim().replace('[X]', '[x]'));
|
||||
const ref = '[AI Policy]: https://github.com/searxng/searxng/blob/master/AI_POLICY.rst';
|
||||
const box = '- [x] **I hereby confirm that this PR conforms with the [AI Policy].**';
|
||||
if (lines.includes(ref) && lines.includes(box)) return;
|
||||
|
||||
const n = context.payload.pull_request.number;
|
||||
const msg = 'This pull request was closed because the AI Policy box has not been'
|
||||
+ ' ticked.\n\nPlease open a new pull request with the checkbox ticked.';
|
||||
await github.rest.issues.createComment({
|
||||
owner: context.repo.owner, repo: context.repo.repo, issue_number: n,
|
||||
body: msg,
|
||||
});
|
||||
await github.rest.issues.addLabels({
|
||||
owner: context.repo.owner, repo: context.repo.repo, issue_number: n,
|
||||
labels: ['invalid:slop'],
|
||||
});
|
||||
await github.rest.issues.update({
|
||||
owner: context.repo.owner, repo: context.repo.repo, issue_number: n,
|
||||
state: 'closed', state_reason: 'not_planned',
|
||||
});
|
||||
Reference in New Issue
Block a user