This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Create linked issues for PRs without one | |
on: | |
pull_request: | |
types: [opened, edited] | |
jobs: | |
create-issue: | |
runs-on: ubuntu-latest | |
permissions: | |
issues: write | |
steps: | |
- name: Update and install jq | |
run: | | |
sudo apt update | |
sudo apt install jq | |
- name: Setup env | |
run: | | |
echo "USER=${{ github.event.pull_request.user.login }}" >> $GITHUB_ENV | |
echo "TOKEN=${{ secrets.GITHUB_TOKEN }}" >> $GITHUB_ENV | |
echo "ORG=k3s-io" >> $GITHUB_ENV | |
echo "REPO=k3s" >> $GITHUB_ENV | |
echo "TITLE=${{ github.event.pull_request.title }}" >> $GITHUB_ENV | |
echo "BODY=${{ github.event.pull_request.body }}" >> $GITHUB_ENV | |
- name: Check user membership | |
run: | | |
if gh api "orgs/${{ env.ORG }}/public_members/${{ env.USER }}" --silent; then | |
echo "${{ env.USER }} is a public member of ${{ env.ORG }}" | |
echo "MEMBER=true" >> $GITHUB_ENV | |
else | |
echo "${{ env.USER }} is not a public member of ${{ env.ORG }}" | |
echo "MEMBER=false" >> $GITHUB_ENV | |
fi | |
- name: Check issue | |
run: | | |
issue_links=$(echo "${{ env.BODY }}" | grep -o 'https://github.com/${{ env.ORG }}/${{ env.REPO }}/issues/[0-9]\+') | |
if [ -z "$issue_links" ]; then | |
echo "No linked issue found." | |
echo "ISSUE_EXISTS=false" >> $GITHUB_ENV | |
else | |
echo "Linked issue found: $issue_links" | |
echo "ISSUE_EXISTS=true" >> $GITHUB_ENV | |
echo "ISSUE_LINK=$issue_links" >> $GITHUB_ENV | |
fi | |
- name: Create an issue | |
if: env.ISSUE_EXISTS == 'false' | |
run: | | |
new_issue=$(gh issue create --title "${{ env.TITLE }}" --body "${{ env.BODY }}" --repo "${{ env.ORG }}/${{ env.REPO }}" --json number) | |
echo "Created a new issue: $new_issue" | |
echo "ISSUE_NUMBER=$(echo $new_issue | jq -r .number)" >> $GITHUB_ENV | |
- name: Comment on PR with issue link | |
if: env.ISSUE_EXISTS == 'false' | |
run: | | |
gh pr comment ${{ github.event.pull_request.number }} --body "Created a new issue: #${{ env.ISSUE_NUMBER }}" --repo "${{ env.ORG }}/${{ env.REPO }}" |