**CAUTION: The e-mail below is from an external source. Please exercise caution before opening attachments, clicking links, or following guidance.**
[AMD Official Use Only - General]
Nice work Nickle!!
Reviewed-by: Abner Chang <abner.chang@amd.com>
> -----Original Message-----
> From: Nickle Wang <nicklew@nvidia.com>
> Sent: Thursday, June 8, 2023 12:12 AM
> To: devel@edk2.groups.io
> Cc: Chang, Abner <Abner.Chang@amd.com>; Igor Kulchytskyy
> <igork@ami.com>
> Subject: [edk2-redfish-client][PATCH] RedfishClientPkg/.github: add build
> check and uncrustify check
>
> Caution: This message originated from an External Source. Use proper caution
> when opening attachments, clicking links, or responding.
>
>
> Enable Github Actions to check below items:
> - RedfishClientPkg build check on push and pull request
> - Uncrustify check on pull request
>
> Signed-off-by: Nickle Wang <nicklew@nvidia.com>
> Cc: Abner Chang <abner.chang@amd.com>
> Cc: Igor Kulchytskyy <igork@ami.com>
> ---
> .github/.github/workflows/build.sh | 70 +++++++++++++++++++
> .github/.github/workflows/build.yml | 61 ++++++++++++++++
> .github/.github/workflows/uncrustify-check.sh | 51 ++++++++++++++
> .github/.github/workflows/uncrustify.yml | 44 ++++++++++++
> 4 files changed, 226 insertions(+)
> create mode 100755 .github/.github/workflows/build.sh
> create mode 100644 .github/.github/workflows/build.yml
> create mode 100755 .github/.github/workflows/uncrustify-check.sh
> create mode 100644 .github/.github/workflows/uncrustify.yml
>
> diff --git a/.github/.github/workflows/build.sh
> b/.github/.github/workflows/build.sh
> new file mode 100755
> index 00000000..f919d551
> --- /dev/null
> +++ b/.github/.github/workflows/build.sh
> @@ -0,0 +1,70 @@
> +#!/bin/bash
> +#
> +# Copyright (c) 2023, NVIDIA CORPORATION & AFFILIATES. All rights
> reserved.
> +#
> +# SPDX-License-Identifier: BSD-2-Clause-Patent
> +#
> +
> +
> +ARCH="X64"
> +TARGET="DEBUG"
> +TOOLCHAIN="GCC5"
> +
> +if [ $# -eq 0 ]
> +then
> + echo "usage: $0 [path to edk2] [path to edk2-redfish-client] [ARCH]
> [TARGET] [TOOLCHAIN]"
> + exit 1
> +fi
> +
> +EDK2_ROOT="$PWD/$1"
> +EDK2_REDFISH_CLIENT="$PWD/$2"
> +ARCH="$3"
> +TARGET="$4"
> +TOOLCHAIN="$5"
> +
> +if [ ! -e "$EDK2_ROOT" ]
> +then
> + echo "$EDK2_ROOT does not exist"
> + exit 1
> +fi
> +
> +if [ ! -e "$EDK2_REDFISH_CLIENT" ]
> +then
> + echo "$EDK2_REDFISH_CLIENT does not exist"
> + exit 1
> +fi
> +
> +export PACKAGES_PATH="$EDK2_ROOT:$EDK2_REDFISH_CLIENT"
> +echo "PACKAGES_PATH: $PACKAGES_PATH"
> +echo "ARCH: $ARCH"
> +echo "TARGET: $TARGET"
> +echo "TOOLCHAIN: $TOOLCHAIN"
> +
> +cd "$EDK2_ROOT"
> +. edksetup.sh BaseTools
> +
> +if [ ! -e "BaseTools/Source/C/bin" ]
> +then
> + echo "binary does not exist, rebuild it"
> +
> + cd BaseTools
> + make
> + cd ..
> +
> + echo "If there is build error related to nasm, try to use latest nasm from:
>
https://nam12.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.nasm.us%2Fpub%2Fnasm%2Freleasebuilds%2F&data=05%7C01%7Cigork%40ami.com%7Cfe7c0814e24544d5839a08db67b73fa7%7C27e97857e15f486cb58e86c2b3040f93%7C1%7C0%7C638217808989823384%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=51RRpRuxeci9god2Hs5e%2Fa4S7GdeejhRpofp%2FSpjPS4%3D&reserved=0"
> + echo ""
> + echo "1) wget
>
https://nam12.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.nasm.us%2Fpub%2Fnasm%2Freleasebuilds%2F2.15rc12%2Fnasm-&data=05%7C01%7Cigork%40ami.com%7Cfe7c0814e24544d5839a08db67b73fa7%7C27e97857e15f486cb58e86c2b3040f93%7C1%7C0%7C638217808989823384%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=0X%2B8JSzM7hjzAvLuE6AG1nf6dLKL4SHknyd%2Bv306N%2BA%3D&reserved=0
> 2.15rc12.tar.gz"
> + echo "2) tar zxvf nasm-2.15rc12.tar.gz"
> + echo "3) cd nasm-2.15rc12"
> + echo "4) ./configure --prefix=/usr"
> + echo "5) sudo make install"
> + echo "6) nasm -v"
> +fi
> +
> +build -p RedfishClientPkg/RedfishClientPkg.dsc -a $ARCH -t $TOOLCHAIN -b
> $TARGET
> +if [ $? -ne 0 ]
> +then
> + exit 1
> +fi
> +
> +exit 0
> diff --git a/.github/.github/workflows/build.yml
> b/.github/.github/workflows/build.yml
> new file mode 100644
> index 00000000..f44184b3
> --- /dev/null
> +++ b/.github/.github/workflows/build.yml
> @@ -0,0 +1,61 @@
> +# @file
> +# GitHub Workflow for build checks
> +#
> +# Copyright (c) 2023, NVIDIA CORPORATION & AFFILIATES. All rights
> reserved.
> +#
> +# SPDX-License-Identifier: BSD-2-Clause-Patent
> +##
> +name: "RedfishClientPkg Build"
> +on:
> + push:
> + branches:
> + - main
> + pull_request:
> + branches:
> + - main
> + paths-ignore:
> + - '**/*.bat'
> + - '**/*.md'
> + - '**/*.py'
> + - '**/*.rst'
> + - '**/*.sh'
> + - '**/*.txt'
> +
> +jobs:
> + edk2-redfish-client-build:
> + strategy:
> + fail-fast: false
> + matrix:
> + include:
> + - Target: "DEBUG"
> + ArchList: "X64"
> + ToolChain: "GCC5"
> + - Target: "RELEASE"
> + ArchList: "X64"
> + ToolChain: "GCC5"
> + - Target: "NOOPT"
> + ArchList: "X64"
> + ToolChain: "GCC5"
> + runs-on: ubuntu-latest
> + container:
> + image: ghcr.io/tianocore/containers/ubuntu-22-dev:latest
> + options: --user root -v ${{ github.workspace }}:/home/edk2
> + env:
> + EDK2_DOCKER_USER_HOME: "/home/edk2"
> + name: edk2 build test
> + steps:
> + - name: checkout edk2
> + uses: actions/checkout@v3
> + with:
> + repository: tianocore/edk2
> + path: ./edk2
> + submodules: recursive
> + - name: checkout edk2-redfish-client
> + uses: actions/checkout@v3
> + with:
> + path: ./edk2-redfish-client
> + - name: edk2 build
> + run: |
> + ./edk2-redfish-client/.github/workflows/build.sh ./edk2 ./edk2-
> redfish-client ${{ matrix.ArchList }} ${{ matrix.Target }} ${{ matrix.ToolChain }}
> + shell: bash
> +
> diff --git a/.github/.github/workflows/uncrustify-check.sh
> b/.github/.github/workflows/uncrustify-check.sh
> new file mode 100755
> index 00000000..b739a60b
> --- /dev/null
> +++ b/.github/.github/workflows/uncrustify-check.sh
> @@ -0,0 +1,51 @@
> +#!/bin/bash
> +#
> +# Copyright (c) 2023, NVIDIA CORPORATION & AFFILIATES. All rights
> reserved.
> +#
> +# SPDX-License-Identifier: BSD-2-Clause-Patent
> +#
> +
> +
> +if [ $# -ne 3 ]
> +then
> + echo "usage: $0 [PATH to CONFIG FILE] [PATH to REPO.] [NO. of
> COMMITS]"
> + exit 1
> +fi
> +
> +CONFIG_FILE="$PWD/$1"
> +REPO_PATH="$PWD/$2"
> +NO_COMMITS="$3"
> +
> +if [ ! -e "$CONFIG_FILE" ]
> +then
> + echo "$CONFIG_FILE does not exist"
> + exit 1
> +fi
> +
> +if [ ! -e "$REPO_PATH" ]
> +then
> + echo "$REPO_PATH does not exist"
> + exit 1
> +fi
> +
> +cd "$REPO_PATH"
> +
> +FAILURE=0
> +CHANGED_FILES=$(git diff --name-only HEAD~$NO_COMMITS)
> +for file in $CHANGED_FILES
> +do
> + echo "Uncrustify check file: $file"
> + uncrustify -c $CONFIG_FILE -f $file --check
> + if [ $? -ne 0 ]
> + then
> + echo "Uncrustify check failure on file: $file"
> + FAILURE=1
> + fi
> +done
> +
> +if [ $FAILURE -eq 0 ]
> +then
> + exit 0
> +fi
> +
> +exit 1
> diff --git a/.github/.github/workflows/uncrustify.yml
> b/.github/.github/workflows/uncrustify.yml
> new file mode 100644
> index 00000000..aa603c8d
> --- /dev/null
> +++ b/.github/.github/workflows/uncrustify.yml
> @@ -0,0 +1,44 @@
> +# @file
> +# GitHub Workflow for uncrustify check
> +#
> +# Copyright (c) 2023, NVIDIA CORPORATION & AFFILIATES. All rights
> reserved.
> +#
> +# SPDX-License-Identifier: BSD-2-Clause-Patent
> +##
> +name: "Uncrustify check"
> +on:
> + pull_request:
> + branches:
> + - main
> + paths:
> + - '**/*.h'
> + - '**/*.c'
> +
> +jobs:
> + uncrustify-check:
> + runs-on: ubuntu-latest
> + name: Uncrustify check
> + steps:
> + - name: checkout edk2
> + uses: actions/checkout@v3
> + with:
> + repository: tianocore/edk2
> + path: ./edk2
> + - name: checkout edk2-redfish-client
> + uses: actions/checkout@v3
> + with:
> + path: ./edk2-redfish-client
> + ref: ${{ github.event.pull_request.head.sha }}
> + fetch-depth: 0
> + - name: uncrustify setup
> + run: |
> + git clone
>
https://nam12.safelinks.protection.outlook.com/?url=https%3A%2F%2Fprojectmu%40dev.azure.com%2Fprojectmu%2FUncrustify%2F_git%2FUncrustify&data=05%7C01%7Cigork%40ami.com%7Cfe7c0814e24544d5839a08db67b73fa7%7C27e97857e15f486cb58e86c2b3040f93%7C1%7C0%7C638217808989823384%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=G3FDWSoOa51omLECnejM1KQltXtVzH3r0YcET%2B0FqJs%3D&reserved=0
> uncrustify-edk2
> + cd uncrustify-edk2
> + mkdir build
> + cd build
> + cmake ..
> + cmake --build .
> + cp uncrustify /usr/local/bin && chmod +x /usr/local/bin/uncrustify
> + - name: uncrustify check changed files
> + run: ./edk2-redfish-client/.github/workflows/uncrustify-
> check.sh ./edk2/.pytool/Plugin/UncrustifyCheck/uncrustify.cfg ./edk2-
> redfish-client ${{ github.event.pull_request.commits }}
> + shell: bash
> --
> 2.17.1