Skip to content

Gate SRU with clear warning in the description (Infra) #2466

Gate SRU with clear warning in the description (Infra)

Gate SRU with clear warning in the description (Infra) #2466

Workflow file for this run

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
python3 -m venv venv
. venv/bin/activate
python3 -m pip install checkbox-ng/
python3 -m pip install checkbox-support/
python3 providers/resource/manage.py build
python3 providers/resource/manage.py develop
python3 providers/base/manage.py build
python3 providers/base/manage.py develop
python3 providers/certificaiton-client/manage.py build
python3 providers/certificaiton-client/manage.py develop
python3 providers/sru/manage.py build
python3 providers/sru/manage.py develop
- name: Export main sru list
env:
DESCRIPTION: ${{ github.event.description }}
run: |
# 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 "Difference of com.canonical.certification::sru-server"
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") | 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-server modification"
exit 1
fi
else
echo "No diff found"
fi
echo "Difference of com.canonical.certification::sru"
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") | 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"
exit 1
fi
else
echo "No diff found"
fi