diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 000000000..5af73a476 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,40 @@ +name: CI + +on: + push: + branches: + - master + pull_request: + branches: + - '*' + +env: + BUILD_TYPE: RelWithDebInfo + + +jobs: + win_build_test_network: + name: Test on node windows-latest + runs-on: windows-latest + + steps: + - name: Check out repository + uses: actions/checkout@v2 + - name: Install cert + run: | + curl https://raw.githubusercontent.com/mock-server/mockserver/master/mockserver-core/src/main/resources/org/mockserver/socket/CertificateAuthorityCertificate.pem --output mock-server-cert.cer + Import-Certificate -FilePath mock-server-cert.cer -CertStoreLocation Cert:\LocalMachine\Root + - name: Make dir + run: mkdir build && ls -la ./ + shell: bash + - name: Compile SDK for Windows + run: cmake .. -G "Visual Studio 16 2019" -A x64 -DCMAKE_BUILD_TYPE=$BUILD_TYPE + working-directory: build + shell: bash + - name: Build SDK for Windows + run: cmake --build . --config $BUILD_TYPE + working-directory: build + shell: bash + - name: Test SDK for Windows + run: scripts/windows/test_fv_network.sh + shell: bash diff --git a/.travis.yml b/.travis.yml index 102b31577..553215e26 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,18 +6,23 @@ env: - LD_PRELOAD=/lib/x86_64-linux-gnu/libSegFault.so - SEGFAULT_SIGNALS=all - WORKSPACE=$TRAVIS_BUILD_DIR -addons: - apt: - packages: - - libboost-all-dev - - libssl-dev - - libcurl4-openssl-dev matrix: - compiler: gcc cache: ccache env: BUILD_TYPE=COVERAGE WORKSPACE=$TRAVIS_BUILD_DIR name: Linux Build using gcc & tests & code coverage - script: $WORKSPACE/scripts/misc/cpplint_ci.sh && $WORKSPACE/scripts/linux/psv/build_psv.sh && $WORKSPACE/scripts/linux/psv/travis_test_psv.sh + script: $WORKSPACE/scripts/linux/psv/build_psv.sh && $WORKSPACE/scripts/linux/psv/travis_test_psv.sh + addons: + apt: + packages: + - libboost-all-dev + - libssl-dev + - libcurl4-openssl-dev + - language: minimal + name: "C++ Lint checker script" + script: $WORKSPACE/scripts/misc/cpplint_ci.sh + if: type = pull_request branches: only: - master + diff --git a/README.md b/README.md index af384cb15..08504f28b 100644 --- a/README.md +++ b/README.md @@ -53,8 +53,8 @@ The table below lists the platforms on which the HERE Data SDK for C++ has been | Platform | Minimum requirement | | :------------------------- | :---------------------- | -| Ubuntu | GCC 7.4 and Clang 7.0 | -| Embedded Linux (32/64 bit) | GCC-arm/GCC-aarch64 5.4 | +| Ubuntu Linux | GCC 7.4 and Clang 7.0 | +| Embedded Linux (32 bit) | GCC 7.4 armhf | | Windows | MSVC++ 2017 | | macOS | Apple Clang 11.0.0 | | iOS | Xcode 11.1, Swift 5.0 | diff --git a/azure-pipelines.yml b/azure-pipelines.yml index d3ac66a6b..e97e45872 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -22,11 +22,21 @@ jobs: displayName: 'Commit checker script' - job: Windows_build pool: - vmImage: 'vs2017-win2016' + vmImage: 'windows-latest' steps: - - bash: scripts/windows/build.sh + - bash: curl https://raw.githubusercontent.com/mock-server/mockserver/master/mockserver-core/src/main/resources/org/mockserver/socket/CertificateAuthorityCertificate.pem --output mock-server-cert.cer + displayName: 'Get cert' + - powershell: Import-Certificate -FilePath mock-server-cert.cer -CertStoreLocation Cert:\LocalMachine\Root + displayName: 'Import cert' + - powershell: dir Cert:\CurrentUser\Root + displayName: 'Check cert CurrentUser' + - powershell: dir Cert:\LocalMachine\Root + displayName: 'Check cert LocalMachine' + - bash: whoami && scripts/windows/build.sh displayName: 'Windows Build' - + - bash: sudo scripts/windows/test_fv_network.sh + displayName: 'Windows FV Network test' + condition: in(variables['Build.Reason'], 'Schedule', 'Manual') - job: MacOS_build pool: vmImage: 'macOS-10.14' diff --git a/scripts/misc/cpplint_ci.sh b/scripts/misc/cpplint_ci.sh index 10a78e26b..719b84f04 100755 --- a/scripts/misc/cpplint_ci.sh +++ b/scripts/misc/cpplint_ci.sh @@ -31,9 +31,11 @@ else printf "Currently in %s branch. Running cpplint.\n" "$CURRENT_BRANCH" fi +set +e # Get affected files and filter source files FILES=$(git diff-tree --no-commit-id --name-only -r master "$CURRENT_BRANCH" \ | grep '\.c\|\.cpp\|\.cxx\|\.h\|\.hpp\|\.hxx') +set -e if [ -z "$FILES" ]; then printf "No affected files, exiting.\n" diff --git a/scripts/windows/build.sh b/scripts/windows/build.sh index 5f43d6d09..431ac043f 100755 --- a/scripts/windows/build.sh +++ b/scripts/windows/build.sh @@ -17,9 +17,8 @@ # SPDX-License-Identifier: Apache-2.0 # License-Filename: LICENSE - [[ -d "build" ]] && rm -rf build mkdir build && cd build -cmake .. -G "Visual Studio 15 2017 Win64" \ +cmake .. -G "Visual Studio 16 2019" -A "x64" \ -DCMAKE_BUILD_TYPE=$BUILD_TYPE cmake --build . --config $BUILD_TYPE diff --git a/scripts/windows/test_fv_network.sh b/scripts/windows/test_fv_network.sh new file mode 100755 index 000000000..adbae9147 --- /dev/null +++ b/scripts/windows/test_fv_network.sh @@ -0,0 +1,64 @@ +#!/bin/bash -ex +# +# Copyright (C) 2020 HERE Europe B.V. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 +# License-Filename: LICENSE + +# Set workspace location +if [[ ${CI_PROJECT_DIR} == "" ]]; then + export CI_PROJECT_DIR=`pwd` +fi + +[[ -d "reports" ]] && rm -rf reports + +echo ">>> Installing mock server SSL certificate into OS... >>>" +curl https://raw.githubusercontent.com/mock-server/mockserver/master/mockserver-core/src/main/resources/org/mockserver/socket/CertificateAuthorityCertificate.pem --output mock-server-cert.cer +certutil -enterprise -f -v -addstore "Root" mock-server-cert.cer +certutil -enterprise -f -v -addstore "CA" mock-server-cert.cer +certutil -user -f -v -addstore "Root" mock-server-cert.cer +certutil -user -f -v -addstore "CA" mock-server-cert.cer + +echo ">>> Starting Mock Server... >>>" +pushd tests/utils/mock-server + npm install + node server.js & export SERVER_PID=$! +popd + +# Node can start server in 1 second, but not faster. +# Add waiter for server to be started. No other way to solve that. +# Curl returns code 1 - means server still down. Curl returns 0 when server is up +RC=1 +while [[ ${RC} -ne 0 ]]; +do + set +e + curl -s http://localhost:1080 + RC=$? + sleep 0.2 + set -e +done + +echo ">>> Start network tests ... >>>" +$CI_PROJECT_DIR/build/tests/functional/network/RelWithDebInfo/olp-cpp-sdk-functional-network-tests \ + --gtest_output="xml:$CI_PROJECT_DIR/reports/olp-functional-network-test-report.xml" +result=$? +echo ">>> Finished network tests >>>" + +# Terminate the mock server +kill -TERM $SERVER_PID + +wait + +exit ${result}