mirror of
https://github.com/curl/curl.git
synced 2025-02-17 14:59:45 +08:00
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
This commit is contained in:
parent
c67a32fc56
commit
f0ab8a631a
53
.github/workflows/hacktoberfest-accepted.yml
vendored
Normal file
53
.github/workflows/hacktoberfest-accepted.yml
vendored
Normal file
@ -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 }}
|
Loading…
Reference in New Issue
Block a user