501 lines
13 KiB
YAML
501 lines
13 KiB
YAML
name: "Build"
|
|
|
|
on:
|
|
push:
|
|
branches: ["*"]
|
|
pull_request:
|
|
branches: ["*"]
|
|
|
|
env:
|
|
BUILD_DEPS: automake bison flex git libboost-all-dev libevent-dev libssl-dev libtool make pkg-config
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
jobs:
|
|
# TODO windows and macos
|
|
compiler:
|
|
strategy:
|
|
matrix:
|
|
os: [ubuntu-20.04, ubuntu-22.04]
|
|
runs-on: ${{ matrix.os }}
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
|
|
- name: Install dependencies
|
|
run: |
|
|
sudo apt-get update -yq
|
|
sudo apt-get install -y --no-install-recommends g++ $BUILD_DEPS
|
|
|
|
- name: Run bootstrap
|
|
run: ./bootstrap.sh
|
|
|
|
- name: Run configure
|
|
run: ./configure --disable-debug --disable-tests --disable-libs
|
|
|
|
- name: Run make
|
|
run: make -j$(nproc)
|
|
|
|
- name: Run install
|
|
run: make install
|
|
|
|
- name: Run thrift version
|
|
run: /usr/local/bin/thrift -version
|
|
|
|
# only upload while building ubuntu-20.04
|
|
- name: Archive built thrift compiler
|
|
if: matrix.os == 'ubuntu-20.04'
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: thrift-compiler
|
|
path: compiler/cpp/thrift
|
|
retention-days: 3
|
|
|
|
lib-go:
|
|
needs: compiler
|
|
runs-on: ubuntu-20.04
|
|
strategy:
|
|
matrix:
|
|
go:
|
|
- '1.18'
|
|
- '1.19'
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
|
|
- uses: actions/setup-go@v3
|
|
with:
|
|
go-version: ${{ matrix.go }}
|
|
|
|
- name: Install dependencies
|
|
run: |
|
|
sudo apt-get update -yq
|
|
sudo apt-get install -y --no-install-recommends $BUILD_DEPS
|
|
|
|
- name: Run bootstrap
|
|
run: ./bootstrap.sh
|
|
|
|
- name: Run configure
|
|
run: |
|
|
./configure \
|
|
--disable-debug \
|
|
--disable-dependency-tracking \
|
|
--without-cpp \
|
|
--without-c_glib \
|
|
--without-java \
|
|
--without-kotlin \
|
|
--without-python \
|
|
--without-py3 \
|
|
--without-ruby \
|
|
--without-haxe \
|
|
--without-netstd \
|
|
--without-perl \
|
|
--without-php \
|
|
--without-php_extension \
|
|
--without-dart \
|
|
--without-erlang \
|
|
--with-go \
|
|
--without-d \
|
|
--without-nodejs \
|
|
--without-nodets \
|
|
--without-lua \
|
|
--without-rs \
|
|
--without-swift
|
|
|
|
- uses: actions/download-artifact@v3
|
|
with:
|
|
name: thrift-compiler
|
|
path: compiler/cpp
|
|
|
|
- name: Run thrift-compiler
|
|
run: |
|
|
chmod a+x compiler/cpp/thrift
|
|
compiler/cpp/thrift -version
|
|
|
|
- name: Run make for go
|
|
run: make -C lib/go
|
|
|
|
- name: Run make check for lib/go
|
|
run: make -C lib/go check
|
|
|
|
- name: Run make check for test/go
|
|
run: make -C test/go check
|
|
|
|
- name: Run make precross for go test
|
|
run: make -C test/go precross
|
|
|
|
- name: Upload go precross artifacts
|
|
if: matrix.go == '1.19'
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: go-precross
|
|
if-no-files-found: error
|
|
path: |
|
|
test/go/bin/*
|
|
retention-days: 3
|
|
|
|
lib-java-kotlin:
|
|
needs: compiler
|
|
runs-on: ubuntu-20.04
|
|
env:
|
|
GRADLE_VERSION: 7.5.1
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
|
|
- uses: actions/setup-java@v3
|
|
with:
|
|
distribution: temurin
|
|
java-version: 17
|
|
cache: "gradle"
|
|
|
|
- name: Install dependencies
|
|
run: |
|
|
sudo apt-get update -yq
|
|
sudo apt-get install -y --no-install-recommends $BUILD_DEPS
|
|
sudo apt-get install -y wget unzip ant maven
|
|
|
|
- name: Setup gradle
|
|
run: |
|
|
wget https://services.gradle.org/distributions/gradle-$GRADLE_VERSION-bin.zip -q -O /tmp/gradle-$GRADLE_VERSION-bin.zip
|
|
(echo "f6b8596b10cce501591e92f229816aa4046424f3b24d771751b06779d58c8ec4 /tmp/gradle-$GRADLE_VERSION-bin.zip" | sha256sum -c -)
|
|
unzip -d /tmp /tmp/gradle-$GRADLE_VERSION-bin.zip
|
|
sudo mv /tmp/gradle-$GRADLE_VERSION /usr/local/gradle
|
|
sudo ln -s /usr/local/gradle/bin/gradle /usr/local/bin
|
|
gradle --version
|
|
|
|
- name: Run spotlessCheck for Java
|
|
run: |
|
|
cd lib/java
|
|
gradle spotlessCheck
|
|
|
|
- name: Run ktfmtCheck for Kotlin
|
|
run: |
|
|
cd lib/kotlin
|
|
gradle ktfmtCheck
|
|
|
|
- name: Run bootstrap
|
|
run: ./bootstrap.sh
|
|
|
|
- name: Run configure
|
|
run: |
|
|
./configure \
|
|
--disable-debug \
|
|
--disable-tests \
|
|
--disable-dependency-tracking \
|
|
--without-cpp \
|
|
--without-c_glib \
|
|
--with-java \
|
|
--with-kotlin \
|
|
--without-python \
|
|
--without-py3 \
|
|
--without-ruby \
|
|
--without-haxe \
|
|
--without-netstd \
|
|
--without-perl \
|
|
--without-php \
|
|
--without-php_extension \
|
|
--without-dart \
|
|
--without-erlang \
|
|
--without-go \
|
|
--without-d \
|
|
--without-nodejs \
|
|
--without-nodets \
|
|
--without-lua \
|
|
--without-rs \
|
|
--without-swift
|
|
|
|
- uses: actions/download-artifact@v3
|
|
with:
|
|
name: thrift-compiler
|
|
path: compiler/cpp
|
|
|
|
- name: Run thrift-compiler
|
|
run: |
|
|
chmod a+x compiler/cpp/thrift
|
|
compiler/cpp/thrift -version
|
|
|
|
- name: Run make for java
|
|
run: make -C lib/java
|
|
|
|
# this will invoke publishToMavenLocal and install locally
|
|
- name: Run make install for java
|
|
run: make -C lib/java install
|
|
|
|
- name: Upload java libthrift artifacts
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: libthrift
|
|
if-no-files-found: error
|
|
path: ~/.m2/repository/org/apache/thrift
|
|
|
|
- name: Run make check for java
|
|
run: make -C lib/java check
|
|
|
|
- name: Run make precross for java
|
|
run: make -C lib/java precross
|
|
|
|
- name: Upload java precross artifacts
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: java-precross
|
|
if-no-files-found: error
|
|
path: |
|
|
lib/java/build/functionalTestJar/
|
|
lib/java/build/runclient
|
|
lib/java/build/runnonblockingserver
|
|
lib/java/build/runserver
|
|
lib/java/build/runservletserver
|
|
retention-days: 3
|
|
|
|
- name: Run make for kotlin
|
|
run: make -C lib/kotlin
|
|
|
|
- name: Run make check for kotlin
|
|
run: make -C lib/kotlin check
|
|
|
|
- name: Run make precross for kotlin
|
|
run: make -C lib/kotlin precross
|
|
|
|
- name: Upload kotlin precross artifacts
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: kotlin-precross
|
|
if-no-files-found: error
|
|
path: |
|
|
lib/kotlin/cross-test-client/build/install/TestClient/
|
|
lib/kotlin/cross-test-server/build/install/TestServer/
|
|
retention-days: 3
|
|
|
|
lib-swift:
|
|
needs: compiler
|
|
runs-on: ubuntu-20.04
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
|
|
- name: Run bootstrap
|
|
run: ./bootstrap.sh
|
|
|
|
- name: Run configure
|
|
run: |
|
|
./configure \
|
|
--disable-debug \
|
|
--disable-tests \
|
|
--disable-dependency-tracking \
|
|
--without-cpp \
|
|
--without-c_glib \
|
|
--without-java \
|
|
--without-kotlin \
|
|
--without-python \
|
|
--without-py3 \
|
|
--without-ruby \
|
|
--without-haxe \
|
|
--without-netstd \
|
|
--without-perl \
|
|
--without-php \
|
|
--without-php_extension \
|
|
--without-dart \
|
|
--without-erlang \
|
|
--without-go \
|
|
--without-d \
|
|
--without-nodejs \
|
|
--without-nodets \
|
|
--without-lua \
|
|
--without-rs \
|
|
--with-swift
|
|
|
|
- uses: actions/download-artifact@v3
|
|
with:
|
|
name: thrift-compiler
|
|
path: compiler/cpp
|
|
|
|
- name: Run thrift-compiler
|
|
run: |
|
|
chmod a+x compiler/cpp/thrift
|
|
compiler/cpp/thrift -version
|
|
|
|
- name: Run make precross for swift
|
|
run: make -C test/swift precross
|
|
|
|
- name: Upload swift precross artifacts
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: swift-precross
|
|
if-no-files-found: error
|
|
path: |
|
|
test/swift/CrossTests/.build/x86_64-unknown-linux-gnu/debug/TestServer
|
|
test/swift/CrossTests/.build/x86_64-unknown-linux-gnu/debug/TestClient
|
|
retention-days: 3
|
|
|
|
lib-rust:
|
|
needs: compiler
|
|
runs-on: ubuntu-20.04
|
|
env:
|
|
TOOLCHAIN_VERSION: 1.61.0
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
|
|
- name: Install dependencies
|
|
run: |
|
|
sudo apt-get update -yq
|
|
sudo apt-get install -y --no-install-recommends curl $BUILD_DEPS
|
|
|
|
- name: Setup cargo
|
|
run: |
|
|
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
|
|
rustup update
|
|
rustup install $TOOLCHAIN_VERSION
|
|
rustup default $TOOLCHAIN_VERSION
|
|
rustup --version
|
|
cargo --version
|
|
rustc --version
|
|
|
|
- name: Run bootstrap
|
|
run: ./bootstrap.sh
|
|
|
|
- name: Run configure
|
|
run: |
|
|
./configure \
|
|
--disable-debug \
|
|
--disable-tests \
|
|
--disable-dependency-tracking \
|
|
--without-cpp \
|
|
--without-c_glib \
|
|
--without-java \
|
|
--without-kotlin \
|
|
--without-python \
|
|
--without-py3 \
|
|
--without-ruby \
|
|
--without-haxe \
|
|
--without-netstd \
|
|
--without-perl \
|
|
--without-php \
|
|
--without-php_extension \
|
|
--without-dart \
|
|
--without-erlang \
|
|
--without-go \
|
|
--without-d \
|
|
--without-nodejs \
|
|
--without-nodets \
|
|
--without-lua \
|
|
--with-rs \
|
|
--without-swift
|
|
|
|
- uses: actions/download-artifact@v3
|
|
with:
|
|
name: thrift-compiler
|
|
path: compiler/cpp
|
|
|
|
- name: Run thrift-compiler
|
|
run: |
|
|
chmod a+x compiler/cpp/thrift
|
|
compiler/cpp/thrift -version
|
|
|
|
- name: Run make for rust
|
|
run: make -C lib/rs
|
|
|
|
- name: Run make check for rust
|
|
run: make -C lib/rs check
|
|
|
|
- name: Run make test for rust
|
|
run: make -C lib/rs/test check
|
|
|
|
- name: Run make precross for test rust
|
|
run: make -C test/rs precross
|
|
|
|
- name: Upload rust precross artifacts
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: rs-precross
|
|
if-no-files-found: error
|
|
path: |
|
|
test/rs/bin/test_server
|
|
test/rs/bin/test_client
|
|
retention-days: 3
|
|
|
|
- name: Run make test_recursive for rust
|
|
run: make -C lib/rs/test_recursive check
|
|
|
|
cross-test:
|
|
needs:
|
|
- lib-java-kotlin
|
|
- lib-swift
|
|
- lib-rust
|
|
- lib-go
|
|
runs-on: ubuntu-20.04
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
|
|
- uses: actions/setup-python@v3
|
|
with:
|
|
python-version: "3.x"
|
|
|
|
- uses: actions/setup-java@v3
|
|
with:
|
|
distribution: temurin
|
|
# here we intentionally use an older version so that we also verify java 17 compiles to it
|
|
java-version: 11
|
|
cache: "gradle"
|
|
|
|
- name: Install openssl and certificates (for SSL tests)
|
|
run: |
|
|
sudo apt-get update -yq
|
|
sudo apt-get install -y --no-install-recommends openssl ca-certificates
|
|
|
|
- name: Download java precross artifacts
|
|
uses: actions/download-artifact@v3
|
|
with:
|
|
name: java-precross
|
|
path: lib/java/build
|
|
|
|
- name: Download kotlin precross artifacts
|
|
uses: actions/download-artifact@v3
|
|
with:
|
|
name: kotlin-precross
|
|
path: lib/kotlin
|
|
|
|
- name: Download swift precross artifacts
|
|
uses: actions/download-artifact@v3
|
|
with:
|
|
name: swift-precross
|
|
path: test/swift/CrossTests/.build/x86_64-unknown-linux-gnu/debug
|
|
|
|
- name: Download rust precross artifacts
|
|
uses: actions/download-artifact@v3
|
|
with:
|
|
name: rs-precross
|
|
path: test/rs/bin
|
|
|
|
- name: Download go precross artifacts
|
|
uses: actions/download-artifact@v3
|
|
with:
|
|
name: go-precross
|
|
path: test/go/bin
|
|
|
|
- name: Set back executable flags
|
|
run: |
|
|
chmod a+x \
|
|
lib/java/build/run* \
|
|
lib/kotlin/cross-test-client/build/install/TestClient/bin/* \
|
|
lib/kotlin/cross-test-server/build/install/TestServer/bin/* \
|
|
test/swift/CrossTests/.build/x86_64-unknown-linux-gnu/debug/* \
|
|
test/rs/bin/* \
|
|
test/go/bin/*
|
|
|
|
- name: Run cross test
|
|
env:
|
|
THRIFT_CROSSTEST_CONCURRENCY: 4
|
|
PRECROSS_LANGS: java,kotlin,go,rs,swift
|
|
run: |
|
|
python test/test.py \
|
|
--retry-count 5 \
|
|
--skip-known-failures \
|
|
--server $PRECROSS_LANGS \
|
|
--client $PRECROSS_LANGS
|
|
|
|
- name: Upload log files from failed cross test runs
|
|
uses: actions/upload-artifact@v3
|
|
if: failure()
|
|
with:
|
|
name: cross-test-log
|
|
path: test/log/
|
|
retention-days: 3
|