name: CI on: push: branches: - master pull_request: branches: - master jobs: build-linux: name: Build Linux runs-on: ubuntu-latest strategy: matrix: cxx: [g++-9, clang++-9] steps: - uses: actions/checkout@v1 - name: cmake run: CXX=${{ matrix.cxx }} cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release . - name: build run: make -j4 - name: test run: ./flattests - name: upload build artifacts uses: actions/upload-artifact@v1 with: name: Linux flatc binary ${{ matrix.cxx }} path: flatc build-windows: name: Build Windows runs-on: windows-latest steps: - uses: actions/checkout@v1 - name: Add msbuild to PATH uses: microsoft/setup-msbuild@v1.0.2 - name: cmake run: cmake -G "Visual Studio 16 2019" -A x64 -DCMAKE_BUILD_TYPE=Release -DFLATBUFFERS_BUILD_CPP17=ON . - name: build run: msbuild.exe FlatBuffers.sln /p:Configuration=Release /p:Platform=x64 - name: test run: Release\flattests.exe - name: upload build artifacts uses: actions/upload-artifact@v1 with: name: Windows flatc binary path: Release\flatc.exe build-windows-2017: name: Build Windows 2017 runs-on: windows-2016 steps: - uses: actions/checkout@v1 - name: Add msbuild to PATH uses: microsoft/setup-msbuild@v1.0.2 - name: cmake run: cmake -G "Visual Studio 15 2017" -A x64 -DCMAKE_BUILD_TYPE=Release . - name: build run: msbuild.exe FlatBuffers.sln /p:Configuration=Release /p:Platform=x64 - name: test run: Release\flattests.exe build-mac: name: Build Mac runs-on: macos-latest steps: - uses: actions/checkout@v1 - name: cmake run: cmake -G "Xcode" -DCMAKE_BUILD_TYPE=Release -DFLATBUFFERS_FLATC_EXECUTABLE=_build/Release/flatc . - name: build # NOTE: we need this _build dir to not have xcodebuild's default ./build dir clash with the BUILD file. run: xcodebuild -toolchain clang -configuration Release -target flattests SYMROOT=$(PWD)/_build - name: test run: _build/Release/flattests - name: upload build artifacts uses: actions/upload-artifact@v1 with: name: Mac flatc binary path: _build/Release/flatc build-android: name: Build Android (on Linux) runs-on: ubuntu-latest steps: - uses: actions/checkout@v1 - name: set up JDK 1.8 uses: actions/setup-java@v1 with: java-version: 1.8 - name: set up flatc run: | cmake -DFLATBUFFERS_BUILD_TESTS=OFF -DFLATBUFFERS_BUILD_FLATLIB=OFF -DFLATBUFFERS_BUILD_FLATHASH=OFF . make echo "${PWD}" >> $GITHUB_PATH - name: build working-directory: android run: bash ./gradlew clean build build-generator: name: Check Generated Code runs-on: ubuntu-latest strategy: matrix: cxx: [g++-9, clang++-9] steps: - uses: actions/checkout@v1 - name: cmake run: CXX=${{ matrix.cxx }} cmake -G "Unix Makefiles" -DFLATBUFFERS_BUILD_TESTS=OFF -DCMAKE_BUILD_TYPE=Release . && make -j4 - name: Generate run: bash scripts/check-generate-code.sh && bash scripts/check-grpc-generated-code.sh build-java: name: Build Java runs-on: ubuntu-latest steps: - uses: actions/checkout@v1 - name: test working-directory: tests run: bash JavaTest.sh build-kotlin: name: Build Kotlin runs-on: macos-latest steps: - name: Checkout uses: actions/checkout@v1 - name: Build working-directory: kotlin run: ./gradlew clean build allTests - name: Run Benchmark working-directory: kotlin run: ./gradlew benchmark - name: Generate Benchmark Report working-directory: kotlin run: | ./gradlew jmhReport; mv benchmark/build/reports/benchmarks/main/* benchmark_latest - name: Archive benchmark report uses: actions/upload-artifact@v1 with: name: Kotlin Benchmark Report path: kotlin/benchmark_latest build-rust: name: Build Rust runs-on: ubuntu-latest steps: - uses: actions/checkout@v1 - name: test working-directory: tests run: bash RustTest.sh #build-js: # name: Build JS # runs-on: ubuntu-latest # steps: # - uses: actions/checkout@v1 # - name: flatc # # FIXME: make test script not rely on flatc # run: cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DFLATBUFFERS_BUILD_TESTS=OFF -DFLATBUFFERS_INSTALL=OFF -DFLATBUFFERS_BUILD_FLATLIB=OFF -DFLATBUFFERS_BUILD_FLATHASH=OFF . && make -j4 # - name: test # working-directory: tests # run: bash JavaScriptTest.sh build-python: name: Build Python runs-on: ubuntu-latest steps: - uses: actions/checkout@v1 - name: test working-directory: tests run: bash PythonTest.sh build-go: name: Build Go runs-on: ubuntu-latest steps: - uses: actions/checkout@v1 - name: flatc # FIXME: make test script not rely on flatc run: cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DFLATBUFFERS_BUILD_TESTS=OFF -DFLATBUFFERS_INSTALL=OFF -DFLATBUFFERS_BUILD_FLATLIB=OFF -DFLATBUFFERS_BUILD_FLATHASH=OFF . && make -j4 - name: test working-directory: tests run: bash GoTest.sh #build-csharp: # name: Build CSharp # runs-on: ubuntu-latest # steps: # - uses: actions/checkout@v1 # - name: test # working-directory: tests/FlatBuffers.Test # run: bash NetTest.sh #build-php: # name: Build PHP # runs-on: ubuntu-latest # steps: # - uses: actions/checkout@v1 # - name: flatc # # FIXME: make test script not rely on flatc # run: cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DFLATBUFFERS_BUILD_TESTS=OFF -DFLATBUFFERS_INSTALL=OFF -DFLATBUFFERS_BUILD_FLATLIB=OFF -DFLATBUFFERS_BUILD_FLATHASH=OFF . && make -j4 # - name: test # working-directory: tests # run: | # php phpTest.php # sh phpUnionVectorTest.sh build-swift: name: Build Swift runs-on: ubuntu-latest steps: - uses: actions/checkout@v1 - name: test working-directory: tests/FlatBuffers.Test.Swift run: sh SwiftTest.sh build-ts: name: Build TS runs-on: ubuntu-latest steps: - uses: actions/checkout@v1 - name: compile run: npm run compile - name: test working-directory: tests run: sh TypeScriptTest.sh