From 48e37218cb4e8e9c739e30352bd3fae82560be65 Mon Sep 17 00:00:00 2001 From: Tobias Schwarz Date: Mon, 22 Jul 2024 12:08:34 +0000 Subject: [PATCH] workflows: add ip prefix duplicate check --- .github/checks/check-ip-prefix-duplicates.sh | 25 +++++++++++++++++++ .../workflows/check-ip-prefix-duplicates.yml | 17 +++++++++++++ 2 files changed, 42 insertions(+) create mode 100755 .github/checks/check-ip-prefix-duplicates.sh create mode 100644 .github/workflows/check-ip-prefix-duplicates.yml diff --git a/.github/checks/check-ip-prefix-duplicates.sh b/.github/checks/check-ip-prefix-duplicates.sh new file mode 100755 index 000000000..bf47c01ab --- /dev/null +++ b/.github/checks/check-ip-prefix-duplicates.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +# Change to the locations directory +cd locations || exit 1 + +# Check for IPv4 duplicates +ipv4_duplicates=$(sed -nE 's/^\s*prefix:\s*["'\''"]?([^"'\''\s#]+)["'\''"]?/\1/p' ./*.yml | sort | uniq -cd) + +# Check for IPv6 duplicates +ipv6_duplicates=$(sed -nE 's/^\s*ipv6_prefix:\s*["'\''"]?([0-9a-fA-F:]+\/[0-9]+)["'\''"]?/\1/p' ./*.yml | sort | uniq -cd) + + +if [ -n "$ipv4_duplicates" ] || [ -n "$ipv6_duplicates" ]; then + if [ -n "$ipv4_duplicates" ]; then + echo "Duplicate IPv4 prefixes found:" + echo "$ipv4_duplicates" + fi + if [ -n "$ipv6_duplicates" ]; then + echo "Duplicate IPv6 prefixes found:" + echo "$ipv6_duplicates" + fi + exit 1 +else + echo "No duplicate prefixes found." +fi diff --git a/.github/workflows/check-ip-prefix-duplicates.yml b/.github/workflows/check-ip-prefix-duplicates.yml new file mode 100644 index 000000000..9836efa81 --- /dev/null +++ b/.github/workflows/check-ip-prefix-duplicates.yml @@ -0,0 +1,17 @@ +--- +name: Check for duplicate IP prefixes + +on: [push, pull_request] # yamllint disable-line rule:truthy + +jobs: + check-ip-prefix-duplicates: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Run IP prefix duplicate check + run: | + ./.github/checks/check-ip-prefix-duplicates.sh