mirror of
https://github.com/firestar5683/StarPilot.git
synced 2026-11-06 12:33:51 +08:00
22a8575199
Keep official openpilot ancestry and dependency licenses. Store resources directly in Git, remove LFS setup requirements, and leave the downloadable big model outside the source tree.
97 lines
3.3 KiB
YAML
97 lines
3.3 KiB
YAML
name: jenkins scan
|
|
|
|
on:
|
|
issue_comment:
|
|
types: [created, edited]
|
|
|
|
jobs:
|
|
cleanup-branches:
|
|
runs-on: ubuntu-latest
|
|
permissions:
|
|
contents: write
|
|
steps:
|
|
- name: Delete stale Jenkins branches
|
|
uses: actions/github-script@v9
|
|
with:
|
|
script: |
|
|
const cutoff = Date.now() - 24 * 60 * 60 * 1000;
|
|
const prefixes = ['tmp-jenkins', '__jenkins'];
|
|
|
|
for await (const response of github.paginate.iterator(github.rest.repos.listBranches, {
|
|
owner: context.repo.owner,
|
|
repo: context.repo.repo,
|
|
per_page: 100,
|
|
})) {
|
|
for (const branch of response.data) {
|
|
if (!prefixes.some(p => branch.name.startsWith(p))) continue;
|
|
|
|
const { data: commit } = await github.rest.repos.getCommit({
|
|
owner: context.repo.owner,
|
|
repo: context.repo.repo,
|
|
ref: branch.commit.sha,
|
|
});
|
|
|
|
const commitDate = new Date(commit.commit.committer.date).getTime();
|
|
if (commitDate < cutoff) {
|
|
console.log(`Deleting branch: ${branch.name} (last commit: ${commit.commit.committer.date})`);
|
|
await github.rest.git.deleteRef({
|
|
owner: context.repo.owner,
|
|
repo: context.repo.repo,
|
|
ref: `heads/${branch.name}`,
|
|
});
|
|
}
|
|
}
|
|
}
|
|
|
|
scan-comments:
|
|
runs-on: ubuntu-latest
|
|
if: ${{ github.event.issue.pull_request }}
|
|
permissions:
|
|
contents: write
|
|
issues: write
|
|
steps:
|
|
- name: Check for trigger phrase
|
|
id: check_comment
|
|
uses: actions/github-script@v9
|
|
with:
|
|
script: |
|
|
const triggerPhrase = "trigger-jenkins";
|
|
const comment = context.payload.comment.body;
|
|
const commenter = context.payload.comment.user.login;
|
|
|
|
const { data: permissions } = await github.rest.repos.getCollaboratorPermissionLevel({
|
|
owner: context.repo.owner,
|
|
repo: context.repo.repo,
|
|
username: commenter
|
|
});
|
|
|
|
const hasWriteAccess = permissions.permission === 'write' || permissions.permission === 'admin';
|
|
|
|
return (hasWriteAccess && comment.includes(triggerPhrase));
|
|
result-encoding: json
|
|
|
|
- name: Checkout repository
|
|
if: steps.check_comment.outputs.result == 'true'
|
|
uses: actions/checkout@v7
|
|
with:
|
|
ref: refs/pull/${{ github.event.issue.number }}/head
|
|
|
|
- name: Push to tmp-jenkins branch
|
|
if: steps.check_comment.outputs.result == 'true'
|
|
run: |
|
|
git config --global user.name "github-actions[bot]"
|
|
git config --global user.email "github-actions[bot]@users.noreply.github.com"
|
|
git checkout -b tmp-jenkins-${{ github.event.issue.number }}
|
|
git push -f origin tmp-jenkins-${{ github.event.issue.number }}
|
|
|
|
- name: Delete trigger comment
|
|
if: steps.check_comment.outputs.result == 'true' && always()
|
|
uses: actions/github-script@v9
|
|
with:
|
|
script: |
|
|
await github.rest.issues.deleteComment({
|
|
owner: context.repo.owner,
|
|
repo: context.repo.repo,
|
|
comment_id: context.payload.comment.id,
|
|
});
|