Gate SRU with clear warning in the description (Infra) #2476
Workflow file for this run
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: PR Validation | |
on: | |
pull_request: | |
types: | |
- opened | |
- synchronize | |
- edited | |
jobs: | |
validate_title: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checking the presence of the Traceability Marker in the PR title | |
env: | |
PR_TITLE: ${{ github.event.pull_request.title }} | |
run: | | |
if echo "$PR_TITLE" | grep -iqP " \((infra|bugfix|new|breaking)\)$"; then | |
echo "PR title contains the traceability marker" | |
exit 0 | |
else | |
echo "Traceability marker missing" | |
echo "Update your title with one of the following postfix" | |
echo "(Infra,Bugfix,New,Breaking)" | |
echo | |
echo "e.g. $PR_TITLE (BugFix)" | |
exit 1 | |
fi | |
sru_gate: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout Checkbox monorepo | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Install dependencies, Checkbox and providers | |
run: | | |
sudo apt install -y -qq python3 python3-venv jq libsystemd-dev | |
python3 -m venv venv | |
. venv/bin/activate | |
python3 -m pip install checkbox-ng/ | |
python3 -m pip install checkbox-support/ | |
python3 providers/resource/manage.py develop | |
python3 providers/base/manage.py develop | |
python3 providers/certification-client/manage.py develop | |
python3 providers/tpm2/manage.py develop | |
python3 providers/sru/manage.py develop | |
- name: Export main sru list | |
env: | |
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
PR: ${{ github.event.pull_request.html_url }} | |
run: | | |
export DESCRIPTION=$(gh pr view $PR --json 'body' --jq '.body') | |
# we are on current branch/commit | |
. venv/bin/activate | |
checkbox-cli expand -f json com.canonical.certification::sru-server >> sru_server_testplan_this_branch.json | |
checkbox-cli expand -f json com.canonical.certification::sru >> sru_testplan_this_branch.json | |
git checkout origin/main | |
checkbox-cli expand -f json com.canonical.certification::sru-server >> sru_server_testplan_main.json | |
checkbox-cli expand -f json com.canonical.certification::sru >> sru_testplan_main.json | |
# https://stackoverflow.com/a/57795761 | |
# compare two jsons without comparing the order arrays but just | |
# the content of objects | |
echo | |
echo | |
echo "Difference of com.canonical.certification::sru-server (diff this_branch main)" | |
diff \ | |
<(jq -S 'def post_recurse(f): def r: (f | select(. != null) | r), .; r; def post_recurse: post_recurse(.[]?); (. | (post_recurse | arrays) |= sort)' "sru_server_testplan_this_branch.json") \ | |
<(jq -S 'def post_recurse(f): def r: (f | select(. != null) | r), .; r; def post_recurse: post_recurse(.[]?); (. | (post_recurse | arrays) |= sort)' "sru_server_testplan_main.json") | tee sru_server_diff.txt | |
if [ -s sru_server_diff.txt ]; then | |
if [[ "$DESCRIPTION" == *"## WARNING: This modifies com.canonical.certification::sru-server"* ]]; then | |
echo "Warning is correcty posted in the description for sru-server" | |
else | |
echo "Missing warning for sru modification in the description" | |
echo "Include the following in your description:" | |
echo " ## WARNING: This modifies com.canonical.certification::sru-server" | |
exit 1 | |
fi | |
else | |
echo "No diff found" | |
fi | |
echo "Difference of com.canonical.certification::sru (diff this_branch main)" | |
diff \ | |
<(jq -S 'def post_recurse(f): def r: (f | select(. != null) | r), .; r; def post_recurse: post_recurse(.[]?); (. | (post_recurse | arrays) |= sort)' "sru_testplan_this_branch.json") \ | |
<(jq -S 'def post_recurse(f): def r: (f | select(. != null) | r), .; r; def post_recurse: post_recurse(.[]?); (. | (post_recurse | arrays) |= sort)' "sru_testplan_main.json") | tee sru_diff.txt | |
if [ -s sru_diff.txt ]; then | |
if [[ "$DESCRIPTION" == *"## WARNING: This modifies com.canonical.certification::sru"* ]]; then | |
echo "Warning is correcty posted in the description for sru" | |
else | |
echo "Missing warning for sru modification in the description" | |
echo "Include the following in your description:" | |
echo " ## WARNING: This modifies com.canonical.certification::sru" | |
exit 1 | |
fi | |
else | |
echo "No diff found" | |
fi |