diff --git a/.circleci/config.yml b/.circleci/config.yml deleted file mode 100644 index dd8a3a310..000000000 --- a/.circleci/config.yml +++ /dev/null @@ -1,267 +0,0 @@ -version: 2.1 - -executors: - windows-cpu: - machine: - resource_class: windows.medium - image: windows-server-2019-vs2019:stable - shell: bash.exe - -jobs: - windows_build: - parameters: - gtest_lib_path: - type: string - default: "" - libuv_path: - type: string - default: "" - executor: - name: windows-cpu - steps: - - checkout - - run: - name: Setup Build Env - command: | - PATH=$PATH:"C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/MSBuild/Current/Bin" - eval "$('/C/tools/miniconda3/Scripts/conda.exe' 'shell.bash' 'hook')" - conda create -n py376_build python=3.7.6 - conda activate py376_build - conda install cmake - - run: - name: Install libuv - command: | - eval "$('/C/tools/miniconda3/Scripts/conda.exe' 'shell.bash' 'hook')" - conda activate py376_build - curl https://dist.libuv.org/dist/v1.38.0/libuv-v1.38.0.tar.gz \ - --output libuv-v1.38.0.tar.gz - tar xzvf libuv-v1.38.0.tar.gz - cd libuv-v1.38.0 - mkdir -p build - cd build - mkdir << parameters.libuv_path >> - cmake .. -DCMAKE_INSTALL_PREFIX=<< parameters.libuv_path >> - msbuild.exe INSTALL.vcxproj - - run: - name: Install googletest - command: | - eval "$('/C/tools/miniconda3/Scripts/conda.exe' 'shell.bash' 'hook')" - conda activate py376_build - curl https://codeload.github.com/google/googletest/tar.gz/release-1.10.0 \ - --output googletest-release-1.10.0.tar.gz - tar xzvf googletest-release-1.10.0.tar.gz - cd googletest-release-1.10.0 - mkdir -p build - cd build - mkdir << parameters.gtest_lib_path >> - cmake .. \ - -DCMAKE_INSTALL_PREFIX=<< parameters.gtest_lib_path >> \ - -Dgtest_force_shared_crt=ON - msbuild.exe INSTALL.vcxproj - - run: - name: Build - command: | - eval "$('/C/tools/miniconda3/Scripts/conda.exe' 'shell.bash' 'hook')" - conda activate py376_build - git submodule sync - git submodule update --init --recursive - mkdir build - cd build - cmake .. \ - -DBUILD_TEST=ON \ - -Dlibuv_ROOT=<< parameters.libuv_path >> \ - -DGTEST_LIBRARY=<< parameters.gtest_lib_path >>/lib/gtestd.lib \ - -DGTEST_INCLUDE_DIR=<< parameters.gtest_lib_path >>/include \ - -DGTEST_MAIN_LIBRARY=<< parameters.gtest_lib_path >>/lib/gtest_maind.lib - msbuild.exe ALL_BUILD.vcxproj - - run: - name: Test - command: | - build/gloo/test/Debug/gloo_test.exe - build: - parameters: - docker_image: - type: string - default: "" - apt_get: - type: string - default: "" - cmake_compiler: - type: string - default: "" - cmake_args: - type: string - default: "" - build_openssl: - type: boolean - default: false - docker: - - image: << parameters.docker_image >> - steps: - - checkout - - run: - name: Install apt packages - command: | - apt-get update - apt-get install -y build-essential cmake libibverbs-dev libssl-dev << parameters.apt_get >> - - when: - condition: << parameters.build_openssl >> - steps: - - run: - name: Install openssl - command: | - apt-get install -y wget perl - wget -q https://www.openssl.org/source/openssl-1.1.1b.tar.gz - tar -xzf openssl-1.1.1b.tar.gz - cd openssl-1.1.1b - ./config --prefix=/opt/openssl --openssldir=/opt/openssl/ssl - make -j 2 - make install - - run: - name: Install libuv - command: | - apt-get install -y wget pkg-config - wget \ - -q \ - -O libuv-v1.26.0.tar.gz \ - https://dist.libuv.org/dist/v1.26.0/libuv-v1.26.0.tar.gz - tar xf libuv-v1.26.0.tar.gz - cd libuv-v1.26.0 - mkdir -p build - cd build - cmake ../ \ - -DCMAKE_INSTALL_PREFIX=/usr/local \ - << parameters.cmake_compiler >> - make install - - run: - name: Install googletest - command: | - wget \ - -q \ - -O googletest-release-1.10.0.tar.gz \ - https://github.com/google/googletest/archive/release-1.10.0.tar.gz - tar xf googletest-release-1.10.0.tar.gz - cd googletest-release-1.10.0 - mkdir -p build - cd build - cmake ../ \ - -DCMAKE_INSTALL_PREFIX=/usr/local \ - << parameters.cmake_compiler >> - make install - - run: - name: Build - command: | - mkdir build - cd build - cmake ../ \ - -DCMAKE_VERBOSE_MAKEFILE=ON \ - -DBUILD_TEST=ON \ - << parameters.cmake_compiler >> \ - << parameters.cmake_args >> - make - - run: - name: Test - command: | - export TSAN_OPTIONS="suppressions=$PWD/.tsan-suppressions" - - # Exclude large broadcast test because it OOMs on CircleCI. - EXCLUDE="LargeBroadcast/BroadcastTest*" - - # Exclude multi-process transport tests because - # they appear to have some crashing problem... - # EXCLUDE="Transport/TransportMultiProcTest*:$EXCLUDE" - - # Exclude memory leak test for tsan job (false positive). - if [[ "$CIRCLE_JOB" =~ tsan ]]; then - EXCLUDE="*MemoryTest.ManySlotsNoLeaks*:$EXCLUDE" - fi - - build/gloo/test/gloo_test --gtest_filter="-$EXCLUDE" - -workflows: - build: - jobs: - - windows_build: - name: windows_build - gtest_lib_path: c:/googletest - libuv_path: c:/libuv - - build: - name: gcc5 - docker_image: ubuntu:18.04 - apt_get: "gcc-5 g++-5" - cmake_compiler: -DCMAKE_C_COMPILER=gcc-5 -DCMAKE_CXX_COMPILER=g++-5 - - build: - name: gcc5-all-transports - docker_image: ubuntu:18.04 - apt_get: "gcc-5 g++-5" - cmake_compiler: -DCMAKE_C_COMPILER=gcc-5 -DCMAKE_CXX_COMPILER=g++-5 - cmake_args: -DUSE_IBVERBS=ON -DUSE_LIBUV=ON -DUSE_TCP_OPENSSL_LINK=ON - - build: - name: gcc5-load-openssl - docker_image: ubuntu:18.04 - apt_get: "gcc-5 g++-5" - cmake_compiler: -DCMAKE_C_COMPILER=gcc-5 -DCMAKE_CXX_COMPILER=g++-5 - cmake_args: -DUSE_TCP_OPENSSL_LOAD=ON - - build: - name: gcc7 - docker_image: ubuntu:18.04 - apt_get: "gcc-7 g++-7" - cmake_compiler: -DCMAKE_C_COMPILER=gcc-7 -DCMAKE_CXX_COMPILER=g++-7 - - build: - name: gcc7-all-transports - docker_image: ubuntu:18.04 - apt_get: "gcc-7 g++-7" - cmake_compiler: -DCMAKE_C_COMPILER=gcc-7 -DCMAKE_CXX_COMPILER=g++-7 - cmake_args: -DUSE_IBVERBS=ON -DUSE_LIBUV=ON -DUSE_TCP_OPENSSL_LINK=ON - - build: - name: gcc7-load-openssl - docker_image: ubuntu:18.04 - apt_get: "gcc-7 g++-7" - cmake_compiler: -DCMAKE_C_COMPILER=gcc-7 -DCMAKE_CXX_COMPILER=g++-7 - cmake_args: -DUSE_TCP_OPENSSL_LOAD=ON - - build: - name: clang6 - docker_image: ubuntu:18.04 - apt_get: "clang-6.0" - cmake_compiler: -DCMAKE_C_COMPILER=clang-6.0 -DCMAKE_CXX_COMPILER=clang++-6.0 - - build: - name: clang6-all-transports - docker_image: ubuntu:18.04 - apt_get: "clang-6.0" - cmake_compiler: -DCMAKE_C_COMPILER=clang-6.0 -DCMAKE_CXX_COMPILER=clang++-6.0 - cmake_args: -DUSE_IBVERBS=ON -DUSE_LIBUV=ON -DUSE_TCP_OPENSSL_LINK=ON - - build: - name: clang6-load-openssl - docker_image: ubuntu:18.04 - apt_get: "clang-6.0" - cmake_compiler: -DCMAKE_C_COMPILER=clang-6.0 -DCMAKE_CXX_COMPILER=clang++-6.0 - cmake_args: -DUSE_TCP_OPENSSL_LOAD=ON - - build: - name: cuda9.2 - docker_image: nvidia/cuda:9.2-devel-ubuntu18.04 - cmake_args: -DUSE_CUDA=ON - - build: - name: cuda9.2-all-transports - docker_image: nvidia/cuda:9.2-devel-ubuntu18.04 - cmake_args: -DUSE_IBVERBS=ON -DUSE_LIBUV=ON -DUSE_TCP_OPENSSL_LINK=ON -DUSE_CUDA=ON - - build: - name: cuda10.1 - docker_image: nvidia/cuda:10.1-devel-ubuntu18.04 - cmake_args: -DUSE_CUDA=ON - - build: - name: cuda10.1-all-transports - docker_image: nvidia/cuda:10.1-devel-ubuntu18.04 - cmake_args: -DUSE_IBVERBS=ON -DUSE_LIBUV=ON -DUSE_TCP_OPENSSL_LINK=ON -DUSE_CUDA=ON - - build: - name: cuda11.7-all-transports - apt_get: "gcc-9 g++-9" - docker_image: nvidia/cuda:11.7.1-devel-ubuntu22.04 - cmake_compiler: -DCMAKE_C_COMPILER=gcc-9 -DCMAKE_CXX_COMPILER=g++-9 -DCMAKE_CUDA_HOST_COMPILER=g++-9 - cmake_args: -DUSE_IBVERBS=ON -DUSE_LIBUV=ON -DUSE_TCP_OPENSSL_LINK=ON -DUSE_CUDA=ON -DGLOO_USE_CUDA_TOOLKIT=ON -DOPENSSL_ROOT_DIR=/opt/openssl/ - build_openssl: true - - build: - name: tsan-all-transports - docker_image: ubuntu:18.04 - apt_get: "gcc-7 g++-7" - cmake_compiler: -DCMAKE_C_COMPILER=gcc-7 -DCMAKE_CXX_COMPILER=g++-7 - cmake_args: -DUSE_IBVERBS=ON -DUSE_LIBUV=ON -DUSE_TCP_OPENSSL_LINK=ON -DCMAKE_BUILD_TYPE=Debug -DSANITIZE=thread diff --git a/.github/config/lint/.yaml-lint.yml b/.github/config/lint/.yaml-lint.yml new file mode 100644 index 000000000..ad018df52 --- /dev/null +++ b/.github/config/lint/.yaml-lint.yml @@ -0,0 +1,10 @@ +--- +extends: default + +rules: + # 120 chars should be enough, but don't fail if a line is longer + line-length: + max: 120 + level: warning + comments: + min-spaces-from-content: 2 diff --git a/.github/workflows/build_linux.yaml b/.github/workflows/build-linux.yml similarity index 81% rename from .github/workflows/build_linux.yaml rename to .github/workflows/build-linux.yml index ea25d3a22..30e103488 100644 --- a/.github/workflows/build_linux.yaml +++ b/.github/workflows/build-linux.yml @@ -1,5 +1,7 @@ +--- name: CI-Linux -on: + +on: # yamllint disable-line rule:truthy push: branches: - main @@ -7,13 +9,18 @@ on: branches: - main +permissions: read-all + jobs: build-linux: name: build on ubuntu runs-on: ubuntu-latest strategy: matrix: - cmake_args: ["", "-DUSE_IBVERBS=ON -DUSE_LIBUV=ON -DUSE_TCP_OPENSSL_LINK=ON", "-DUSE_TCP_OPENSSL_LOAD=ON"] + cmake_args: + - "" + - "-DUSE_IBVERBS=ON -DUSE_LIBUV=ON -DUSE_TCP_OPENSSL_LINK=ON" + - "-DUSE_TCP_OPENSSL_LOAD=ON" steps: - name: Checkout code @@ -24,7 +31,8 @@ jobs: - name: Install apt packages run: | sudo apt-get install -y wget perl build-essential cmake libibverbs-dev libssl-dev - - name: Install openssl # TODO: upgrade to latest + # TODO: upgrade to latest + - name: Install openssl run: | sudo wget -q https://www.openssl.org/source/openssl-1.1.1b.tar.gz sudo tar -xzf openssl-1.1.1b.tar.gz @@ -44,7 +52,8 @@ jobs: sudo make install - name: Install googletest run: | - wget -q -O googletest-release-1.15.2.tar.gz https://github.com/google/googletest/releases/download/v1.15.2/googletest-1.15.2.tar.gz + wget -q -O googletest-release-1.15.2.tar.gz \ + https://github.com/google/googletest/releases/download/v1.15.2/googletest-1.15.2.tar.gz tar xf googletest-release-1.15.2.tar.gz cd googletest-1.15.2 mkdir -p build @@ -57,8 +66,6 @@ jobs: sudo apt-get update sudo apt install build-essential sudo apt-get install -y gcc g++ - # export CC=gcc-${{ matrix.gcc-version }} - # export CXX=g++-${{ matrix.gcc-version }} mkdir -p build cd build cmake ../ -DCMAKE_VERBOSE_MAKEFILE=ON -DBUILD_TEST=ON ${{matrix.cmake_args}} -DOPENSSL_ROOT_DIR=/opt/openssl/ diff --git a/.github/workflows/build.yaml b/.github/workflows/build-windows.yml similarity index 81% rename from .github/workflows/build.yaml rename to .github/workflows/build-windows.yml index d996f2cce..26d0d4158 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build-windows.yml @@ -1,10 +1,15 @@ -name: CI -on: +--- +# This runs the windows CI +name: Windows CI + +on: # yamllint disable-line rule:truthy push: branches: - main pull_request: +permissions: read-all + jobs: windows_build: runs-on: windows-latest @@ -20,12 +25,13 @@ jobs: - name: Checkout code uses: actions/checkout@v4 - name: Set up Python 3.10 - uses: actions/setup-python@v3 + uses: actions/setup-python@v5 with: - python-version: '3.10' + python-version: "3.10" - name: Add conda to system path run: | - # $CONDA is an environment variable pointing to the root of the miniconda directory + # $CONDA is an environment variable pointing to the root of the + # miniconda directory echo $CONDA/bin >> $GITHUB_PATH - name: Conda info shell: bash -l {0} @@ -49,7 +55,8 @@ jobs: - name: Install googletest run: | conda activate py376_build - curl https://codeload.github.com/google/googletest/tar.gz/release-1.10.0 --output googletest-release-1.10.0.tar.gz + curl https://codeload.github.com/google/googletest/tar.gz/release-1.10.0 --output ` + googletest-release-1.10.0.tar.gz tar xzvf googletest-release-1.10.0.tar.gz cd googletest-release-1.10.0 mkdir -p build @@ -68,7 +75,10 @@ jobs: git submodule update --init --recursive mkdir -p build cd build - cmake .. -DBUILD_TEST=ON -Dlibuv_ROOT=${{ env.libuv_path }} -DGTEST_LIBRARY=${{ env.gtest_lib_path }}/lib/gtestd.lib -DGTEST_INCLUDE_DIR=${{ env.gtest_lib_path }}/include -DGTEST_MAIN_LIBRARY=${{ env.gtest_lib_path }}/lib/gtest_maind.lib + cmake .. -DBUILD_TEST=ON -Dlibuv_ROOT=${{ env.libuv_path }} ` + -DGTEST_LIBRARY=${{ env.gtest_lib_path }}/lib/gtestd.lib ` + -DGTEST_INCLUDE_DIR=${{ env.gtest_lib_path }}/include ` + -DGTEST_MAIN_LIBRARY=${{ env.gtest_lib_path }}/lib/gtest_maind.lib msbuild ALL_BUILD.vcxproj - name: Test run: | diff --git a/.github/workflows/super-linter.yml b/.github/workflows/super-linter.yml new file mode 100644 index 000000000..c09cf00ae --- /dev/null +++ b/.github/workflows/super-linter.yml @@ -0,0 +1,36 @@ +# This workflow executes several linters on changed files based on languages +# used in your code base whenever you push a code or open a pull request. +# +# You can adjust the behavior by modifying this file. +# For more information, see: +# https://github.com/super-linter/super-linter +--- +name: Lint Code Base + +on: # yamllint disable-line rule:truthy + push: + branches: ["main"] + pull_request: + branches: ["main"] + +permissions: read-all +jobs: + run-lint: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + with: + # Full git history is needed to get a proper list of changed files + # within `super-linter` + fetch-depth: 0 + - name: Super-linter + uses: super-linter/super-linter@v7.2.1 # x-release-please-version + env: + LINTER_RULES_PATH: .github/config/lint + # To report GitHub Actions status checks + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + VALIDATE_ALL_CODEBASE: false + DEFAULT_BRANCH: "main" + # disable JSCPD (copy-paste checker) + VALIDATE_JSCPD: false