From 34242a29bad895b6d1b320187e61aa3e5c4dfbca Mon Sep 17 00:00:00 2001 From: akuker <34318535+akuker@users.noreply.github.com> Date: Tue, 6 Sep 2022 01:17:33 -0500 Subject: [PATCH] Added workflow configurations and README updates (#832) * automated test try 1 * filter branches * filter branches * filter branches * filter branches * filter branches * Configured build and test CI workflows * enable for all branches * Update README.md * Update README.md Co-authored-by: Tony Kuker --- .github/workflows/build_code.yml | 54 +++++++++++ .github/workflows/c-cpp.yml | 56 ----------- ...reation.yml => rpi_image_creation.yml.old} | 0 .github/workflows/run_tests.yml | 92 +++++++++++++++++++ README.md | 5 +- 5 files changed, 150 insertions(+), 57 deletions(-) create mode 100644 .github/workflows/build_code.yml delete mode 100644 .github/workflows/c-cpp.yml rename .github/workflows/{rpi_image_creation.yml => rpi_image_creation.yml.old} (100%) create mode 100644 .github/workflows/run_tests.yml diff --git a/.github/workflows/build_code.yml b/.github/workflows/build_code.yml new file mode 100644 index 00000000..b57bb592 --- /dev/null +++ b/.github/workflows/build_code.yml @@ -0,0 +1,54 @@ +name: Build C++ Packages + +on: [push, pull_request] + +jobs: + build: + runs-on: ubuntu-22.04 + + steps: + - uses: actions/checkout@v2 + + - name: Add armhf as architecture + run: sudo dpkg --add-architecture armhf + + - name: Reconfigure apt for arch amd64 + run: sudo sed -i "s/deb /deb [arch=amd64] /g" /etc/apt/sources.list + + - name: Add armhf repos (jammy) + run: sudo bash -c "echo \"deb [arch=armhf] http://ports.ubuntu.com/ubuntu-ports/ jammy main multiverse restricted universe\" >> /etc/apt/sources.list" + + - name: Add armhf repos (jammy-updates) + run: sudo bash -c "echo \"deb [arch=armhf] http://ports.ubuntu.com/ubuntu-ports/ jammy-updates main multiverse restricted universe\" >> /etc/apt/sources.list" + + - name: Update apt + run: sudo apt update + + - name: Install cross compile toolchain + run: sudo apt-get --yes install gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf binutils-arm-linux-gnueabihf libspdlog-dev + + - name: Install libraries + run: sudo apt-get --yes install libspdlog-dev:armhf libpcap-dev:armhf libevdev2:armhf libev-dev:armhf protobuf-compiler libprotobuf-dev:armhf + + - name: make standard + run: make all -j6 CONNECT_TYPE=STANDARD CROSS_COMPILE=arm-linux-gnueabihf- + working-directory: ./src/raspberrypi + + - name: make fullspec + run: make all -j6 CONNECT_TYPE=FULLSPEC CROSS_COMPILE=arm-linux-gnueabihf- + working-directory: ./src/raspberrypi + + # We need to tar the binary outputs to retain the executable + # file permission. Currently, actions/upload-artifact only + # supports .ZIP files. + # This is workaround for https://github.com/actions/upload-artifact/issues/38 + - name: tar binary outputs + run: tar -czvf rascsi.tar.gz ./bin + working-directory: ./src/raspberrypi + + - name: upload artifacts + uses: actions/upload-artifact@v2 + with: + name: arm-binaries + path: ./src/raspberrypi/rascsi.tar.gz + diff --git a/.github/workflows/c-cpp.yml b/.github/workflows/c-cpp.yml deleted file mode 100644 index 33b54bb8..00000000 --- a/.github/workflows/c-cpp.yml +++ /dev/null @@ -1,56 +0,0 @@ -name: C/C++ CI - -on: [push, pull_request] - -jobs: - build: - - runs-on: ubuntu-latest - - steps: - - name: Install cross compile toolchain - run: sudo apt-get install gcc-8-arm-linux-gnueabihf g++-8-arm-linux-gnueabihf binutils-arm-linux-gnueabihf libspdlog-dev - - uses: actions/checkout@v2 - - - name: dump arm gcc version - run: arm-linux-gnueabihf-gcc -v - working-directory: ./src/raspberrypi - - - name: dump native gcc version - run: gcc -v - working-directory: ./src/raspberrypi - - - - name: make standard - run: make all DEBUG=1 CONNECT_TYPE=STANDARD - working-directory: ./src/raspberrypi - - - name: make fullspec - run: make all DEBUG=1 CONNECT_TYPE=FULLSPEC - working-directory: ./src/raspberrypi - - # We need to tar the binary outputs to retain the executable - # file permission. Currently, actions/upload-artifact only - # supports .ZIP files. - # This is workaround for https://github.com/actions/upload-artifact/issues/38 - - name: tar binary outputs - run: tar -czvf rascsi.tar.gz ./bin - working-directory: ./src/raspberrypi - - - name: upload artifacts - uses: actions/upload-artifact@v2 - with: - name: arm-binaries - path: ./src/raspberrypi/rascsi.tar.gz - -# buildroot-image: -# runs-on: ubuntu-latest -# steps: -# - name: git-fetch buildroot -# run: git clone git://git.busybox.net/buildroot -# - name: make defconfig -# run: make raspberrypi4_defconfig -# working-directory: ./buildroot -# - name: make -# run: make all -# working-directory: ./buildroot diff --git a/.github/workflows/rpi_image_creation.yml b/.github/workflows/rpi_image_creation.yml.old similarity index 100% rename from .github/workflows/rpi_image_creation.yml rename to .github/workflows/rpi_image_creation.yml.old diff --git a/.github/workflows/run_tests.yml b/.github/workflows/run_tests.yml new file mode 100644 index 00000000..41cb71f0 --- /dev/null +++ b/.github/workflows/run_tests.yml @@ -0,0 +1,92 @@ +name: Run automated unit tests + +on: [push, pull_request] + +jobs: + functional_test: + runs-on: ubuntu-22.04 + steps: + - uses: actions/checkout@v3 + + - name: Install libraries + run: sudo apt-get install libspdlog-dev libpcap-dev libevdev2 libev-dev protobuf-compiler libgtest-dev libgmock-dev + + - name: Run tests + run: make -C src/raspberrypi -j6 test + + - name: Save Log + run: src/raspberrypi/bin/fullspec/rascsi_test | tee test_log.txt + + - name: upload artifacts + uses: actions/upload-artifact@v2 + with: + name: test log + path: test_log.txt + + code_coverage_test: + runs-on: ubuntu-22.04 + steps: + - uses: actions/checkout@v3 + + - name: Install libraries + run: sudo apt-get install libspdlog-dev libpcap-dev libevdev2 libev-dev protobuf-compiler libgtest-dev libgmock-dev lcov + + - name: Gerenate coverage + run: make -C src/raspberrypi -j6 coverage + + - name: tar coverage data + run: tar -czvf coverage.tar.gz ./coverage + working-directory: ./src/raspberrypi + + - name: upload artifacts + uses: actions/upload-artifact@v2 + with: + name: Coverage data + path: ./src/raspberrypi/coverage.tar.gz + + + SonarCloud_Analysis: + runs-on: ubuntu-22.04 + env: + SONAR_SCANNER_VERSION: 4.7.0.2747 + SONAR_SERVER_URL: "https://sonarcloud.io" + BUILD_WRAPPER_OUT_DIR: build_wrapper_output_directory # Directory where build-wrapper output will be placed + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis + - name: Install cross compile toolchain + run: sudo apt-get install gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf binutils-arm-linux-gnueabihf libspdlog-dev libpcap-dev protobuf-compiler + + - name: Install dependencies + run: sudo apt-get install libspdlog-dev libpcap-dev protobuf-compiler libprotobuf-dev libprotobuf-c-dev libev-dev libevdev2 libgmock-dev + + - name: Set up JDK 11 + uses: actions/setup-java@v1 + with: + java-version: 11 + - name: Download and set up sonar-scanner + env: + SONAR_SCANNER_DOWNLOAD_URL: https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-${{ env.SONAR_SCANNER_VERSION }}-linux.zip + run: | + mkdir -p $HOME/.sonar + curl -sSLo $HOME/.sonar/sonar-scanner.zip ${{ env.SONAR_SCANNER_DOWNLOAD_URL }} + unzip -o $HOME/.sonar/sonar-scanner.zip -d $HOME/.sonar/ + echo "$HOME/.sonar/sonar-scanner-${{ env.SONAR_SCANNER_VERSION }}-linux/bin" >> $GITHUB_PATH + - name: Download and set up build-wrapper + env: + BUILD_WRAPPER_DOWNLOAD_URL: ${{ env.SONAR_SERVER_URL }}/static/cpp/build-wrapper-linux-x86.zip + run: | + curl -sSLo $HOME/.sonar/build-wrapper-linux-x86.zip ${{ env.BUILD_WRAPPER_DOWNLOAD_URL }} + unzip -o $HOME/.sonar/build-wrapper-linux-x86.zip -d $HOME/.sonar/ + echo "$HOME/.sonar/build-wrapper-linux-x86" >> $GITHUB_PATH + - name: Run build-wrapper + run: | + build-wrapper-linux-x86-64 --out-dir ${{ env.BUILD_WRAPPER_OUT_DIR }} make -C src/raspberrypi -j6 all + - name: Run sonar-scanner + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + run: | + sonar-scanner --define sonar.host.url="${{ env.SONAR_SERVER_URL }}" --define sonar.cfamily.build-wrapper-output="${{ env.BUILD_WRAPPER_OUT_DIR }}" --define sonar.projectKey=akuker_RASCSI --define sonar.organization=rascsi + diff --git a/README.md b/README.md index 5a428d39..f11b784f 100644 --- a/README.md +++ b/README.md @@ -17,15 +17,18 @@ When you are ready to contribute code to RaSCSI Reloaded, follow the instructions in the Web Interface README. Once the translation is complete, please use the same workflow as above to contribute it to the project. -I sell on Tindie +I sell on Tindie[![SonarCloud](https://sonarcloud.io/images/project_badges/sonarcloud-orange.svg)](https://sonarcloud.io/summary/new_code?id=akuker_RASCSI) # GitHub Sponsors Thank you to all of the GitHub sponsors who support the development community! Special thank you to the Gold level sponsors! - @mikelord68 + - @samplerspa-de Special thank you to the Silver level sponsors! - @stinkerton18 - @hsiboy + - @pendleton115 + - @Teufelhunden-0311 - Private sponsor ;]