天雪 评论区 #520
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: HAR_Process | |
on: | |
workflow_dispatch: {} | |
issues: | |
types: [edited, labeled] | |
env: | |
TZ: Asia/Shanghai | |
REPO_DEFAULT_BRANCH: ${{ github.event.repository.default_branch }} | |
jobs: | |
extract-issue-body: | |
runs-on: ubuntu-latest | |
# Only run if the issue is not a PR and is labeled by har | |
if: github.event.issue.pull_request == null && contains(github.event.issue.labels.*.name, 'har') | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Python 3.11 | |
uses: actions/setup-python@v3 | |
with: | |
python-version: "3.11" | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi | |
- uses: stefanbuck/github-issue-parser@v3 | |
id: issue-parser | |
with: | |
template-path: .github/ISSUE_TEMPLATE/process_har.yaml | |
- name: Echo issue body | |
run: | | |
cat ${HOME}/issue-parser-result.json | |
- name: Obtain HARNAME | |
env: | |
ISSUE_JSON: ${{ steps.issue-parser.outputs.jsonString }} | |
id: harname | |
run: | | |
harname=$(python3 -c """ | |
import json | |
import os | |
issue_json:dict = json.loads(os.getenv('ISSUE_JSON','{}')) | |
if len(issue_json) > 0 and 'name' in issue_json: | |
print(issue_json['name']) | |
else: | |
print('') | |
""") | |
echo "harname=${harname}" >> $GITHUB_OUTPUT | |
- name: Judge HAR is update | |
env: | |
ISSUE_JSON: ${{ steps.issue-parser.outputs.jsonString }} | |
id: isupdate | |
run: | | |
isupdate=$(python3 -c """ | |
import json | |
import os | |
with open('tpls_history.json', 'r', encoding='utf8') as f: | |
hfile = json.loads(f.read()) | |
issue_json:dict = json.loads(os.getenv('ISSUE_JSON','{}')) | |
if len(issue_json) > 0 and 'name' in issue_json: | |
if (issue_json['name'] in hfile['har']): | |
print('Update') | |
else: | |
print('Add') | |
else: | |
print('Add') | |
""") | |
echo "isupdate=${isupdate}" >> $GITHUB_OUTPUT | |
- name: Extract issue to json | |
env: | |
ISSUE_JSON: ${{ steps.issue-parser.outputs.jsonString }} | |
ISSUE_URL: ${{ github.event.issue.html_url }} | |
REPO_FULL_NAME: ${{ github.repository }} | |
run: | | |
python .github/src/extract_issue_body.py | |
- name: Create Pull Request | |
uses: peter-evans/create-pull-request@v5 | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
commit-message: "${{ steps.isupdate.outputs.isupdate }} HAR: ${{ steps.harname.outputs.harname }}" | |
title: "${{ steps.isupdate.outputs.isupdate }} HAR: ${{ steps.harname.outputs.harname }}" | |
body: "Auto create pull request by HAR_Process action.\n\nIssue: ${{ github.event.issue.html_url }}\n\nAuthor: @${{ github.event.issue.user.login }}" | |
branch: process-har-${{ github.event.issue.number }} | |
delete-branch: true | |
base: ${{ env.REPO_DEFAULT_BRANCH }} | |
delete-invalid-har: | |
runs-on: ubuntu-latest | |
# Only run if the issue is not a PR and is labeled by har | |
if: github.event.issue.pull_request == null && contains(github.event.issue.labels.*.name, 'invalid') | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Python 3.11 | |
uses: actions/setup-python@v3 | |
with: | |
python-version: "3.11" | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi | |
- uses: stefanbuck/github-issue-parser@v3 | |
id: issue-parser | |
with: | |
template-path: .github/ISSUE_TEMPLATE/process_har.yaml | |
- name: Echo issue body | |
run: | | |
cat ${HOME}/issue-parser-result.json | |
- name: Obtain HARNAME | |
env: | |
ISSUE_JSON: ${{ steps.issue-parser.outputs.jsonString }} | |
id: harname | |
run: | | |
harname=$(python3 -c """ | |
import json | |
import os | |
issue_json:dict = json.loads(os.getenv('ISSUE_JSON','{}')) | |
if len(issue_json) > 0 and 'name' in issue_json: | |
print(issue_json['name']) | |
else: | |
print('') | |
""") | |
echo "harname=${harname}" >> $GITHUB_OUTPUT | |
- name: Delete HAR by harname | |
env: | |
ISSUE_JSON: ${{ steps.issue-parser.outputs.jsonString }} | |
run: | | |
existed=$(python3 .github/src/delete_har.py) | |
if [ "${existed}" == "True" ]; then | |
echo "Delete HAR: ${{ steps.harname.outputs.harname }}" | |
else | |
echo "HAR: ${{ steps.harname.outputs.harname }} not existed" | |
fi | |
- name: Creat Pull Request | |
uses: peter-evans/create-pull-request@v5 | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
commit-message: "Delete HAR: ${{ steps.harname.outputs.harname }}" | |
title: "Delete HAR: ${{ steps.harname.outputs.harname }}" | |
body: "Auto create pull request by HAR_Process action.\n\nIssue: ${{ github.event.issue.html_url }}\n\nAuthor: @${{ github.event.issue.user.login }}" | |
branch: process-har-${{ github.event.issue.number }} | |
delete-branch: true | |
base: ${{ env.REPO_DEFAULT_BRANCH }} | |
- name: Close issue | |
uses: peter-evans/close-issue@v3 | |
with: | |
issue-number: ${{ github.event.issue.number }} | |
comment: "HAR: ${{ steps.harname.outputs.harname }} is invalid, close it." |