diff --git a/.github/linters/.yaml-lint.yml b/.github/linters/.yaml-lint.yml new file mode 100644 index 0000000..8db852f --- /dev/null +++ b/.github/linters/.yaml-lint.yml @@ -0,0 +1,59 @@ +--- +########################################### +# These are the rules used for # +# linting all the yaml files in the stack # +# NOTE: # +# You can disable line with: # +# # yamllint disable-line # +########################################### +rules: + braces: + level: warning + min-spaces-inside: 0 + max-spaces-inside: 0 + min-spaces-inside-empty: 1 + max-spaces-inside-empty: 5 + brackets: + level: warning + min-spaces-inside: 0 + max-spaces-inside: 0 + min-spaces-inside-empty: 1 + max-spaces-inside-empty: 5 + colons: + level: warning + max-spaces-before: 0 + max-spaces-after: 1 + commas: + level: warning + max-spaces-before: 0 + min-spaces-after: 1 + max-spaces-after: 1 + comments: disable + comments-indentation: disable + document-end: disable + document-start: + level: warning + present: true + empty-lines: + level: warning + max: 2 + max-start: 0 + max-end: 0 + hyphens: + level: warning + max-spaces-after: 1 + indentation: + level: warning + spaces: consistent + indent-sequences: true + check-multi-line-strings: false + key-duplicates: enable + line-length: + level: warning + max: 80 + allow-non-breakable-words: true + allow-non-breakable-inline-mappings: true + new-line-at-end-of-file: disable + new-lines: + type: unix + trailing-spaces: disable \ No newline at end of file diff --git a/.github/workflows/ClangRelWithDebInfoAsan.yml b/.github/workflows/ClangRelWithDebInfoAsan.yml index dd38ba8..812f698 100644 --- a/.github/workflows/ClangRelWithDebInfoAsan.yml +++ b/.github/workflows/ClangRelWithDebInfoAsan.yml @@ -1,61 +1,84 @@ -name: ClangRelWithDebInfoAsan +--- +name: Clang RelWithDebInfoAsan + +on: + push: + branches: + - master + pull_request: + +permissions: read-all env: # Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.) BUILD_TYPE: RelWithDebInfo - CC: clang - CXX: clang + CC: clang + CXX: clang jobs: build: - # The CMake configure and build commands are platform agnostic and should work equally - # well on Windows or Mac. You can convert this to a matrix build if you need - # cross-platform coverage. + # yamllint disable rule:line-length + # The CMake configure and build commands are platform agnostic and should + # work equally well on Windows or Mac. You can convert this to a matrix + # build if you need cross-platform coverage. # See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix + # yamllint enable rule:line-length runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 - - uses: actions/setup-python@v2 - with: - python-version: '3.x' # Version range or exact version of a Python version to use, using SemVer's version range syntax - - - name: update - run: sudo apt-get update + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: '3.x' + # Version range or exact version of a Python version to use, + # using SemVer's version range syntax + + - name: Update package lists + run: sudo apt-get update - - name: Install check - run: sudo apt-get install check + - name: Install check + run: sudo apt-get install check - - name: Install valgrind - run: sudo apt-get install valgrind + - name: Install Valgrind + run: sudo apt-get install valgrind - - name: install conan - run: pip3 install conan - - - name: Create Build Environment - # Some projects don't allow in-source building, so create a separate build directory - # We'll use this as our working directory for all subsequent commands - run: cmake -E make_directory ${{runner.workspace}}/build - - - name: Configure CMake - # Use a bash shell so we can use the same syntax for environment variable - # access regardless of the host operating system - shell: bash - working-directory: ${{runner.workspace}}/build - # Note the current convention is to use the -S and -B options here to specify source - # and build directories, but this is only available with CMake 3.13 and higher. - # The CMake binaries on the Github Actions machines are (as of this writing) 3.12 - run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=RelWithDebInfo -DENABLE_TESTING=ON -DBUILD_SHARED_LIBS=ON -DENABLE_ASAN=ON .. - - - name: Build - working-directory: ${{runner.workspace}}/build - shell: bash - # Execute the build. You can specify a specific target with "--target " - run: cmake --build . --config $BUILD_TYPE - - - name: Test - working-directory: ${{runner.workspace}}/build - shell: bash - # Execute tests defined by the CMake configuration. - # See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail - run: ctest + - name: Install conan + run: pip3 install conan + + - name: Create Build Environment + # Some projects don't allow in-source building, so create a separate + # build directory We'll use this as our working directory for all + # subsequent commands + shell: bash + run: cmake -E make_directory ${{ runner.temp }}/build + + - name: Configure CMake + # Use a bash shell so we can use the same syntax for environment + # variable access regardless of the host operating system + shell: bash + working-directory: ${{ runner.temp }}/build + # Note the current convention is to use the -S and -B options here + # to specify source and build directories, but this is only + # available with CMake 3.13 and higher. The CMake binaries on the + # Github Actions machines are (as of this writing) 3.28 + run: | + cmake "$GITHUB_WORKSPACE" \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ + -DENABLE_TESTING=ON \ + -DBUILD_SHARED_LIBS=ON \ + -DENABLE_ASAN=ON .. + + - name: Build + shell: bash + working-directory: ${{ runner.temp }}/build + # Execute the build. You can specify a specific target + # with "--target " + run: cmake --build . --config "$BUILD_TYPE" + + - name: Test + shell: bash + working-directory: ${{ runner.temp }}/build + # Execute tests defined by the CMake configuration. + # See https://cmake.org/cmake/help/latest/manual/ctest.1.html + # for more detail + run: ctest diff --git a/.github/workflows/GccDebugMemcheck.yml b/.github/workflows/GccDebugMemcheck.yml index b67ec66..59e0749 100644 --- a/.github/workflows/GccDebugMemcheck.yml +++ b/.github/workflows/GccDebugMemcheck.yml @@ -1,3 +1,4 @@ +--- name: GccDebugMemcheck on: @@ -6,105 +7,135 @@ on: - master pull_request: +permissions: read-all + env: # Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.) BUILD_TYPE: Debug jobs: build: - # The CMake configure and build commands are platform agnostic and should work equally - # well on Windows or Mac. You can convert this to a matrix build if you need - # cross-platform coverage. + # yamllint disable rule:line-length + # The CMake configure and build commands are platform agnostic and should + # work equally well on Windows or Mac. You can convert this to a matrix + # build if you need cross-platform coverage. # See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix + # yamllint enable rule:line-length runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 - - uses: actions/setup-python@v2 - with: - python-version: '3.x' # Version range or exact version of a Python version to use, using SemVer's version range syntax + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: '3.x' + # Version range or exact version of a Python version to use, + # using SemVer's version range syntax - - name: update - run: sudo apt-get update + - name: Update package lists + run: sudo apt-get update - - name: Install check - run: sudo apt-get install check + - name: Install check + run: sudo apt-get install check - - name: Install valgrind - run: sudo apt-get install valgrind - - - name: Install lcov - run: sudo apt-get install lcov - - - name: install libxml2 - run: sudo apt-get install libxml2-dev - - ##open62541 - - uses: actions/checkout@master - with: - repository: open62541/open62541 - ref: 1.4 - submodules: recursive - path: ./openRoot + - name: Install Valgrind + run: sudo apt-get install valgrind + + - name: Install lcov + run: sudo apt-get install lcov + + - name: Lnstall libxml2 + run: sudo apt-get install libxml2-dev + + # open62541 + - uses: actions/checkout@v4 + with: + repository: open62541/open62541 + ref: 1.4 + submodules: recursive + path: ./openRoot - - name: Create Build Environment for open62541 - run: cmake -E make_directory ./openRoot/build - - - name: Configure open - shell: bash - working-directory: ./openRoot/build - run: cmake -DCMAKE_BUILD_TYPE=Debug -DUA_NAMESPACE_ZERO=FULL -DBUILD_SHARED_LIBS=ON -DUA_ENABLE_SUBSCRIPTIONS_EVENTS=ON .. - - - name: Build open - working-directory: ./openRoot/build - shell: bash - run: cmake --build . --config $BUILD_TYPE - - - name: install open - working-directory: ./openRoot/build - shell: bash - run: sudo cmake --install . - - - name: Create Build Environment - # Some projects don't allow in-source building, so create a separate build directory - # We'll use this as our working directory for all subsequent commands - run: cmake -E make_directory ${{runner.workspace}}/build - - - name: Configure CMake - # Use a bash shell so we can use the same syntax for environment variable - # access regardless of the host operating system - shell: bash - working-directory: ${{runner.workspace}}/build - # Note the current convention is to use the -S and -B options here to specify source - # and build directories, but this is only available with CMake 3.13 and higher. - # The CMake binaries on the Github Actions machines are (as of this writing) 3.12 - run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=Debug -DENABLE_CONAN=OFF -DENABLE_TESTING=ON -DBUILD_SHARED_LIBS=ON -DENABLE_DATATYPEIMPORT_TEST=ON -DCALC_COVERAGE=ON .. - - - name: Build - working-directory: ${{runner.workspace}}/build - shell: bash - # Execute the build. You can specify a specific target with "--target " - run: cmake --build . --config $BUILD_TYPE - - - - name: Test - working-directory: ${{runner.workspace}}/build - shell: bash - run: make test - - - name: Test with memcheck - working-directory: ${{runner.workspace}}/build - shell: bash - # Execute tests defined by the CMake configuration. - # See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail - run: ctest --verbose --overwrite MemoryCheckCommandOptions="--leak-check=full --error-exitcode=100" -T memcheck - - - name: CalculateCoverage - working-directory: ${{runner.workspace}}/build - shell: bash - run: cmake --build . --target coverage - - - uses: codecov/codecov-action@v1 - with: - file: ${{runner.workspace}}/build/coverage/coverage.info # optional - verbose: true # optional (default = false) + - name: Create Build Environment for open62541 + shell: bash + run: cmake -E make_directory ./openRoot/build + + - name: Configure open + shell: bash + working-directory: ./openRoot/build + run: | + cmake -DCMAKE_BUILD_TYPE=Debug \ + -DUA_NAMESPACE_ZERO=FULL \ + -DBUILD_SHARED_LIBS=ON \ + -DUA_ENABLE_SUBSCRIPTIONS_EVENTS=ON \ + .. + + - name: Build open + shell: bash + working-directory: ./openRoot/build + run: cmake --build . --config "$BUILD_TYPE" + + - name: Install open + shell: bash + working-directory: ./openRoot/build + run: sudo cmake --install . + + - name: Create Build Environment + # Some projects don't allow in-source building, so create a separate + # build directory We'll use this as our working directory for all + # subsequent commands + shell: bash + run: cmake -E make_directory ${{ runner.temp }}/build + + - name: Configure CMake + # Use a bash shell so we can use the same syntax for environment + # variable access regardless of the host operating system + shell: bash + working-directory: ${{ runner.temp }}/build + # Note the current convention is to use the -S and -B options here + # to specify source and build directories, but this is only + # available with CMake 3.13 and higher. The CMake binaries on the + # Github Actions machines are (as of this writing) 3.28 + run: | + cmake "$GITHUB_WORKSPACE" \ + -DCMAKE_BUILD_TYPE=Debug \ + -DENABLE_CONAN=OFF \ + -DENABLE_TESTING=ON \ + -DBUILD_SHARED_LIBS=ON \ + -DENABLE_DATATYPEIMPORT_TEST=ON \ + -DCALC_COVERAGE=ON \ + .. + + - name: Build + shell: bash + working-directory: ${{ runner.temp }}/build + # Execute the build. You can specify a specific target + # with "--target " + run: cmake --build . --config "$BUILD_TYPE" + + + - name: Test + shell: bash + working-directory: ${{ runner.temp }}/build + run: make test + + - name: Test with memcheck + shell: bash + working-directory: ${{ runner.temp }}/build + # Execute tests defined by the CMake configuration. + # See https://cmake.org/cmake/help/latest/manual/ctest.1.html + # for more detail + run: | + ctest \ + --verbose \ + --overwrite \ + MemoryCheckCommandOptions="--leak-check=full --error-exitcode=100" \ + -T memcheck + + - name: CalculateCoverage + shell: bash + working-directory: ${{ runner.temp }}/build + run: cmake --build . --target coverage + + - uses: codecov/codecov-action@v4 + with: + file: ${{ runner.temp }}/build/coverage/coverage.info # optional + verbose: true # optional (default = false) diff --git a/.github/workflows/GccIntegrationTest.yml b/.github/workflows/GccIntegrationTest.yml index ff66f41..5053030 100644 --- a/.github/workflows/GccIntegrationTest.yml +++ b/.github/workflows/GccIntegrationTest.yml @@ -1,3 +1,4 @@ +--- name: IntegrationTests # run only when merged to master @@ -8,83 +9,106 @@ on: pull_request: workflow_dispatch: +permissions: read-all + env: # Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.) BUILD_TYPE: RelWithDebInfo jobs: build: - # The CMake configure and build commands are platform agnostic and should work equally - # well on Windows or Mac. You can convert this to a matrix build if you need - # cross-platform coverage. + # yamllint disable rule:line-length + # The CMake configure and build commands are platform agnostic and should + # work equally well on Windows or Mac. You can convert this to a matrix + # build if you need cross-platform coverage. # See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix + # yamllint enable rule:line-length runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 - - uses: actions/setup-python@v2 - with: - python-version: '3.x' # Version range or exact version of a Python version to use, using SemVer's version range syntax + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: '3.x' + # Version range or exact version of a Python version to use, + # using SemVer's version range syntax - - name: update - run: sudo apt-get update + - name: Update package lists + run: sudo apt-get update - - name: Install check - run: sudo apt-get install check - - - name: Install valgrind - run: sudo apt-get install valgrind + - name: Install check + run: sudo apt-get install check + + - name: Install Valgrind + run: sudo apt-get install valgrind - ##open62541 - - uses: actions/checkout@master - with: - repository: open62541/open62541 - ref: 1.4 - submodules: recursive - path: ./openRoot + # open62541 + - uses: actions/checkout@v4 + with: + repository: open62541/open62541 + ref: 1.4 + submodules: recursive + path: ./openRoot - - name: Create Build Environment for open62541 - run: cmake -E make_directory ./openRoot/build + - name: Create Build Environment for open62541 + run: cmake -E make_directory ./openRoot/build - - name: Configure open - shell: bash - working-directory: ./openRoot/build - run: cmake -DCMAKE_BUILD_TYPE=Debug -DUA_NAMESPACE_ZERO=FULL -DBUILD_SHARED_LIBS=ON -DUA_ENABLE_SUBSCRIPTIONS_EVENTS=ON .. + - name: Configure open + shell: bash + working-directory: ./openRoot/build + run: | + cmake -DCMAKE_BUILD_TYPE=Debug \ + -DUA_NAMESPACE_ZERO=FULL \ + -DBUILD_SHARED_LIBS=ON \ + -DUA_ENABLE_SUBSCRIPTIONS_EVENTS=ON \ + .. - - name: Build open - working-directory: ./openRoot/build - shell: bash - run: cmake --build . --config $BUILD_TYPE + - name: Build open + shell: bash + working-directory: ./openRoot/build + run: cmake --build . --config "$BUILD_TYPE" - - name: install open - working-directory: ./openRoot/build - shell: bash - run: sudo cmake --install . + - name: Install open + shell: bash + working-directory: ./openRoot/build + run: sudo cmake --install . - - name: Create Build Environment - # Some projects don't allow in-source building, so create a separate build directory - # We'll use this as our working directory for all subsequent commands - run: cmake -E make_directory ${{runner.workspace}}/build + - name: Create Build Environment + # Some projects don't allow in-source building, so create a separate + # build directory We'll use this as our working directory for all + # subsequent commands + shell: bash + run: cmake -E make_directory ${{ runner.temp }}/build - - name: Configure CMake - # Use a bash shell so we can use the same syntax for environment variable - # access regardless of the host operating system - shell: bash - working-directory: ${{runner.workspace}}/build - # Note the current convention is to use the -S and -B options here to specify source - # and build directories, but this is only available with CMake 3.13 and higher. - # The CMake binaries on the Github Actions machines are (as of this writing) 3.12 - run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=RelWithDebInfo -DENABLE_CONAN=OFF -DENABLE_TESTING=ON -DBUILD_SHARED_LIBS=ON -DENABLE_INTEGRATION_TEST=ON .. + - name: Configure CMake + # Use a bash shell so we can use the same syntax for environment + # variable access regardless of the host operating system + shell: bash + working-directory: ${{ runner.temp }}/build + # Note the current convention is to use the -S and -B options here + # to specify source and build directories, but this is only + # available with CMake 3.13 and higher. The CMake binaries on the + # Github Actions machines are (as of this writing) 3.28 + run: | + cmake "$GITHUB_WORKSPACE" \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ + -DENABLE_CONAN=OFF \ + -DENABLE_TESTING=ON \ + -DBUILD_SHARED_LIBS=ON \ + -DENABLE_INTEGRATION_TEST=ON \ + .. - - name: Build - working-directory: ${{runner.workspace}}/build - shell: bash - # Execute the build. You can specify a specific target with "--target " - run: cmake --build . --config $BUILD_TYPE + - name: Build + shell: bash + working-directory: ${{ runner.temp }}/build + # Execute the build. You can specify a specific target + # with "--target " + run: cmake --build . --config "$BUILD_TYPE" - - name: Test - working-directory: ${{runner.workspace}}/build - shell: bash - # Execute tests defined by the CMake configuration. - # See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail - run: ctest + - name: Test + shell: bash + working-directory: ${{ runner.temp }}/build + # Execute tests defined by the CMake configuration. + # See https://cmake.org/cmake/help/latest/manual/ctest.1.html + # for more detail + run: ctest diff --git a/.github/workflows/Linter.yml b/.github/workflows/Linter.yml index f5af070..18d0bdf 100644 --- a/.github/workflows/Linter.yml +++ b/.github/workflows/Linter.yml @@ -1,3 +1,4 @@ +--- ########################### ########################### ## Linter GitHub Actions ## @@ -19,6 +20,8 @@ on: - master pull_request: +permissions: read-all + ############### # Set the Job # ############### @@ -37,17 +40,18 @@ jobs: # Checkout the code base # ########################## - name: Checkout Code - uses: actions/checkout@v2 + uses: actions/checkout@v4 with: - # Full git history is needed to get a proper list of changed files within `super-linter` + # Full git history is needed to get a proper + # list of changed files within `super-linter` fetch-depth: 0 ################################ # Run Linter against code base # ################################ - name: Lint Code Base - uses: github/super-linter@v3.17.0 + uses: super-linter/super-linter@v6 env: - VALIDATE_ALL_CODEBASE: true + VALIDATE_ALL_CODEBASE: false DEFAULT_BRANCH: master GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 249a1d0..6539c5c 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -1,3 +1,4 @@ +--- name: WindowsBuildOnly on: @@ -7,32 +8,43 @@ on: pull_request: workflow_dispatch: +permissions: read-all + env: # Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.) BUILD_TYPE: Release jobs: build: - # The CMake configure and build commands are platform agnostic and should work equally - # well on Windows or Mac. You can convert this to a matrix build if you need - # cross-platform coverage. + # yamllint disable rule:line-length + # The CMake configure and build commands are platform agnostic and should + # work equally well on Windows or Mac. You can convert this to a matrix + # build if you need cross-platform coverage. # See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix + # yamllint enable rule:line-length runs-on: windows-2019 steps: - - name: install conan - run: pip install conan==1.59.0 - - - uses: actions/checkout@v2 - with: - path: ./nodesetLoader - - - uses: ilammy/msvc-dev-cmd@v1 - - name: Build nodesetLoader - run: cd ./nodesetLoader && cmake -DCMAKE_BUILD_TYPE=Release -DENABLE_TESTING=ON -DENABLE_CONAN=ON . && cmake --build . - - - name: Test - shell: cmd - # Execute tests defined by the CMake configuration. - # See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail - run: cd ./nodesetLoader && ctest -C Debug --verbose + - name: Install conan + run: pip install conan==1.59.0 + + - uses: actions/checkout@v4 + with: + path: ./nodesetLoader + + - uses: ilammy/msvc-dev-cmd@v1 + - name: Build nodesetLoader + run: | + cd ./nodesetLoader && \ + cmake \ + -DCMAKE_BUILD_TYPE=Release \ + -DENABLE_TESTING=ON \ + -DENABLE_CONAN=ON . && \ + cmake --build . + + - name: Test + shell: cmd + # Execute tests defined by the CMake configuration. + # See https://cmake.org/cmake/help/latest/manual/ctest.1.html + # for more detail + run: cd ./nodesetLoader && ctest -C Debug --verbose