diff options
author | Marc Hoersken <info@marc-hoersken.de> | 2021-10-23 21:30:03 +0200 |
---|---|---|
committer | Marc Hoersken <info@marc-hoersken.de> | 2021-10-27 12:26:31 +0200 |
commit | f0ab8a631aeaa4cb458d55f25313080416adf43e (patch) | |
tree | fa09c0618b705f0c3151461891b45bdc2b1bf96d | |
parent | c67a32fc560913caff7875bb4fe98abb9991798c (diff) | |
download | curl-f0ab8a631aeaa4cb458d55f25313080416adf43e.tar.gz |
github: add support for Hacktoberfest using labels
Automatically add hacktoberfest-accepted label to PRs opened between
September 30th and November 1st once a commit with a close reference
to it is pushed onto the master branch.
With this workflow we can participate in Hacktoberfest while not
relying on GitHub to identify PRs as merged due to our rebasing.
Requires hacktoberfest-accepted labels to exist for PRs on the
participating repository. Also requires hacktoberfest topic on
the participating repository to avoid applying to forked repos.
Reviewed-by: Daniel Stenberg
Fixes #7865
Closes #7897
-rw-r--r-- | .github/workflows/hacktoberfest-accepted.yml | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/.github/workflows/hacktoberfest-accepted.yml b/.github/workflows/hacktoberfest-accepted.yml new file mode 100644 index 000000000..0ab7969c1 --- /dev/null +++ b/.github/workflows/hacktoberfest-accepted.yml @@ -0,0 +1,53 @@ +name: Hacktoberfest + +on: + # run for all pushes to master branch + push: + branches: + - master + +jobs: + # add hacktoberfest-accepted label to PRs opened starting from September 30th + # till November 1st which are closed via commit reference from master branch. + merged: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: 100 + + - name: Check wether repo participates in Hacktoberfest + run: | + gh config set prompt disabled && echo "::set-output name=label::$( + gh repo view --json repositoryTopics --jq '.repositoryTopics[].name' | grep '^hacktoberfest$')" + id: check + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Search relevant commit message lines starting with Closes/Merges + run: | + git log --format=email ${{ github.event.before }}..${{ github.event.after }} | \ + egrep -i "^Close[sd]? " | sort | uniq | tee log + if: steps.check.outputs.label == 'hacktoberfest' + + - name: Search for Number-based PR references + run: | + egrep -o "#([0-9]+)" log | cut -d# -f2 | sort | uniq | xargs -t -n1 -I{} \ + gh pr view {} --json number,createdAt \ + --jq '{number, opened: .createdAt} | [.number, .opened] | join(":")' | tee /dev/stderr | \ + egrep -o '^([0-9]+):[0-9]{4}-(09-30T|10-|11-01T)' | cut -d: -f1 | sort | uniq | xargs -t -n1 -I {} \ + gh pr edit {} --add-label 'hacktoberfest-accepted' + if: steps.check.outputs.label == 'hacktoberfest' + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Search for URL-based PR references + run: | + egrep -o "github.com/(.+)/(.+)/pull/([0-9]+)" log | sort | uniq | xargs -t -n1 -I{} \ + gh pr view "https://{}" --json number,createdAt \ + --jq '{number, opened: .createdAt} | [.number, .opened] | join(":")' | tee /dev/stderr | \ + egrep -o '^([0-9]+):[0-9]{4}-(09-30T|10-|11-01T)' | cut -d: -f1 | sort | uniq | xargs -t -n1 -I {} \ + gh pr edit {} --add-label 'hacktoberfest-accepted' + if: steps.check.outputs.label == 'hacktoberfest' + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |