Skip to content

Commit

Permalink
chore: CI to test CPP SDK
Browse files Browse the repository at this point in the history
  • Loading branch information
AdityaKasar committed Nov 19, 2024
1 parent 9ad3187 commit 69eecf2
Show file tree
Hide file tree
Showing 5 changed files with 113 additions and 17,093 deletions.
154 changes: 60 additions & 94 deletions .github/workflows/cxx-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@ on:
repository_dispatch:
types: [trigger-workflow]
workflow_dispatch:
push:
branches:
- 'chore/cpp-ci-unit-coverage-report'
pull_request:
branches:
- 'main'
Expand All @@ -11,23 +14,31 @@ on:
- opened
- synchronize

defaults:
run:
shell: bash

env:
HUSKY: 0
jobs:
thunder:
name: Build Thunder Libraries
runs-on: ubuntu-latest
container:
image: kevinshahfws/node-c:3.0
image: node:latest
steps:
- name: Checkout
- name: Checkout firebolt-apis
uses: actions/checkout@v2

- name: Clone and Install Thunder
id: install_thunder
run: |
apt update
apt install -y cmake ninja-build python3-pip python3.11-venv
python3 -m venv firebolt-env
source firebolt-env/bin/activate
pip install jsonref
.github/workflows/utils.sh cloneAndInstallThunder
- name: Upload the library artifact
uses: actions/upload-artifact@v3
with:
Expand All @@ -36,9 +47,12 @@ jobs:

openrpc:
name: Build Openrpc Artifacts
needs: thunder
runs-on: ubuntu-latest
container:
image: kevinshahfws/node-c:3.0
image: node:latest
permissions:
pull-requests: write
steps:
- name: Checkout
uses: actions/checkout@v2
Expand All @@ -62,7 +76,7 @@ jobs:
key: deps-node-modules-${{ hashFiles('package-lock.json') }}

- name: Install dependencies
run: npm ci
run: npm install

- name: Set file permissions
run: |
Expand All @@ -79,24 +93,12 @@ jobs:
name: core
path: src/sdks/core

- name: Upload Manage SDK
uses: actions/upload-artifact@v3
with:
name: manage
path: src/sdks/manage

- name: Upload Discovery SDK
uses: actions/upload-artifact@v3
with:
name: discovery
path: src/sdks/discovery

core_sdk:
name: Build Core SDK
needs: [thunder, openrpc]
runs-on: ubuntu-latest
container:
image: kevinshahfws/node-c:3.0
image: node:latest
steps:
- name: Checkout
uses: actions/checkout@v2
Expand All @@ -107,104 +109,68 @@ jobs:
name: core
path: /__w/firebolt-apis/firebolt-apis/src/sdks/core


- name: Download Thunder
uses: actions/download-artifact@v3
with:
name: thunder
path: /__w/thunder/install/

- name: Firebolt Openrpc
run: |
mkdir -p /__w/openrpc
cd /__w/openrpc
git init
git remote add -f origin https://github.com/rdkcentral/firebolt-openrpc.git
git config core.sparseCheckout true
echo "languages/cpp/src/shared/CMakeLists.txt" >> .git/info/sparse-checkout
echo "languages/cpp/src/shared/cmake/CodeCoverage.cmake" >> .git/info/sparse-checkout
git pull origin chore/cpp-ci-unit-covorage-report
- name: Cache npm dependencies
uses: actions/cache@v3
with:
path: ~/.npm
key: deps-node-modules-${{ hashFiles('package-lock.json') }}

- name: Install npm dependencies
run: npm ci
run: |
apt update
apt install -y cmake
npm install
- name: Generate core SDK source code
run: |
.github/workflows/utils.sh generate_cpp_core_sdk_source_code
- name: Build CXX Core SDK
- name: Build CXX Core SDK
run: |
.github/workflows/utils.sh build_core_cpp_sdk
manage_sdk:
name: Build Manage SDK
needs: [thunder, openrpc]
runs-on: ubuntu-latest
container:
image: kevinshahfws/node-c:3.0
steps:
- name: Checkout
uses: actions/checkout@v2

- name: Download Manage SDK
uses: actions/download-artifact@v3
with:
name: manage
path: /__w/firebolt-apis/firebolt-apis/src/sdks/manage
apt install -y python3-pip python3.11-venv
python3 -m venv firebolt-env
source firebolt-env/bin/activate
pip install gcovr
- name: Download Thunder
uses: actions/download-artifact@v3
with:
name: thunder
path: /__w/thunder/install/

- name: Cache npm dependencies
uses: actions/cache@v3
with:
path: ~/.npm
key: deps-node-modules-${{ hashFiles('package-lock.json') }}

- name: Install npm dependencies
run: npm ci

- name: Generate manage SDK source code
run: |
.github/workflows/utils.sh generate_cpp_manage_sdk_source_code
- name: Build CXX manage SDK
run: |
.github/workflows/utils.sh build_manage_cpp_sdk
.github/workflows/utils.sh build_core_cpp_sdk
dicovery_sdk:
name: Build Discovery SDK
needs: [thunder, openrpc]
runs-on: ubuntu-latest
container:
image: kevinshahfws/node-c:3.0
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Test and Generate coverage report
run: .github/workflows/utils.sh generate_core_sdk_coverage_report

- name: Download Discovery SDK
uses: actions/download-artifact@v3
- name: Display coverage report
uses: irongut/[email protected]
with:
name: discovery
path: /__w/firebolt-apis/firebolt-apis/src/sdks/discovery

- name: Download Thunder
uses: actions/download-artifact@v3
with:
name: thunder
path: /__w/thunder/install/

- name: Cache npm dependencies
uses: actions/cache@v3
filename: coverage/coverage.cobertura.xml
badge: true
fail_below_min: true
format: markdown
hide_branch_rate: false
hide_complexity: true
indicators: true
output: both
thresholds: '10 20'

- name: Add coverage PR comment
uses: marocchino/sticky-pull-request-comment@v2
with:
path: ~/.npm
key: deps-node-modules-${{ hashFiles('package-lock.json') }}
recreate: true
path: code-coverage-results.md

- name: Install npm dependencies
run: npm ci

- name: Generate discovery SDK source code
run: |
.github/workflows/utils.sh generate_cpp_discovery_sdk_source_code

- name: Build CXX Discovery SDK
run: |
.github/workflows/utils.sh build_discovery_cpp_sdk
24 changes: 23 additions & 1 deletion .github/workflows/utils.sh
Original file line number Diff line number Diff line change
Expand Up @@ -182,6 +182,8 @@ function unzipArtifact(){
}

function cloneAndInstallThunder() {
printenv

cd ..

git clone https://github.com/rdkcentral/Thunder.git
Expand Down Expand Up @@ -269,12 +271,29 @@ function build_cpp_sdk() {

echo " ************ Build ${sdk_name^} CPP SDK ************"

cd /__w/firebolt-apis/firebolt-apis/src/sdks/${sdk_name}/build/cpp/src/firebolt-${sdk_name}-native-sdk-${FIREBOLT_VERSION}/
tar -xvf /__w/firebolt-apis/firebolt-apis/src/sdks/${sdk_name}/build/cpp/src/firebolt-${sdk_name}-native-sdk-${FIREBOLT_VERSION}.tgz -C /__w/firebolt-apis/firebolt-apis/
cd /__w/firebolt-apis/firebolt-apis/firebolt-${sdk_name}-native-sdk-${FIREBOLT_VERSION}
cp -rf /__w/openrpc/languages/cpp/src/shared/CMakeLists.txt .
cp -rf /__w/openrpc/languages/cpp/src/shared/cmake/CodeCoverage.cmake cmake/
chmod +x ./build.sh

./build.sh -s "/__w/thunder/install/" || exit 9999
}


function generate_coverage_report(){
FIREBOLT_VERSION=$(node -p "require('./package.json').version")
echo "The version from package.json is $FIREBOLT_VERSION"
local sdk_name=$1

echo " ************ Generate coverage report for ${sdk_name^} CPP SDK ************"

cd /__w/firebolt-apis/firebolt-apis/firebolt-${sdk_name}-native-sdk-${FIREBOLT_VERSION}
cmake --build build --target coverage

mv /__w/firebolt-apis/firebolt-apis/firebolt-${sdk_name}-native-sdk-${FIREBOLT_VERSION}/build/test/coverage /__w/firebolt-apis/firebolt-apis/
}

# Check argument and call corresponding function
case "$1" in
runTests) runTests ;;
Expand All @@ -288,6 +307,9 @@ case "$1" in
build_core_cpp_sdk) build_cpp_sdk "core" ;;
build_manage_cpp_sdk) build_cpp_sdk "manage" ;;
build_discovery_cpp_sdk) build_cpp_sdk "discovery" ;;
generate_core_sdk_coverage_report) generate_coverage_report "core" ;;
generate_manage_sdk_coverage_report) generate_coverage_report "manage" ;;
generate_discovery_sdk_coverage_report) generate_coverage_report "discovery" ;;
*)
echo "Invalid function specified."
exit 1
Expand Down
Loading

0 comments on commit 69eecf2

Please sign in to comment.