From 75bf4c765c9bade2d2257dcc66e32a6f13b535d2 Mon Sep 17 00:00:00 2001 From: Niels Basjes Date: Thu, 1 Feb 2024 16:04:57 +0100 Subject: [PATCH] Separate the flaky ARM builds to better see what failed. --- .github/workflows/test-lang-c++-ARM.yml | 52 +++++++ .github/workflows/test-lang-c++.yml | 18 --- .github/workflows/test-lang-c-ARM.yml | 52 +++++++ .github/workflows/test-lang-c.yml | 18 --- .github/workflows/test-lang-csharp-ARM.yml | 160 ++++++++++++++++++++ .github/workflows/test-lang-csharp.yml | 34 ----- .github/workflows/test-lang-java-ARM.yml | 79 ++++++++++ .github/workflows/test-lang-java.yml | 44 ------ .github/workflows/test-lang-js-ARM.yml | 65 ++++++++ .github/workflows/test-lang-js.yml | 31 ---- .github/workflows/test-lang-perl-ARM.yml | 157 +++++++++++++++++++ .github/workflows/test-lang-perl.yml | 24 --- .github/workflows/test-lang-php-ARM.yml | 58 +++++++ .github/workflows/test-lang-php.yml | 24 --- .github/workflows/test-lang-py-ARM.yml | 53 +++++++ .github/workflows/test-lang-py.yml | 19 --- .github/workflows/test-lang-ruby-ARM.yml | 60 ++++++++ .github/workflows/test-lang-ruby.yml | 26 ---- .github/workflows/test-lang-rust-ci-ARM.yml | 79 ++++++++++ .github/workflows/test-lang-rust-ci.yml | 36 ----- README.md | 37 +++++ 21 files changed, 852 insertions(+), 274 deletions(-) create mode 100644 .github/workflows/test-lang-c++-ARM.yml create mode 100644 .github/workflows/test-lang-c-ARM.yml create mode 100644 .github/workflows/test-lang-csharp-ARM.yml create mode 100644 .github/workflows/test-lang-java-ARM.yml create mode 100644 .github/workflows/test-lang-js-ARM.yml create mode 100644 .github/workflows/test-lang-perl-ARM.yml create mode 100644 .github/workflows/test-lang-php-ARM.yml create mode 100644 .github/workflows/test-lang-py-ARM.yml create mode 100644 .github/workflows/test-lang-ruby-ARM.yml create mode 100644 .github/workflows/test-lang-rust-ci-ARM.yml diff --git a/.github/workflows/test-lang-c++-ARM.yml b/.github/workflows/test-lang-c++-ARM.yml new file mode 100644 index 00000000000..47b7fc0d284 --- /dev/null +++ b/.github/workflows/test-lang-c++-ARM.yml @@ -0,0 +1,52 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You 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 +# +# https://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. + +name: Test C++ on ARM +on: + workflow_dispatch: + push: + branches: [ main ] + pull_request: + branches: [ main ] + paths: + - '.github/workflows/test-lang-c\+\+.yml' + - 'lang/c\+\+/**' + +defaults: + run: + working-directory: lang/c++ + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + arm64: + name: C++ on Linux ARM64 + runs-on: ["self-hosted", "asf-arm"] + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Install dependencies + run: | + sudo apt-get update -q + sudo apt-get install -q -y gcc g++ libboost-all-dev cmake + + - name: Build + run: | + set -x + ./build.sh clean test diff --git a/.github/workflows/test-lang-c++.yml b/.github/workflows/test-lang-c++.yml index fa07b8c76ab..5747a0da361 100644 --- a/.github/workflows/test-lang-c++.yml +++ b/.github/workflows/test-lang-c++.yml @@ -55,21 +55,3 @@ jobs: mkdir -p build cd build cmake -G "Unix Makefiles" -D CMAKE_BUILD_TYPE=Release .. - - arm64: - name: C++ on Linux ARM64 - runs-on: ["self-hosted", "asf-arm"] - - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Install dependencies - run: | - sudo apt-get update -q - sudo apt-get install -q -y gcc g++ libboost-all-dev cmake - - - name: Build - run: | - set -x - ./build.sh clean test diff --git a/.github/workflows/test-lang-c-ARM.yml b/.github/workflows/test-lang-c-ARM.yml new file mode 100644 index 00000000000..9ea46d9a668 --- /dev/null +++ b/.github/workflows/test-lang-c-ARM.yml @@ -0,0 +1,52 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You 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 +# +# https://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. + +name: Test C on ARM +on: + workflow_dispatch: + push: + branches: [ main ] + pull_request: + branches: [ main ] + paths: + - .github/workflows/test-lang-c.yml + - lang/c/** + +defaults: + run: + working-directory: lang/c + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + arm64: + name: C on Linux ARM64 + runs-on: ["self-hosted", "asf-arm"] + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Install dependencies + run: | + sudo apt-get update -q + sudo apt-get install -q -y cmake liblzma-dev libsnappy-dev libjansson-dev zlib1g-dev pkg-config + + - name: Build + run: | + set -x + ./build.sh clean test diff --git a/.github/workflows/test-lang-c.yml b/.github/workflows/test-lang-c.yml index 52fd902c073..a01e8b8ebf1 100644 --- a/.github/workflows/test-lang-c.yml +++ b/.github/workflows/test-lang-c.yml @@ -149,21 +149,3 @@ jobs: - name: Run Interop Tests run: ./build.sh interop-data-test - - arm64: - name: C on Linux ARM64 - runs-on: ["self-hosted", "asf-arm"] - - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Install dependencies - run: | - sudo apt-get update -q - sudo apt-get install -q -y cmake liblzma-dev libsnappy-dev libjansson-dev zlib1g-dev pkg-config - - - name: Build - run: | - set -x - ./build.sh clean test diff --git a/.github/workflows/test-lang-csharp-ARM.yml b/.github/workflows/test-lang-csharp-ARM.yml new file mode 100644 index 00000000000..b846072289e --- /dev/null +++ b/.github/workflows/test-lang-csharp-ARM.yml @@ -0,0 +1,160 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You 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 +# +# https://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. + +name: 'Test C#' +on: + workflow_dispatch: + push: + branches: [ main ] + pull_request: + branches: [ main ] + paths: + - .github/workflows/test-lang-csharp.yml + - lang/csharp/** + +defaults: + run: + working-directory: lang/csharp + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Add libzstd + shell: bash + run: sudo apt-get install -y libzstd-dev + + - name: Install .NET SDKs + uses: actions/setup-dotnet@v4 + with: + dotnet-version: | + 3.1.x + 5.0.x + 6.0.x + 7.0.x + 8.0.x + + - uses: actions/cache@v4 + with: + path: ~/.nuget/packages + key: ${{ runner.os }}-nuget-${{ hashFiles('**/packages.lock.json') }} + restore-keys: | + ${{ runner.os }}-nuget- + + - name: Lint + run: ./build.sh lint + + - name: Test + run: ./build.sh test + + interop: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Add libzstd + shell: bash + run: sudo apt-get install -y libzstd-dev + + - name: Install .NET SDKs + uses: actions/setup-dotnet@v4 + with: + dotnet-version: | + 3.1.x + 5.0.x + 6.0.x + 7.0.x + 8.0.x + + - name: Cache Local Maven Repository + uses: actions/cache@v4 + with: + path: ~/.m2/repository + key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} + restore-keys: | + ${{ runner.os }}-maven- + + - name: 'Setup Temurin JDK 8, 11, 17 & 21' + uses: actions/setup-java@387ac29b308b003ca37ba93a6cab5eb57c8f5f93 # v4.0.0 + with: + distribution: 'temurin' + java-version: | + 8 + 11 + 17 + 21 + + - name: 'Setup Maven 3.9.6' + uses: stCarolas/setup-maven@07fbbe97d97ef44336b7382563d66743297e442f # v4.5 + with: + maven-version: 3.9.6 + + - name: Install Java Avro for Interop Test + working-directory: . + run: mvn -B install -PskipQuality + + - name: Create Interop Data Directory + working-directory: . + run: mkdir -p build/interop/data + + - name: Generate Interop Resources + working-directory: lang/java/avro + run: mvn -B -P interop-data-generate generate-resources + + - name: Generate Interop Data + run: ./build.sh interop-data-generate + + - name: Run Interop Tests + run: ./build.sh interop-data-test + + arm64: + name: C# on Linux ARM64 + runs-on: ["self-hosted", "asf-arm"] + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Cache Nuget + uses: actions/cache@v4 + with: + path: ~/.nuget/packages + key: ${{ runner.os }}-nuget-${{ hashFiles('**/packages.lock.json') }} + restore-keys: | + ${{ runner.os }}-nuget- + + - name: Install dependencies + run: | + sudo apt-get update -q + sudo apt-get install -q -y wget libzstd-dev libicu-dev + wget https://dot.net/v1/dotnet-install.sh + bash ./dotnet-install.sh --channel "3.1" --install-dir "$HOME/.dotnet" # 3.1 + bash ./dotnet-install.sh --channel "5.0" --install-dir "$HOME/.dotnet" # 5.0 + bash ./dotnet-install.sh --channel "6.0" --install-dir "$HOME/.dotnet" # 6.0 + bash ./dotnet-install.sh --channel "7.0" --install-dir "$HOME/.dotnet" # 7.0 + bash ./dotnet-install.sh --channel "8.0" --install-dir "$HOME/.dotnet" # 8.0 + + - name: Build + run: | + set -x + export PATH=$HOME/.dotnet:$PATH + dotnet --list-sdks + ./build.sh clean test diff --git a/.github/workflows/test-lang-csharp.yml b/.github/workflows/test-lang-csharp.yml index b846072289e..e4c9f679687 100644 --- a/.github/workflows/test-lang-csharp.yml +++ b/.github/workflows/test-lang-csharp.yml @@ -124,37 +124,3 @@ jobs: - name: Run Interop Tests run: ./build.sh interop-data-test - - arm64: - name: C# on Linux ARM64 - runs-on: ["self-hosted", "asf-arm"] - - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Cache Nuget - uses: actions/cache@v4 - with: - path: ~/.nuget/packages - key: ${{ runner.os }}-nuget-${{ hashFiles('**/packages.lock.json') }} - restore-keys: | - ${{ runner.os }}-nuget- - - - name: Install dependencies - run: | - sudo apt-get update -q - sudo apt-get install -q -y wget libzstd-dev libicu-dev - wget https://dot.net/v1/dotnet-install.sh - bash ./dotnet-install.sh --channel "3.1" --install-dir "$HOME/.dotnet" # 3.1 - bash ./dotnet-install.sh --channel "5.0" --install-dir "$HOME/.dotnet" # 5.0 - bash ./dotnet-install.sh --channel "6.0" --install-dir "$HOME/.dotnet" # 6.0 - bash ./dotnet-install.sh --channel "7.0" --install-dir "$HOME/.dotnet" # 7.0 - bash ./dotnet-install.sh --channel "8.0" --install-dir "$HOME/.dotnet" # 8.0 - - - name: Build - run: | - set -x - export PATH=$HOME/.dotnet:$PATH - dotnet --list-sdks - ./build.sh clean test diff --git a/.github/workflows/test-lang-java-ARM.yml b/.github/workflows/test-lang-java-ARM.yml new file mode 100644 index 00000000000..217eb4dbe9b --- /dev/null +++ b/.github/workflows/test-lang-java-ARM.yml @@ -0,0 +1,79 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You 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 +# +# https://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. + +name: 'Test Java on ARM' +on: + workflow_dispatch: + push: + branches: [ main ] + pull_request: + branches: [ main ] + paths: + - .github/workflows/test-lang-java.yml + - lang/java/** + - pom.xml + +defaults: + run: + working-directory: lang/java + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + arm64: + name: Java on Linux ARM64 + runs-on: ["self-hosted", "asf-arm"] + + steps: + - name: 'Checkout sourcecode' + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + + - name: 'Setup Temurin JDK 8, 11, 17 & 21' + uses: actions/setup-java@387ac29b308b003ca37ba93a6cab5eb57c8f5f93 # v4.0.0 + with: + distribution: 'temurin' + java-version: | + 8 + 11 + 17 + 21 + + - name: 'Cache Local Maven Repository' + uses: actions/cache@13aacd865c20de90d75de3b17ebe84f7a17d57d2 # v4.0.0 + with: + path: ~/.m2/repository + key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} + restore-keys: | + ${{ runner.os }}-maven- + + - name: 'Setup Maven 3.9.6' + uses: stCarolas/setup-maven@07fbbe97d97ef44336b7382563d66743297e442f # v4.5 + with: + maven-version: 3.9.6 + + - name: Build + run: ./build.sh clean test +# set -x +# export MAVEN_VERSION="3.9.6" +# wget https://archive.apache.org/dist/maven/maven-3/$MAVEN_VERSION/binaries/apache-maven-$MAVEN_VERSION-bin.tar.gz +# tar zxvf apache-maven-$MAVEN_VERSION-bin.tar.gz +# export M2_HOME=$PWD/apache-maven-$MAVEN_VERSION +# export PATH="$M2_HOME/bin:$PATH" +# java -version +# mvn -version +# #MAVEN_OPTS="-Dsurefire.excludes=*TestCustomCodec*,*TestAllCodecs*,*TestNettyServer*" ./build.sh clean test +# ./build.sh clean test diff --git a/.github/workflows/test-lang-java.yml b/.github/workflows/test-lang-java.yml index 2fb09640893..b818dad91bd 100644 --- a/.github/workflows/test-lang-java.yml +++ b/.github/workflows/test-lang-java.yml @@ -156,47 +156,3 @@ jobs: - name: 'Run Interop Tests using Java 8, 11, 17 & 21' working-directory: lang/java/interop-data-test run: mvn -B verify -Pcheck-test-data - - arm64: - name: Java on Linux ARM64 - runs-on: ["self-hosted", "asf-arm"] - - steps: - - name: 'Checkout sourcecode' - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - - name: 'Setup Temurin JDK 8, 11, 17 & 21' - uses: actions/setup-java@387ac29b308b003ca37ba93a6cab5eb57c8f5f93 # v4.0.0 - with: - distribution: 'temurin' - java-version: | - 8 - 11 - 17 - 21 - - - name: 'Cache Local Maven Repository' - uses: actions/cache@13aacd865c20de90d75de3b17ebe84f7a17d57d2 # v4.0.0 - with: - path: ~/.m2/repository - key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} - restore-keys: | - ${{ runner.os }}-maven- - - - name: 'Setup Maven 3.9.6' - uses: stCarolas/setup-maven@07fbbe97d97ef44336b7382563d66743297e442f # v4.5 - with: - maven-version: 3.9.6 - - - name: Build - run: ./build.sh clean test -# set -x -# export MAVEN_VERSION="3.9.6" -# wget https://archive.apache.org/dist/maven/maven-3/$MAVEN_VERSION/binaries/apache-maven-$MAVEN_VERSION-bin.tar.gz -# tar zxvf apache-maven-$MAVEN_VERSION-bin.tar.gz -# export M2_HOME=$PWD/apache-maven-$MAVEN_VERSION -# export PATH="$M2_HOME/bin:$PATH" -# java -version -# mvn -version -# #MAVEN_OPTS="-Dsurefire.excludes=*TestCustomCodec*,*TestAllCodecs*,*TestNettyServer*" ./build.sh clean test -# ./build.sh clean test diff --git a/.github/workflows/test-lang-js-ARM.yml b/.github/workflows/test-lang-js-ARM.yml new file mode 100644 index 00000000000..54e1216eaca --- /dev/null +++ b/.github/workflows/test-lang-js-ARM.yml @@ -0,0 +1,65 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You 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 +# +# https://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. + +name: 'Test JavaScript on ARM' +on: + workflow_dispatch: + push: + branches: [ main ] + pull_request: + branches: [ main ] + paths: + - .github/workflows/test-lang-js.yml + - lang/js/** + +defaults: + run: + working-directory: lang/js + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + arm64: + name: JavaScript on Linux ARM64 + runs-on: ["self-hosted", "asf-arm"] + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Cache Npm + uses: actions/cache@v4 + with: + path: ~/.npm + key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} + restore-keys: | + ${{ runner.os }}-node- + + - name: Setup Node + uses: actions/setup-node@v4 + with: + node-version: 18 + + - name: Install dependencies + run: | + sudo apt-get update -q + sudo apt-get install -q -y wget tar xz-utils + + - name: Build + run: | + set -x + ./build.sh clean test diff --git a/.github/workflows/test-lang-js.yml b/.github/workflows/test-lang-js.yml index acb96369a86..20f2cc09f4c 100644 --- a/.github/workflows/test-lang-js.yml +++ b/.github/workflows/test-lang-js.yml @@ -112,34 +112,3 @@ jobs: - name: Run Interop Tests run: npm install && ./build.sh interop-data-test - - arm64: - name: JavaScript on Linux ARM64 - runs-on: ["self-hosted", "asf-arm"] - - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Cache Npm - uses: actions/cache@v4 - with: - path: ~/.npm - key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} - restore-keys: | - ${{ runner.os }}-node- - - - name: Setup Node - uses: actions/setup-node@v4 - with: - node-version: 18 - - - name: Install dependencies - run: | - sudo apt-get update -q - sudo apt-get install -q -y wget tar xz-utils - - - name: Build - run: | - set -x - ./build.sh clean test \ No newline at end of file diff --git a/.github/workflows/test-lang-perl-ARM.yml b/.github/workflows/test-lang-perl-ARM.yml new file mode 100644 index 00000000000..bd28857cd59 --- /dev/null +++ b/.github/workflows/test-lang-perl-ARM.yml @@ -0,0 +1,157 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You 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 +# +# https://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. + +name: 'Test Perl on ARM' +on: + workflow_dispatch: + push: + branches: [ main ] + pull_request: + branches: [ main ] + paths: + - .github/workflows/test-lang-perl.yml + - lang/perl/** + +defaults: + run: + working-directory: lang/perl + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + test: + name: Perl ${{ matrix.perl }} Tests + runs-on: ubuntu-latest + strategy: + matrix: + perl: + - '5.32' + steps: + - uses: actions/checkout@v4 + + - uses: shogo82148/actions-setup-perl@v1 + with: + perl-version: ${{ matrix.perl }} + + - name: Install Dependencies + run: | + sudo apt-get -qqy install --no-install-recommends libjansson-dev \ + libcompress-raw-zlib-perl \ + libcpan-uploader-perl \ + libencode-perl \ + libio-string-perl \ + libjson-xs-perl \ + libmodule-install-perl \ + libmodule-install-readmefrompod-perl \ + libobject-tiny-perl \ + libperl-critic-perl \ + libsnappy-dev \ + libtest-exception-perl \ + libtest-pod-perl + cpanm --mirror https://www.cpan.org/ install Compress::Zstd \ + Error::Simple \ + Module::Install::Repository \ + Regexp::Common \ + Try::Tiny \ + inc::Module::Install \ + Module::Install::ReadmeFromPod \ + Test::Exception \ + IO::String \ + Object::Tiny + + - name: Lint + run: ./build.sh lint + + - name: Test + run: ./build.sh test + + interop: + name: Perl ${{ matrix.perl }} Interop + runs-on: ubuntu-latest + strategy: + matrix: + perl: + - '5.32' + steps: + - uses: actions/checkout@v4 + + - uses: shogo82148/actions-setup-perl@v1 + with: + perl-version: ${{ matrix.perl }} + + - name: Install Dependencies + run: | + sudo apt-get -qqy install --no-install-recommends libcompress-raw-zlib-perl \ + libcpan-uploader-perl \ + libencode-perl \ + libio-string-perl \ + libjansson-dev \ + libjson-xs-perl \ + libmodule-install-perl \ + libmodule-install-readmefrompod-perl \ + libobject-tiny-perl \ + libsnappy-dev \ + libtest-exception-perl \ + libtest-pod-perl + cpanm --mirror https://www.cpan.org/ install Compress::Zstd \ + Error::Simple \ + Module::Install::Repository \ + Object::Tiny \ + Regexp::Common \ + Try::Tiny \ + inc::Module::Install + + - name: Cache Local Maven Repository + uses: actions/cache@v4 + with: + path: ~/.m2/repository + key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} + restore-keys: | + ${{ runner.os }}-maven- + + - name: 'Setup Temurin JDK 8, 11, 17 & 21' + uses: actions/setup-java@387ac29b308b003ca37ba93a6cab5eb57c8f5f93 # v4.0.0 + with: + distribution: 'temurin' + java-version: | + 8 + 11 + 17 + 21 + + - name: 'Setup Maven 3.9.6' + uses: stCarolas/setup-maven@07fbbe97d97ef44336b7382563d66743297e442f # v4.5 + with: + maven-version: 3.9.6 + + - name: Install Java Avro for Interop Test + working-directory: . + run: mvn -B install -PskipQuality + + - name: Create Interop Data Directory + working-directory: . + run: mkdir -p build/interop/data + + - name: Generate Interop Resources + working-directory: lang/java/avro + run: mvn -B -P interop-data-generate generate-resources + + - name: Generate Interop Data + run: ./build.sh interop-data-generate + + - name: Run Interop Tests + run: ./build.sh interop-data-test diff --git a/.github/workflows/test-lang-perl.yml b/.github/workflows/test-lang-perl.yml index 58627a7f3da..cc4f6ab1343 100644 --- a/.github/workflows/test-lang-perl.yml +++ b/.github/workflows/test-lang-perl.yml @@ -155,27 +155,3 @@ jobs: - name: Run Interop Tests run: ./build.sh interop-data-test - - arm64: - name: Perl on Linux ARM64 - runs-on: ["self-hosted", "asf-arm"] - - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Install dependencies - run: | - sudo apt-get update -q - sudo apt-get install -q -y libjansson-dev libcompress-raw-zlib-perl libcpan-uploader-perl libencode-perl libio-string-perl libjson-xs-perl libmodule-install-perl libmodule-install-readmefrompod-perl libobject-tiny-perl libperl-critic-perl libsnappy-dev libtest-exception-perl libtest-pod-perl cpanminus make gcc wget - cpanm Error::Simple - cpanm Regexp::Common - cpanm Try::Tiny - cpanm Compress::Zstd - cpanm Module::Install::Repository - cpanm inc::Module::Install - - - name: Build - run: | - set -x - ./build.sh clean test diff --git a/.github/workflows/test-lang-php-ARM.yml b/.github/workflows/test-lang-php-ARM.yml new file mode 100644 index 00000000000..85c2aa349bf --- /dev/null +++ b/.github/workflows/test-lang-php-ARM.yml @@ -0,0 +1,58 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You 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 +# +# https://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. + +name: 'Test PHP on ARM' +on: + workflow_dispatch: + push: + branches: [ main ] + pull_request: + branches: [ main ] + paths: + - .github/workflows/test-lang-php.yml + - lang/php/** + +defaults: + run: + working-directory: lang/php + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + arm64: + name: PHP on Linux ARM64 + runs-on: ["self-hosted", "asf-arm"] + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Install dependencies + run: | + sudo apt-get update -q + sudo apt-get install -q -y wget php php-xml php-mbstring php-curl php-gmp php-bz2 unzip libtidy-dev libpq5 + php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" + php -r "if (hash_file('sha384', 'composer-setup.php') === file_get_contents('https://composer.github.io/installer.sig')) { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" + php composer-setup.php --version=2.2.5 + php -r "unlink('composer-setup.php');" + sudo mv composer.phar /usr/local/bin/composer + + - name: Build + run: | + set -x + composer --version + ./build.sh clean test diff --git a/.github/workflows/test-lang-php.yml b/.github/workflows/test-lang-php.yml index 6255a7f3498..c6729e90ad4 100644 --- a/.github/workflows/test-lang-php.yml +++ b/.github/workflows/test-lang-php.yml @@ -162,27 +162,3 @@ jobs: - name: Run Interop Tests run: ./build.sh test-interop - - arm64: - name: PHP on Linux ARM64 - runs-on: ["self-hosted", "asf-arm"] - - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Install dependencies - run: | - sudo apt-get update -q - sudo apt-get install -q -y wget php php-xml php-mbstring php-curl php-gmp php-bz2 unzip libtidy-dev libpq5 - php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" - php -r "if (hash_file('sha384', 'composer-setup.php') === file_get_contents('https://composer.github.io/installer.sig')) { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" - php composer-setup.php --version=2.2.5 - php -r "unlink('composer-setup.php');" - sudo mv composer.phar /usr/local/bin/composer - - - name: Build - run: | - set -x - composer --version - ./build.sh clean test diff --git a/.github/workflows/test-lang-py-ARM.yml b/.github/workflows/test-lang-py-ARM.yml new file mode 100644 index 00000000000..874c7c35f9b --- /dev/null +++ b/.github/workflows/test-lang-py-ARM.yml @@ -0,0 +1,53 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You 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 +# +# https://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. + +name: 'Test Python on ARM' +on: + workflow_dispatch: + push: + branches: [ main ] + pull_request: + branches: [ main ] + paths: + - .github/workflows/test-lang-py.yml + - lang/py/** + +defaults: + run: + working-directory: lang/py + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + arm64: + name: Python on Linux ARM64 + runs-on: ["self-hosted", "asf-arm"] + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Install dependencies + run: | + sudo apt-get update -q + sudo apt-get install -q -y python3 python3-dev python3-pip git libbz2-dev libjansson-dev liblzma-dev libsnappy-dev libzstd-dev + python3 -m pip install --upgrade pip setuptools tox + + - name: Build + run: | + set -x + ./build.sh clean test diff --git a/.github/workflows/test-lang-py.yml b/.github/workflows/test-lang-py.yml index 3a2c161e6b6..8082cd96555 100644 --- a/.github/workflows/test-lang-py.yml +++ b/.github/workflows/test-lang-py.yml @@ -159,22 +159,3 @@ jobs: - name: Run Interop Tests run: ./build.sh interop-data-test - - arm64: - name: Python on Linux ARM64 - runs-on: ["self-hosted", "asf-arm"] - - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Install dependencies - run: | - sudo apt-get update -q - sudo apt-get install -q -y python3 python3-dev python3-pip git libbz2-dev libjansson-dev liblzma-dev libsnappy-dev libzstd-dev - python3 -m pip install --upgrade pip setuptools tox - - - name: Build - run: | - set -x - ./build.sh clean test diff --git a/.github/workflows/test-lang-ruby-ARM.yml b/.github/workflows/test-lang-ruby-ARM.yml new file mode 100644 index 00000000000..c1ce73878bf --- /dev/null +++ b/.github/workflows/test-lang-ruby-ARM.yml @@ -0,0 +1,60 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You 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 +# +# https://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. + +name: 'Test Ruby on ARM' +on: + workflow_dispatch: + push: + branches: [ main ] + pull_request: + branches: [ main ] + paths: + - .github/workflows/test-lang-ruby.yml + - lang/ruby/** + +defaults: + run: + working-directory: lang/ruby + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + arm64: + name: Ruby on Linux ARM64 + runs-on: ["self-hosted", "asf-arm"] + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Cache gems + uses: actions/cache@v4 + with: + path: .gem + key: ${{ runner.os }}-gems-${{ hashFiles('**/Gemfile.lock') }} + restore-keys: | + ${{ runner.os }}-gems- + + - name: Install dependencies + run: | + sudo apt-get update -q + sudo apt-get install -q -y ruby-dev bundler libsnappy-dev libyaml-dev + + - name: Build + run: | + set -x + ./build.sh clean test diff --git a/.github/workflows/test-lang-ruby.yml b/.github/workflows/test-lang-ruby.yml index 5c5f5fa60a6..2a73c5db8f6 100644 --- a/.github/workflows/test-lang-ruby.yml +++ b/.github/workflows/test-lang-ruby.yml @@ -157,29 +157,3 @@ jobs: export GEM_HOME="$PWD/.gem/" export PATH="$GEM_HOME/bin:$PATH" bundle exec rake --trace interop - - arm64: - name: Ruby on Linux ARM64 - runs-on: ["self-hosted", "asf-arm"] - - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Cache gems - uses: actions/cache@v4 - with: - path: .gem - key: ${{ runner.os }}-gems-${{ hashFiles('**/Gemfile.lock') }} - restore-keys: | - ${{ runner.os }}-gems- - - - name: Install dependencies - run: | - sudo apt-get update -q - sudo apt-get install -q -y ruby-dev bundler libsnappy-dev libyaml-dev - - - name: Build - run: | - set -x - ./build.sh clean test diff --git a/.github/workflows/test-lang-rust-ci-ARM.yml b/.github/workflows/test-lang-rust-ci-ARM.yml new file mode 100644 index 00000000000..09aa02bbde2 --- /dev/null +++ b/.github/workflows/test-lang-rust-ci-ARM.yml @@ -0,0 +1,79 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you 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. + +name: Rust Continuous Integration on ARM +on: + workflow_dispatch: + push: + branches: [ main ] + pull_request: + branches: [ main ] + paths: + - .github/workflows/test-lang-rust-ci.yml + - lang/rust/** + +permissions: + contents: read + +env: + RUSTFLAGS: -Dwarnings + CARGO_REGISTRIES_CRATES_IO_PROTOCOL: 'git' # TODO: remove this env var once MSRV is 1.70.0+ + +defaults: + run: + working-directory: lang/rust + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + arm64: + name: Rust on Linux ARM64 + runs-on: ["self-hosted", "asf-arm"] + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Cache Cargo + uses: actions/cache@v4 + with: + # these represent dependencies downloaded by cargo + # and thus do not depend on the OS, arch nor rust version. + path: ~/.cargo + key: ${{ runner.os }}-target-arm64-${{ hashFiles('**/Cargo.lock') }} + + - name: Cache Rust dependencies + uses: actions/cache@v4 + with: + # these represent compiled steps of both dependencies and avro + # and thus are specific for a particular OS, arch and rust version. + path: lang/rust/target + key: ${{ runner.os }}-target-cache1-stable- + + - name: Rust Toolchain + uses: dtolnay/rust-toolchain@nightly + with: + toolchain: stable + components: rustfmt + targets: x86_64-unknown-linux-gnu + + - name: Build + run: | + set -x + ./build.sh test diff --git a/.github/workflows/test-lang-rust-ci.yml b/.github/workflows/test-lang-rust-ci.yml index 3aae12e135e..fbe97888460 100644 --- a/.github/workflows/test-lang-rust-ci.yml +++ b/.github/workflows/test-lang-rust-ci.yml @@ -253,39 +253,3 @@ jobs: - name: Test the Web Assembly demo app run: RUST_BACKTRACE=1 wasm-pack test --headless --firefox wasm-demo - - arm64: - name: Rust on Linux ARM64 - runs-on: ["self-hosted", "asf-arm"] - - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Cache Cargo - uses: actions/cache@v4 - with: - # these represent dependencies downloaded by cargo - # and thus do not depend on the OS, arch nor rust version. - path: ~/.cargo - key: ${{ runner.os }}-target-arm64-${{ hashFiles('**/Cargo.lock') }} - - - name: Cache Rust dependencies - uses: actions/cache@v4 - with: - # these represent compiled steps of both dependencies and avro - # and thus are specific for a particular OS, arch and rust version. - path: lang/rust/target - key: ${{ runner.os }}-target-cache1-stable- - - - name: Rust Toolchain - uses: dtolnay/rust-toolchain@nightly - with: - toolchain: stable - components: rustfmt - targets: x86_64-unknown-linux-gnu - - - name: Build - run: | - set -x - ./build.sh test diff --git a/README.md b/README.md index 2be39e5a2b7..816256cd4cb 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,7 @@ Apache Avro™Avro Logo ============ +### Current CI status (Github servers) [![test c][test c img]][test c] [![test c#][test c# img]][test c#] [![test c++][test c++ img]][test c++] @@ -15,6 +16,19 @@ Apache Avro™