| # 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: Fury CI |
| |
| on: |
| push: |
| branches: |
| - main |
| - 'releases/**' |
| - 'deploy/**' |
| - 'test*' |
| tags: |
| - v* |
| pull_request: |
| paths-ignore: |
| - '**/*.md' |
| - 'docs/**' |
| - 'LICENSE' |
| - '.vscode/**' |
| - '.gitignore' |
| - 'licenses/**' |
| - 'DISCLAIMER' |
| - 'NOTICE' |
| types: ['opened', 'reopened', 'synchronize'] |
| |
| jobs: |
| java: |
| name: Java CI |
| runs-on: ubuntu-latest |
| env: |
| MY_VAR: "PATH" |
| strategy: |
| matrix: |
| java-version: ["8", "11", "17", "21"] |
| steps: |
| - uses: actions/checkout@v4 |
| - name: Set up JDK ${{ matrix.java-version }} |
| uses: actions/setup-java@v4 |
| with: |
| java-version: ${{ matrix.java-version }} |
| distribution: 'temurin' |
| - name: Install bazel |
| run: ./ci/run_ci.sh install_bazel |
| - name: Install python |
| run: ./ci/run_ci.sh install_python |
| - name: Install pyfury |
| run: ./ci/run_ci.sh install_pyfury |
| - name: Run CI with Maven |
| run: ./ci/run_ci.sh java${{ matrix.java-version }} |
| openj9: |
| name: Openj9 Java CI |
| runs-on: ubuntu-latest |
| env: |
| MY_VAR: "PATH" |
| strategy: |
| matrix: |
| # String in openj9 1.8 share byte array by offset, fury doesn't allow it. |
| java-version: ["21"] |
| steps: |
| - uses: actions/checkout@v4 |
| - name: Set up JDK ${{ matrix.java-version }} |
| uses: actions/setup-java@v4 |
| with: |
| java-version: ${{ matrix.java-version }} |
| distribution: 'adopt-openj9' |
| - name: Install bazel |
| run: ./ci/run_ci.sh install_bazel |
| - name: Install python |
| run: ./ci/run_ci.sh install_python |
| - name: Install pyfury |
| run: ./ci/run_ci.sh install_pyfury |
| - name: Run CI with Maven |
| run: ./ci/run_ci.sh java${{ matrix.java-version }} |
| graalvm: |
| name: GraalVM CI |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/checkout@v4 |
| - uses: graalvm/setup-graalvm@v1 |
| with: |
| java-version: '21' |
| distribution: 'graalvm' |
| github-token: ${{ secrets.GITHUB_TOKEN }} |
| native-image-job-reports: 'true' |
| - name: Build native image and run |
| run: ./ci/run_ci.sh graalvm_test |
| |
| scala: |
| name: Scala CI |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/checkout@v4 |
| - name: Set up JDK8 |
| uses: actions/setup-java@v4 |
| with: |
| java-version: 8 |
| distribution: 'temurin' |
| - name: Install fury java |
| run: cd java && mvn -T10 --no-transfer-progress clean install -DskipTests && cd - |
| - name: Test |
| run: | |
| # Avoid sbt download jackson-databind error |
| rm -rf /home/runner/.m2/repository/com/fasterxml/jackson/ |
| cd scala && sbt +test && cd - |
| |
| integration_tests: |
| name: Integration Tests |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/checkout@v4 |
| - name: Set up JDK8 |
| uses: actions/setup-java@v4 |
| with: |
| java-version: 8 |
| distribution: 'temurin' |
| - name: Run CI |
| run: ./ci/run_ci.sh integration_tests |
| |
| javascript: |
| name: JavaScript CI |
| strategy: |
| matrix: |
| node-version: [14.x, 16.x, 18.x, 20.x] |
| os: [ubuntu-latest, macos-13, windows-2022] |
| runs-on: ${{ matrix.os }} |
| steps: |
| - uses: actions/checkout@v4 |
| - name: Use Node.js ${{ matrix.node-version }} |
| uses: actions/setup-node@v4 |
| with: |
| node-version: ${{ matrix.node-version }} |
| - name: Upgrade npm |
| run: npm install -g npm@8 |
| # node-gyp needs to use python and relies on the distutils module. |
| # The distutils module has been removed starting from python 3.12 |
| # (see https://docs.python.org/3.10/library/distutils.html). Some |
| # OS (such as macos -latest) uses python3.12 by default, so python 3.8 |
| # is used here to avoid this problem. |
| - name: Set up Python3.8 |
| uses: actions/setup-python@v5 |
| with: |
| python-version: 3.8 |
| - name: Run CI with NodeJS |
| run: python ./ci/run_ci.py javascript |
| |
| rust: |
| name: Rust CI |
| strategy: |
| matrix: |
| os: [ubuntu-latest, macos-12, macos-14] # macos-12: x86, macos-14: arm64 |
| runs-on: ${{ matrix.os }} |
| timeout-minutes: 45 |
| steps: |
| - uses: actions/checkout@v4 |
| - name: Set up Python 3.11 |
| uses: actions/setup-python@v5 |
| with: |
| python-version: 3.11 |
| - uses: dtolnay/rust-toolchain@nightly |
| - name: Run Rust CI |
| run: python ./ci/run_ci.py rust |
| |
| cpp: |
| name: C++ CI |
| strategy: |
| matrix: |
| os: [ubuntu-latest, macos-12, macos-14] # macos-12: x86, macos-14: arm64 |
| runs-on: ${{ matrix.os }} |
| steps: |
| - uses: actions/checkout@v4 |
| - name: Set up Python 3.11 |
| uses: actions/setup-python@v5 |
| with: |
| python-version: 3.11 |
| - name: Run C++ CI with Bazel |
| run: python ./ci/run_ci.py cpp |
| python: |
| name: Python CI |
| # Fix python 3.6 install issue, see |
| # https://github.com/rwth-i6/returnn/commit/38ecab17d781c4b74db6a174c8097187380b4ddc |
| runs-on: ubuntu-20.04 |
| strategy: |
| matrix: |
| python-version: [3.7, 3.12] |
| steps: |
| - uses: actions/checkout@v4 |
| - name: Set up Python ${{ matrix.python-version }} |
| uses: actions/setup-python@v5 |
| with: |
| python-version: ${{ matrix.python-version }} |
| - name: Install bazel |
| run: ./ci/run_ci.sh install_bazel |
| - name: Run Python CI |
| run: ./ci/run_ci.sh python |
| |
| go: |
| name: Golang CI |
| runs-on: ubuntu-latest |
| strategy: |
| matrix: |
| go-version: [ '1.13', '1.18' ] |
| steps: |
| - uses: actions/checkout@v4 |
| - name: Setup Go ${{ matrix.go-version }} |
| uses: actions/setup-go@v4 |
| with: |
| go-version: ${{ matrix.go-version }} |
| - name: Display Go version |
| run: go version |
| - name: Install bazel |
| run: ./ci/run_ci.sh install_bazel |
| - name: Install python |
| run: ./ci/run_ci.sh install_python |
| - name: Install pyfury |
| run: ./ci/run_ci.sh install_pyfury |
| - name: Run Golang CI |
| run: ./ci/run_ci.sh go |
| |
| lint: |
| name: Code Style Check |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/checkout@v4 |
| - name: Set up JDK ${{ matrix.java-version }} |
| uses: actions/setup-java@v4 |
| with: |
| java-version: 21 |
| distribution: 'oracle' |
| - name: Check License Header |
| uses: korandoru/hawkeye@v3 |
| - name: Set up Python 3.8 |
| uses: actions/setup-python@v5 |
| with: |
| python-version: 3.8 |
| - name: Check code style |
| run: ./ci/run_ci.sh format |