Add automated labeler job
Rather than modifying the labels manually, which we often forget, we can label the PRs automatically. This will make it easier to search PRs.
This commit is contained in:
parent
01c8f2021e
commit
c6c5f07880
|
@ -0,0 +1,13 @@
|
|||
ci:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file: .github/**
|
||||
test:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file: fuzz/**
|
||||
- any-glob-to-any-file: '*/tests/**'
|
||||
- any-glob-to-any-file: 'dep_test'
|
||||
- any-glob-to-any-file: 'contrib/test.sh'
|
||||
- any-glob-to-any-file: '*/contrib/test.sh'
|
||||
doc:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file: '**/*.md'
|
|
@ -0,0 +1,26 @@
|
|||
name: Manage PR
|
||||
on:
|
||||
- pull_request_target
|
||||
|
||||
jobs:
|
||||
labeler:
|
||||
permissions:
|
||||
contents: read
|
||||
pull-requests: write
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout master
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
path: master
|
||||
- name: Checkout merge commit
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
path: merge
|
||||
ref: "refs/pull/${{ github.event.number }}/merge"
|
||||
- name: Generate label config
|
||||
run: cd master && SCAN_DIR=../merge ./contrib/gen_label_config.sh
|
||||
- name: Update labels
|
||||
uses: actions/labeler@v5
|
||||
with:
|
||||
configuration-path: master/.github/labeler.yml
|
|
@ -0,0 +1,39 @@
|
|||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
# Generates the label configuration using crates in the repository.
|
||||
# The label configuration is appended to the labeler config file.
|
||||
|
||||
config=.github/labeler.yml
|
||||
|
||||
if [ -n "$SCAN_DIR" ];
|
||||
then
|
||||
scan_dir="$SCAN_DIR"
|
||||
else
|
||||
scan_dir=.
|
||||
fi
|
||||
|
||||
if [ "$1" '!=' "--force" ] && ! git diff --exit-code "$config";
|
||||
then
|
||||
echo "Error: $config is not committed."
|
||||
echo "Refusing to overwrite it to prevent disaster."
|
||||
echo "Run the script with --force to override this."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
excluded_crates="fuzz|dep_test"
|
||||
|
||||
CRATES="`cd "$scan_dir" && cargo metadata --no-deps --format-version 1 | jq -j -r '.packages | map(.manifest_path | rtrimstr("/Cargo.toml") | ltrimstr("'$PWD'/")) | join(" ")'`"
|
||||
|
||||
for crate in $CRATES;
|
||||
do
|
||||
if echo "$crate" | grep -qE "$excluded_crates";
|
||||
then
|
||||
continue
|
||||
fi
|
||||
|
||||
echo "C-$crate:" >> "$config"
|
||||
echo " - changed-files:" >> "$config"
|
||||
echo " - any-glob-to-any-file: $crate/**" >> "$config"
|
||||
done
|
Loading…
Reference in New Issue