This is an automated email from the ASF dual-hosted git repository.

mgrigorov pushed a commit to branch add-github-actions-workflows
in repository https://gitbox.apache.org/repos/asf/avro-rs.git

commit fb4a8454d9dab4c743e0041dba955d952770e98f
Author: Martin Tzvetanov Grigorov <[email protected]>
AuthorDate: Mon Sep 23 14:36:49 2024 +0300

    Copy the Github Actions workflows from the main repo
    
    Signed-off-by: Martin Tzvetanov Grigorov <[email protected]>
---
 .github/workflows/test-lang-rust-audit.yml  |  69 ++++++++
 .github/workflows/test-lang-rust-ci-ARM.yml |  71 ++++++++
 .github/workflows/test-lang-rust-ci.yml     | 247 ++++++++++++++++++++++++++++
 .github/workflows/test-lang-rust-clippy.yml |  50 ++++++
 4 files changed, 437 insertions(+)

diff --git a/.github/workflows/test-lang-rust-audit.yml 
b/.github/workflows/test-lang-rust-audit.yml
new file mode 100644
index 0000000..0649ae9
--- /dev/null
+++ b/.github/workflows/test-lang-rust-audit.yml
@@ -0,0 +1,69 @@
+# 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 Security Audit
+on:
+  workflow_dispatch:
+  push:
+    branches: [ main ]
+    paths:
+      - .github/workflows/test-lang-rust-audit.yml
+      - '**/Cargo.toml'
+      - Cargo.lock
+      - deny.toml
+  pull_request:
+    branches: [ main ]
+    paths:
+      - .github/workflows/test-lang-rust-audit.yml
+      - '**/Cargo.toml'
+      - Cargo.lock
+      - deny.toml
+
+permissions:
+  contents: read
+
+env:
+  RUSTFLAGS: -Dwarnings
+
+concurrency:
+  group: ${{ github.workflow }}-${{ github.ref }}
+  cancel-in-progress: true
+
+jobs:
+  audit:
+    runs-on: ubuntu-latest
+    steps:
+      - name: Checkout
+        uses: actions/checkout@v4
+      - name: Dependency Review
+        if: github.event_name == 'pull_request'
+        uses: actions/dependency-review-action@v4
+      - name: Install Cargo Audit
+        run: cargo install cargo-audit
+      - name: Audit
+        run: cargo audit
+
+  deny:
+    runs-on: ubuntu-latest
+    steps:
+      - name: Checkout
+        uses: actions/checkout@v4
+      - name: Install Cargo Deny
+        run: cargo install cargo-deny
+      - name: Check
+        run: cargo deny check
+      
\ No newline at end of file
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 0000000..fe2ec39
--- /dev/null
+++ b/.github/workflows/test-lang-rust-ci-ARM.yml
@@ -0,0 +1,71 @@
+# 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 ]
+
+permissions:
+  contents: read
+
+env:
+  RUSTFLAGS: -Dwarnings
+
+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
new file mode 100644
index 0000000..9bbd2ba
--- /dev/null
+++ b/.github/workflows/test-lang-rust-ci.yml
@@ -0,0 +1,247 @@
+# 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:
+  workflow_dispatch:
+  push:
+    branches: [ main ]
+  pull_request:
+    branches: [ main ]
+
+permissions:
+  contents: read
+
+env:
+  RUSTFLAGS: -Dwarnings
+
+concurrency:
+  group: ${{ github.workflow }}-${{ github.ref }}
+  cancel-in-progress: true
+
+jobs:
+  ci:
+    runs-on: ubuntu-latest
+    strategy:
+      matrix:
+        rust:
+          - 'stable'
+          - 'beta'
+          - 'nightly'
+          - '1.73.0'  # MSRV
+        target:
+          - x86_64-unknown-linux-gnu
+          - wasm32-unknown-unknown
+
+    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-cache1-${{ 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-${{ matrix.rust }}-${{ 
hashFiles('**/Cargo.lock') }}
+
+      - name: Rust Toolchain
+        uses: dtolnay/rust-toolchain@nightly
+        with:
+          toolchain: ${{ matrix.rust }}
+          components: rustfmt
+          targets: ${{ matrix.target }}
+
+      - name: Cache cargo-rdme
+        if: matrix.rust == 'stable' && matrix.target == 
'x86_64-unknown-linux-gnu'
+        uses: actions/cache@v4
+        with:
+          path: ~/.cargo-${{ matrix.rust }}/cargo-rdme
+          key: cargo-rdme-
+
+      # Check if the doc cumment in avro/src/lib.rs and avro/README.md are in 
sync.
+      - name: Run cargo-rdme
+        # The result is environment independent so one test pattern is enough.
+        if: matrix.rust == 'stable' && matrix.target == 
'x86_64-unknown-linux-gnu'
+        run: |
+          cargo install --root ~/.cargo-${{ matrix.rust }}/cargo-rdme --locked 
cargo-rdme
+          export PATH=$PATH:~/.cargo-${{ matrix.rust }}/cargo-rdme/bin
+          cargo rdme --check
+
+      - name: Rust Format
+        if: matrix.target != 'wasm32-unknown-unknown'
+        run: cargo fmt --all -- --check
+
+      - name: Rust Build
+        run: cargo build --all-features --all-targets
+
+      - name: Rust Test
+        if: matrix.target != 'wasm32-unknown-unknown'
+        run: cargo test --all-features --target ${{ matrix.target }}
+
+      - name: Rust Test AVRO-3549
+        if: matrix.target != 'wasm32-unknown-unknown'
+        run: cargo test --target ${{ matrix.target }} 
test_avro_3549_read_not_enabled_codec
+
+      # because of https://github.com/rust-lang/cargo/issues/6669
+      - name: Rust Test docs
+        if: matrix.target != 'wasm32-unknown-unknown'
+        run: cargo test --doc
+
+  interop:
+    runs-on: ubuntu-latest
+
+    steps:
+      - name: Checkout
+        uses: actions/checkout@v4
+
+      - name: Rust Toolchain
+        uses: dtolnay/rust-toolchain@nightly
+        with:
+          toolchain: stable
+
+      - 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-cache1-${{ 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-${{ 
hashFiles('**/Cargo.lock') }}
+
+      - 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@6a0805fcefea3d4657a47ac4c165951e33482018 # 
v4.2.2
+        with:
+          distribution: 'temurin'
+          java-version: |
+            8
+            11
+            17
+            21
+
+      - name: 'Setup Maven 3.9.6'
+        uses: stCarolas/setup-maven@d6af6abeda15e98926a57b5aa970a96bb37f97d1 # 
v5
+        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: Rust reads interop files created by Java and Rust
+        run: ./build.sh interop-data-test
+
+      - uses: shogo82148/actions-setup-perl@v1
+        with:
+          perl-version: 5.32
+
+      - 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: Perl reads interop files created by Java and Rust
+        working-directory: lang/perl
+        run: ./build.sh interop-data-test
+
+  web-assembly:
+    runs-on: ubuntu-latest
+
+    steps:
+      - name: Checkout
+        uses: actions/checkout@v4
+
+      - name: Rust Toolchain
+        uses: dtolnay/rust-toolchain@nightly
+        with:
+          toolchain: stable
+          targets: wasm32-unknown-unknown
+
+      - 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-cache1-${{ 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-${{ 
hashFiles('**/Cargo.lock') }}
+
+      - name: Install wasm-pack
+        run: curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf 
| sh
+
+      - name: Build the Web Assembly demo app
+        run: wasm-pack build wasm-demo
+
+      - name: Test the Web Assembly demo app
+        run: RUST_BACKTRACE=1 wasm-pack test --headless --firefox wasm-demo
diff --git a/.github/workflows/test-lang-rust-clippy.yml 
b/.github/workflows/test-lang-rust-clippy.yml
new file mode 100644
index 0000000..2b44ed4
--- /dev/null
+++ b/.github/workflows/test-lang-rust-clippy.yml
@@ -0,0 +1,50 @@
+# 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 Clippy Check
+on:
+  workflow_dispatch:
+  push:
+    branches: [ main ]
+  pull_request:
+    branches: [ main ]
+
+permissions:
+  contents: read
+
+env:
+  RUSTFLAGS: -Dwarnings
+
+concurrency:
+  group: ${{ github.workflow }}-${{ github.ref }}
+  cancel-in-progress: true
+
+jobs:
+  clippy_check:
+    runs-on: ubuntu-latest
+    strategy:
+      matrix:
+        rust:
+          - 'stable'
+          - '1.73.0'  # MSRV
+    steps:
+      - uses: actions/checkout@v4
+      - uses: dtolnay/rust-toolchain@nightly
+        with:
+          toolchain: ${{ matrix.rust }}
+          components: clippy
+      - run: cargo clippy --all-features --all-targets -- -Dclippy::all 
-Dunused_imports

Reply via email to