ETag for discovery resource requests with batch interface #1726
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# This workflow uses actions that are not certified by GitHub. | |
# They are provided by a third-party and are governed by | |
# separate terms of service, privacy policy, and support | |
# documentation. | |
name: SonarCloud scan | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: ${{ github.ref_name != 'master' }} | |
on: | |
push: | |
branches: | |
- master | |
pull_request: | |
types: [opened, synchronize, reopened] | |
# Allows you to run this workflow manually from the Actions tab | |
workflow_dispatch: | |
jobs: | |
unit-tests: | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
# cloud (ipv4+tcp) on, collection create on, /oic/res observable on, push on, rfotm on | |
- build_args: "-DOC_CLOUD_ENABLED=ON -DOC_COLLECTIONS_IF_CREATE_ENABLED=ON -DOC_DISCOVERY_RESOURCE_OBSERVABLE_ENABLED=ON -DOC_PUSH_ENABLED=ON -DOC_RESOURCE_ACCESS_IN_RFOTM_ENABLED=ON" | |
# ipv6 dns on, oscore off, rep realloc on | |
- build_args: "-DOC_DNS_LOOKUP_IPV6_ENABLED=ON -DOC_OSCORE_ENABLED=OFF -DOC_REPRESENTATION_REALLOC_ENCODING_ENABLED=ON" | |
# ipv4 on, tcp on, dynamic allocation off, rfotm on | |
- build_args: "-DOC_IPV4_ENABLED=ON -DOC_TCP_ENABLED=ON -DOC_DYNAMIC_ALLOCATION_ENABLED=OFF -DOC_RESOURCE_ACCESS_IN_RFOTM_ENABLED=ON" | |
# security off, cloud (ipv4+tcp), collection create on, push on, introspection IDD off | |
- build_args: "-DOC_SECURITY_ENABLED=OFF -DOC_CLOUD_ENABLED=ON -DOC_COLLECTIONS_IF_CREATE_ENABLED=ON -DOC_PUSH_ENABLED=ON -DOC_IDD_API_ENABLED=OFF" | |
uses: ./.github/workflows/unit-test-with-cfg.yml | |
with: | |
build_args: "-DOC_MNT_ENABLED=ON -DOC_WKCORE_ENABLED=ON -DOC_SOFTWARE_UPDATE_ENABLED=ON -DPLGD_DEV_TIME_ENABLED=ON -DOC_ETAG_ENABLED=ON ${{ matrix.build_args }}" | |
build_type: Debug | |
coverage: true | |
plgd-device-tests: | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- name: cloud-server | |
build_args: "" | |
- name: cloud-server-discovery-resource-observable-access-in-RFOTM-rep-realloc | |
build_args: "-DOC_DISCOVERY_RESOURCE_OBSERVABLE_ENABLED=ON -DOC_RESOURCE_ACCESS_IN_RFOTM_ENABLED=ON -DOC_REPRESENTATION_REALLOC_ENCODING_ENABLED=ON" | |
# try with SHA384 | |
cert_signature_algorithm: ECDSA-SHA384 | |
cert_elliptic_curve: P384 | |
uses: ./.github/workflows/plgd-device-test-with-cfg.yml | |
with: | |
name: ${{ matrix.name }} | |
build_args: "-DOC_COLLECTIONS_IF_CREATE_ENABLED=ON -DOC_MNT_ENABLED=ON -DOC_OSCORE_ENABLED=OFF -DPLGD_DEV_TIME_ENABLED=ON -DOC_ETAG_ENABLED=ON -DOC_COVERAGE_ENABLED=ON ${{ matrix.build_args }}" | |
build_type: Debug | |
cert_signature_algorithm: ${{ matrix.cert_signature_algorithm }} | |
cert_elliptic_curve: ${{ matrix.cert_elliptic_curve }} | |
coverage: true | |
plgd-hub-tests: | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- name: cloud-server-discovery-resource-observable-access-in-RFOTM | |
build_args: "-DOC_DISCOVERY_RESOURCE_OBSERVABLE_ENABLED=ON -DOC_RESOURCE_ACCESS_IN_RFOTM_ENABLED=ON" | |
- name: dtls-cloud-server-rep-realloc | |
build_args: "-DOC_REPRESENTATION_REALLOC_ENCODING_ENABLED=ON" | |
hub_args: "-e COAP_GATEWAY_UDP_ENABLED=true" | |
uses: ./.github/workflows/plgd-hub-test-with-cfg.yml | |
with: | |
name: ${{ matrix.name }} | |
build_args: "-DOC_COLLECTIONS_IF_CREATE_ENABLED=ON -DOC_MNT_ENABLED=ON -DOC_OSCORE_ENABLED=OFF -DPLGD_DEV_TIME_ENABLED=ON -DOC_ETAG_ENABLED=ON -DOC_COVERAGE_ENABLED=ON ${{ matrix.build_args }}" | |
build_type: Debug | |
coverage: true | |
hub_args: ${{ matrix.hub_args }} | |
sonar-cloud-scan: | |
name: Sonar Cloud scan | |
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 | |
needs: [unit-tests, plgd-device-tests, plgd-hub-tests] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
submodules: "true" | |
fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of SonarCloud analysis | |
- name: Set up JDK 11 | |
uses: actions/setup-java@v3 | |
with: | |
distribution: zulu | |
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: | | |
mkdir build && cd build | |
# sonar-scanner currently cannot handle multi configuration configuration (ie. compilation of the same file with different defines), | |
# so we enable as many features as possible so we get max. amount of code analysis | |
cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_VERBOSE_MAKEFILE=ON -DOC_CLOUD_ENABLED=ON -DOC_COLLECTIONS_IF_CREATE_ENABLED=ON -DOC_MNT_ENABLED=ON -DOC_WKCORE_ENABLED=ON -DOC_SOFTWARE_UPDATE_ENABLED=ON -DOC_DISCOVERY_RESOURCE_OBSERVABLE_ENABLED=ON -DOC_PUSH_ENABLED=ON -DOC_RESOURCE_ACCESS_IN_RFOTM_ENABLED=ON -DPLGD_DEV_TIME_ENABLED=ON -DOC_ETAG_ENABLED=ON -DBUILD_TESTING=ON .. | |
cd .. | |
# for files defined in multiple cmake targets, sonar-scanner seems to take the configuration from the first compilation of the file, | |
# so we force client-server target to be compiled first so we get analysis of code with both OC_CLIENT and OC_SERVER enabled | |
build-wrapper-linux-x86-64 --out-dir ${{ env.BUILD_WRAPPER_OUT_DIR }} cmake --build build --verbose --target client-server-static --target all | |
- name: Get coverage from all tests job | |
uses: actions/download-artifact@v3 | |
with: | |
path: tools/ | |
- name: Install gcovr | |
run: | | |
sudo apt-get update -y | |
sudo apt-get install -y gcovr | |
- name: Create single coverage file in sonarqube format | |
run: | | |
cd tools | |
# ls -lR . | |
gcovr --add-tracefile "unit-test-coverage/*coverage*.json" --add-tracefile "plgd-device-coverage/*coverage*.json" --add-tracefile "plgd-hub-coverage/*coverage*.json" --sonarqube --output "coverage.xml" --verbose | |
- 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 }}" |