Check FL ticket in PR name after merge (#2076)
* Add base * Add base again * Test reporting * Fix reporting * Fix secrets * Fix arguments in report * Remove depricated actions * Disable reporting on PR Co-authored-by: あく <alleteam@gmail.com>
This commit is contained in:
parent
7fb1af07b8
commit
9d728a1c65
2
.github/workflows/amap_analyse.yml
vendored
2
.github/workflows/amap_analyse.yml
vendored
@ -39,7 +39,7 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
- name: 'Checkout code'
|
- name: 'Checkout code'
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v3
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
ref: ${{ github.event.pull_request.head.sha }}
|
ref: ${{ github.event.pull_request.head.sha }}
|
||||||
|
13
.github/workflows/build.yml
vendored
13
.github/workflows/build.yml
vendored
@ -24,7 +24,7 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
- name: 'Checkout code'
|
- name: 'Checkout code'
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v3
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
ref: ${{ github.event.pull_request.head.sha }}
|
ref: ${{ github.event.pull_request.head.sha }}
|
||||||
@ -35,6 +35,7 @@ jobs:
|
|||||||
mkdir artifacts
|
mkdir artifacts
|
||||||
|
|
||||||
- name: 'Get commit details'
|
- name: 'Get commit details'
|
||||||
|
id: names
|
||||||
run: |
|
run: |
|
||||||
if [[ ${{ github.event_name }} == 'pull_request' ]]; then
|
if [[ ${{ github.event_name }} == 'pull_request' ]]; then
|
||||||
TYPE="pull"
|
TYPE="pull"
|
||||||
@ -45,14 +46,6 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
python3 scripts/get_env.py "--event_file=${{ github.event_path }}" "--type=$TYPE"
|
python3 scripts/get_env.py "--event_file=${{ github.event_path }}" "--type=$TYPE"
|
||||||
|
|
||||||
- name: 'Generate suffixes for comment'
|
|
||||||
id: names
|
|
||||||
run: |
|
|
||||||
echo "::set-output name=branch_name::${BRANCH_NAME}"
|
|
||||||
echo "::set-output name=commit_sha::${COMMIT_SHA}"
|
|
||||||
echo "::set-output name=default_target::${DEFAULT_TARGET}"
|
|
||||||
echo "::set-output name=suffix::${SUFFIX}"
|
|
||||||
|
|
||||||
- name: 'Bundle scripts'
|
- name: 'Bundle scripts'
|
||||||
if: ${{ !github.event.pull_request.head.repo.fork }}
|
if: ${{ !github.event.pull_request.head.repo.fork }}
|
||||||
run: |
|
run: |
|
||||||
@ -143,7 +136,7 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
- name: 'Checkout code'
|
- name: 'Checkout code'
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v3
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
submodules: true
|
submodules: true
|
||||||
|
6
.github/workflows/check_submodules.yml
vendored
6
.github/workflows/check_submodules.yml
vendored
@ -20,7 +20,7 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
- name: 'Checkout code'
|
- name: 'Checkout code'
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v3
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
ref: ${{ github.event.pull_request.head.sha }}
|
ref: ${{ github.event.pull_request.head.sha }}
|
||||||
@ -36,12 +36,12 @@ jobs:
|
|||||||
BRANCHES=$(git branch -r --contains "$SUBMODULE_HASH");
|
BRANCHES=$(git branch -r --contains "$SUBMODULE_HASH");
|
||||||
COMMITS_IN_BRANCH="$(git rev-list --count dev)";
|
COMMITS_IN_BRANCH="$(git rev-list --count dev)";
|
||||||
if [ $COMMITS_IN_BRANCH -lt $SUB_COMMITS_MIN ]; then
|
if [ $COMMITS_IN_BRANCH -lt $SUB_COMMITS_MIN ]; then
|
||||||
echo "::set-output name=fails::error";
|
echo "name=fails::error" >> $GITHUB_OUTPUT
|
||||||
echo "::error::Error: Too low commits in $SUB_BRANCH of submodule $SUB_PATH: $COMMITS_IN_BRANCH(expected $SUB_COMMITS_MIN+)";
|
echo "::error::Error: Too low commits in $SUB_BRANCH of submodule $SUB_PATH: $COMMITS_IN_BRANCH(expected $SUB_COMMITS_MIN+)";
|
||||||
exit 1;
|
exit 1;
|
||||||
fi
|
fi
|
||||||
if ! grep -q "/$SUB_BRANCH" <<< "$BRANCHES"; then
|
if ! grep -q "/$SUB_BRANCH" <<< "$BRANCHES"; then
|
||||||
echo "::set-output name=fails::error";
|
echo "name=fails::error" >> $GITHUB_OUTPUT
|
||||||
echo "::error::Error: Submodule $SUB_PATH is not on branch $SUB_BRANCH";
|
echo "::error::Error: Submodule $SUB_PATH is not on branch $SUB_BRANCH";
|
||||||
exit 1;
|
exit 1;
|
||||||
fi
|
fi
|
||||||
|
2
.github/workflows/lint_c.yml
vendored
2
.github/workflows/lint_c.yml
vendored
@ -23,7 +23,7 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
- name: 'Checkout code'
|
- name: 'Checkout code'
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v3
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
ref: ${{ github.event.pull_request.head.sha }}
|
ref: ${{ github.event.pull_request.head.sha }}
|
||||||
|
2
.github/workflows/lint_python.yml
vendored
2
.github/workflows/lint_python.yml
vendored
@ -20,7 +20,7 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
- name: 'Checkout code'
|
- name: 'Checkout code'
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v3
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
ref: ${{ github.event.pull_request.head.sha }}
|
ref: ${{ github.event.pull_request.head.sha }}
|
||||||
|
41
.github/workflows/merge_report.yml
vendored
Normal file
41
.github/workflows/merge_report.yml
vendored
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
name: 'Check FL ticket in PR name'
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- dev
|
||||||
|
jobs:
|
||||||
|
merge_report:
|
||||||
|
runs-on: [self-hosted,FlipperZeroShell]
|
||||||
|
steps:
|
||||||
|
- name: 'Decontaminate previous build leftovers'
|
||||||
|
run: |
|
||||||
|
if [ -d .git ]; then
|
||||||
|
git submodule status || git checkout "$(git rev-list --max-parents=0 HEAD | tail -n 1)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
- name: 'Checkout code'
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
ref: ${{ github.event.pull_request.head.sha }}
|
||||||
|
|
||||||
|
- name: 'Get commit details'
|
||||||
|
run: |
|
||||||
|
if [[ ${{ github.event_name }} == 'pull_request' ]]; then
|
||||||
|
TYPE="pull"
|
||||||
|
elif [[ "${{ github.ref }}" == "refs/tags/"* ]]; then
|
||||||
|
TYPE="tag"
|
||||||
|
else
|
||||||
|
TYPE="other"
|
||||||
|
fi
|
||||||
|
python3 scripts/get_env.py "--event_file=${{ github.event_path }}" "--type=$TYPE"
|
||||||
|
|
||||||
|
- name: 'Check ticket and report'
|
||||||
|
run: |
|
||||||
|
FBT_TOOLCHAIN_PATH=/runner/_work source scripts/toolchain/fbtenv.sh
|
||||||
|
python3 -m pip install slack_sdk
|
||||||
|
python3 scripts/merge_report_qa.py \
|
||||||
|
${{ secrets.QA_REPORT_SLACK_TOKEN }} \
|
||||||
|
${{ secrets.QA_REPORT_SLACK_CHANNEL }}
|
||||||
|
|
12
.github/workflows/pvs_studio.yml
vendored
12
.github/workflows/pvs_studio.yml
vendored
@ -25,12 +25,13 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
- name: 'Checkout code'
|
- name: 'Checkout code'
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v3
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
ref: ${{ github.event.pull_request.head.sha }}
|
ref: ${{ github.event.pull_request.head.sha }}
|
||||||
|
|
||||||
- name: 'Get commit details'
|
- name: 'Get commit details'
|
||||||
|
id: names
|
||||||
run: |
|
run: |
|
||||||
if [[ ${{ github.event_name }} == 'pull_request' ]]; then
|
if [[ ${{ github.event_name }} == 'pull_request' ]]; then
|
||||||
TYPE="pull"
|
TYPE="pull"
|
||||||
@ -41,15 +42,6 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
python3 scripts/get_env.py "--event_file=${{ github.event_path }}" "--type=$TYPE"
|
python3 scripts/get_env.py "--event_file=${{ github.event_path }}" "--type=$TYPE"
|
||||||
|
|
||||||
- name: 'Generate suffixes for comment'
|
|
||||||
if: ${{ !github.event.pull_request.head.repo.fork && github.event.pull_request }}
|
|
||||||
id: names
|
|
||||||
run: |
|
|
||||||
echo "::set-output name=branch_name::${BRANCH_NAME}"
|
|
||||||
echo "::set-output name=commit_sha::${COMMIT_SHA}"
|
|
||||||
echo "::set-output name=default_target::${DEFAULT_TARGET}"
|
|
||||||
echo "::set-output name=suffix::${SUFFIX}"
|
|
||||||
|
|
||||||
- name: 'Make reports directory'
|
- name: 'Make reports directory'
|
||||||
run: |
|
run: |
|
||||||
rm -rf reports/
|
rm -rf reports/
|
||||||
|
2
.github/workflows/unit_tests.yml
vendored
2
.github/workflows/unit_tests.yml
vendored
@ -12,7 +12,7 @@ jobs:
|
|||||||
runs-on: [self-hosted, FlipperZeroTest]
|
runs-on: [self-hosted, FlipperZeroTest]
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v3
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
ref: ${{ github.event.pull_request.head.sha }}
|
ref: ${{ github.event.pull_request.head.sha }}
|
||||||
|
@ -77,28 +77,38 @@ def add_env(name, value, file):
|
|||||||
print(f"{delimeter}", file=file)
|
print(f"{delimeter}", file=file)
|
||||||
|
|
||||||
|
|
||||||
def add_envs(data, env_file, args):
|
def add_set_output_var(name, value, file):
|
||||||
add_env("COMMIT_MSG", data["commit_comment"], env_file)
|
print(f"{name}={value}", file=file)
|
||||||
add_env("COMMIT_HASH", data["commit_hash"], env_file)
|
|
||||||
add_env("COMMIT_SHA", data["commit_sha"], env_file)
|
|
||||||
add_env("SUFFIX", data["suffix"], env_file)
|
def add_envs(data, gh_env_file, gh_out_file, args):
|
||||||
add_env("BRANCH_NAME", data["branch_name"], env_file)
|
add_env("COMMIT_MSG", data["commit_comment"], gh_env_file)
|
||||||
add_env("DIST_SUFFIX", data["suffix"], env_file)
|
add_env("COMMIT_HASH", data["commit_hash"], gh_env_file)
|
||||||
add_env("WORKFLOW_BRANCH_OR_TAG", data["branch_name"], env_file)
|
add_env("COMMIT_SHA", data["commit_sha"], gh_env_file)
|
||||||
|
add_env("SUFFIX", data["suffix"], gh_env_file)
|
||||||
|
add_env("BRANCH_NAME", data["branch_name"], gh_env_file)
|
||||||
|
add_env("DIST_SUFFIX", data["suffix"], gh_env_file)
|
||||||
|
add_env("WORKFLOW_BRANCH_OR_TAG", data["branch_name"], gh_env_file)
|
||||||
|
add_set_output_var("branch_name", data["branch_name"], gh_out_file)
|
||||||
|
add_set_output_var("commit_sha", data["commit_sha"], gh_out_file)
|
||||||
|
add_set_output_var("default_target", os.getenv("DEFAULT_TARGET"), gh_out_file)
|
||||||
|
add_set_output_var("suffix", data["suffix"], gh_out_file)
|
||||||
if args.type == "pull":
|
if args.type == "pull":
|
||||||
add_env("PULL_ID", data["pull_id"], env_file)
|
add_env("PULL_ID", data["pull_id"], gh_env_file)
|
||||||
add_env("PULL_NAME", data["pull_name"], env_file)
|
add_env("PULL_NAME", data["pull_name"], gh_env_file)
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
args = parse_args()
|
args = parse_args()
|
||||||
event_file = open(args.event_file)
|
event_file = open(args.event_file, "r")
|
||||||
event = json.load(event_file)
|
event = json.load(event_file)
|
||||||
env_file = open(os.environ["GITHUB_ENV"], "a")
|
gh_env_file = open(os.environ["GITHUB_ENV"], "a")
|
||||||
|
gh_out_file = open(os.environ["GITHUB_OUTPUT"], "a")
|
||||||
data = get_details(event, args)
|
data = get_details(event, args)
|
||||||
add_envs(data, env_file, args)
|
add_envs(data, gh_env_file, gh_out_file, args)
|
||||||
event_file.close()
|
event_file.close()
|
||||||
env_file.close()
|
gh_env_file.close()
|
||||||
|
gh_out_file.close()
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
53
scripts/merge_report_qa.py
Executable file
53
scripts/merge_report_qa.py
Executable file
@ -0,0 +1,53 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
import os
|
||||||
|
import re
|
||||||
|
import sys
|
||||||
|
import argparse
|
||||||
|
from slack_sdk import WebClient
|
||||||
|
from slack_sdk.errors import SlackApiError
|
||||||
|
|
||||||
|
|
||||||
|
def parse_args():
|
||||||
|
parser = argparse.ArgumentParser()
|
||||||
|
parser.add_argument("slack_token")
|
||||||
|
parser.add_argument("slack_channel")
|
||||||
|
args = parser.parse_args()
|
||||||
|
return args
|
||||||
|
|
||||||
|
|
||||||
|
def checkCommitMessage(msg):
|
||||||
|
regex = re.compile(r"^'?\[FL-\d+\]")
|
||||||
|
if regex.match(msg):
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
def reportSlack(commit_hash, slack_token, slack_channel, message):
|
||||||
|
client = WebClient(token=slack_token)
|
||||||
|
try:
|
||||||
|
client.chat_postMessage(channel="#" + slack_channel, text=message)
|
||||||
|
except SlackApiError as e:
|
||||||
|
print(e)
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
args = parse_args()
|
||||||
|
commit_msg = os.getenv("COMMIT_MSG")
|
||||||
|
commit_hash = os.getenv("COMMIT_HASH")
|
||||||
|
commit_sha = os.getenv("COMMIT_SHA")
|
||||||
|
commit_link = (
|
||||||
|
"<https://github.com/flipperdevices/flipperzero-firmware/commit/"
|
||||||
|
+ commit_hash
|
||||||
|
+ "|"
|
||||||
|
+ commit_sha
|
||||||
|
+ ">"
|
||||||
|
)
|
||||||
|
message = "Commit " + commit_link + " merged to dev without 'FL' ticket!"
|
||||||
|
if not checkCommitMessage(commit_msg):
|
||||||
|
reportSlack(commit_hash, args.slack_token, args.slack_channel, message)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
Loading…
Reference in New Issue
Block a user