From 562edf5af174e7285cbbd49e67ca0d5af89508f8 Mon Sep 17 00:00:00 2001 From: Chaitanya Tata Date: Wed, 8 Nov 2023 01:42:15 +0530 Subject: [PATCH] ci: Add a workflow to check Wi-Fi FW patch version This workflow checks the version between the C header and the firmware patch bins and leaves a comment. Signed-off-by: Chaitanya Tata --- .github/workflows/check_wifi_fw_patch.yml | 49 +++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 .github/workflows/check_wifi_fw_patch.yml diff --git a/.github/workflows/check_wifi_fw_patch.yml b/.github/workflows/check_wifi_fw_patch.yml new file mode 100644 index 0000000000..e1010f98ed --- /dev/null +++ b/.github/workflows/check_wifi_fw_patch.yml @@ -0,0 +1,49 @@ +name: Verify nRF70 Wi-Fi firmware patch version +on: pull_request +env: + PATCH_INFO_FILE: 'nrf_wifi/fw_if/umac_if/inc/fw/patch_info.h' + PATCH_BIN_BASE: 'nrf_wifi/fw_bins' + PATH_BIN_NAME: 'nrf70.bin' + PATCH_BIN_VER_OFFSET: 8 + COMMENT: 'nRF70 Wi-Fi firmware patch version:' +jobs: + verify: + runs-on: ubuntu-latest + steps: + - name: Install gawk (needed for strtonum() function in awk below) + run: sudo apt-get install gawk + - name: Checkout code + uses: actions/checkout@v2 + - name: Extract patch version + run: | + echo EXP_PATCH_VERSION=$(cat ${{ env.PATCH_INFO_FILE }} | grep "#define RPU_" | awk '{print $3}' | tr -d '()' | paste -sd ".") >> "$GITHUB_OUTPUT" + id: patch_version + - name: Verify patch version + run: | + for patch in $(find ${{ env.PATCH_BIN_BASE }} -name ${{ PATH_BIN_NAME }}); do + echo "Verifying $patch" + patch_version=$(hexdump -s ${{ env.PATCH_BIN_VER_OFFSET }} -n 4 -e '4/1 "%02x "' $patch | awk '{ for(i=NF; i>0; i--) printf("%d%s", strtonum("0x"$i), (i==1?"\n":".")) }') + echo "Patch version: $patch_version, expected: ${{ steps.patch_version.outputs.EXP_PATCH_VERSION }}" + if [ "${{ steps.patch_version.outputs.EXP_PATCH_VERSION }}" != "$patch_version" ]; then + echo "COMMENT<> $GITHUB_ENV + echo "${{env.COMMENT}}: Mismatch for $patch: (Got)$patch_version != (Expected)${{ steps.patch_version.outputs.EXP_PATCH_VERSION }}" >> $GITHUB_ENV + echo "EOF" >> $GITHUB_ENV + exit 1 + else + echo "COMMENT<> $GITHUB_ENV + echo "${{env.COMMENT}} Verified for $patch" >> $GITHUB_ENV + echo "EOF" >> $GITHUB_ENV + fi + done + - name: Comment on PR + if: ${{ always() }} + uses: actions/github-script@v3 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + script: | + github.issues.createComment({ + issue_number: context.issue.number, + owner: context.repo.owner, + repo: context.repo.repo, + body: "${{ env.COMMENT }}" + })