プルリクエストに関する質問に答えるためのGiTubアクションの使用
12766 ワード
github-actions[bot]
コメントで
PR FAQ
PRはどれくらい開いていましたか.
PRは0日、0時間、0分、4秒
誰が広報に貢献?
以下のユーザーはPRに貢献しました
バンジェンズ
どのようなファイルのPRで変更?
PRで以下のファイルが変わりました
テンプレート/prfaqテンプレート.MD
どのように多くの行のコードがPRで変更?
変更されたコードの5行
View on GitHub
プル要求FAQ(PRFAQ)は、終了したプル要求に関連するデータポイントを自動的に捕捉するためのメカニズムです.prfaqsは、次の質問に答えます.
マイワークフロー
このワークフローがどのように動作するかを強調表示します.
提出カテゴリ:メンテナはヘッジする必要があります
メンテナは、各プルの要求をスクロールすることによって、この情報を見つけることができますprfaqワークフローは、単一のコメントに努力を統合し、重要な情報を提供していませんhow long the PR was open for .
YAMLファイルとコードへのリンク
ここでは、githubレポです
banjtheman / prfaq_action
合併されたプル要求のためにPrFAQを作成してください
ワークフローYAML
name: PRFAQ
# only trigger on pull request closed events
on:
pull_request:
types: [closed]
env:
PR_NUMBER: ${{ github.event.pull_request.number }}
jobs:
get_pr_stats:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/[email protected]
- name: GitHub GraphQL Action
uses: helaili/[email protected]
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
query: queries/pr_stats.yaml
logLevel: debug
outputFile: pr_stats.json
pr_num: ${{ env.PR_NUMBER }}
- name: Set env variables
uses: jannekem/[email protected]
with:
script: |
import json
import datetime
with open("pr_stats.json", "r") as pr_file:
pr_stats = json.load(pr_file)
# Get Time Open
created_at = pr_stats["data"]["repository"]["pullRequest"]["createdAt"]
merged_at = pr_stats["data"]["repository"]["pullRequest"]["closedAt"]
created_at_timesamp = datetime.datetime.strptime(created_at, "%Y-%m-%dT%H:%M:%SZ")
merged_at_timestamp = datetime.datetime.strptime(merged_at, "%Y-%m-%dT%H:%M:%SZ")
timestamp_diff = merged_at_timestamp - created_at_timesamp
days, seconds = timestamp_diff.days, timestamp_diff.seconds
hours = days * 24 + seconds // 3600
minutes = (seconds % 3600) // 60
seconds = seconds % 60
timestamp_open = f" {days} days, {hours} hours, {minutes} minutes, {seconds} seconds"
print(timestamp_open)
set_env("PR_OPEN", timestamp_open)
# Get participants
participants = pr_stats["data"]["repository"]["pullRequest"]["participants"][
"edges"
]
participants_string = ""
for participant in participants:
participants_string += participant["node"]["login"] + " "
print(participants_string)
set_env("PR_USERS", participants_string)
# Lines of code changed
additions = pr_stats["data"]["repository"]["pullRequest"]["additions"]
deletions = pr_stats["data"]["repository"]["pullRequest"]["deletions"]
content_changed = f"+{additions} -{deletions} lines of code"
print(content_changed)
set_env("PR_LOC", content_changed)
# Files that changed
files = pr_stats["data"]["repository"]["pullRequest"]["files"]["edges"]
files_string = ""
for file_path in files:
files_string += file_path["node"]["path"] + " "
print(files_string)
set_env("PR_FILES", files_string)
- name: Render template
id: template
uses: chuhlomin/[email protected]
with:
template: templates/prfaq-template.md
vars: |
pr_open: ${{ env.PR_OPEN }}
pr_users: ${{ env.PR_USERS }}
pr_loc: ${{ env.PR_LOC }}
pr_files: ${{ env.PR_FILES }}
- name: Create comment
uses: peter-evans/[email protected]
with:
issue-number: ${{ env.PR_NUMBER }}
body: ${{ steps.template.outputs.result }}
追加情報
これらは私がワークフローを構築するために使用したすべてのアクションです
actions/[email protected]
helaili/[email protected]
jannekem/[email protected]
chuhlomin/[email protected]
Reference
この問題について(プルリクエストに関する質問に答えるためのGiTubアクションの使用), 我々は、より多くの情報をここで見つけました https://dev.to/banjtheman/using-github-actions-to-answer-questions-about-pull-requests-e64テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol