| # 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: Daffodil CI |
| |
| on: [push, pull_request] |
| |
| jobs: |
| test: |
| name: Java ${{ matrix.java_version }}, Scala ${{ matrix.scala_version }}, ${{ matrix.os }} |
| strategy: |
| fail-fast: false |
| matrix: |
| java_version: [ 8, 11, 16 ] |
| scala_version: [ 2.12.13 ] |
| os: [ ubuntu-20.04, windows-2019 ] |
| include: |
| - os: ubuntu-20.04 |
| shell: bash |
| env_cc: clang-10 |
| env_ar: llvm-ar-10 |
| - os: windows-2019 |
| shell: msys2 {0} |
| env_cc: clang |
| env_ar: llvm-ar |
| |
| runs-on: ${{ matrix.os }} |
| defaults: |
| run: |
| shell: ${{ matrix.shell }} |
| env: |
| AR: ${{ matrix.env_ar }} |
| CC: ${{ matrix.env_cc }} |
| SBT: sbt -J-Xms1024m -J-Xmx5120m -J-XX:ReservedCodeCacheSize=512m -J-XX:MaxMetaspaceSize=1024m ++${{ matrix.scala_version }} coverage |
| SBTNOCOV: sbt -J-Xms1024m -J-Xmx5120m -J-XX:ReservedCodeCacheSize=512m -J-XX:MaxMetaspaceSize=1024m ++${{ matrix.scala_version }} |
| steps: |
| |
| ############################################################ |
| # Setup |
| ############################################################ |
| |
| - name: Install Dependencies (Linux) |
| if: runner.os == 'Linux' |
| run: sudo apt-get install -y libmxml-dev |
| |
| - name: Install Dependencies (Windows) |
| if: runner.os == 'Windows' |
| uses: msys2/setup-msys2@v2 |
| with: |
| install: clang diffutils make pkgconf |
| path-type: inherit |
| |
| - name: Check out mxml source (Windows) |
| if: runner.os == 'Windows' |
| uses: actions/checkout@v2.3.4 |
| with: |
| repository: michaelrsweet/mxml |
| ref: v3.2 |
| path: mxml |
| |
| - name: Install mxml library (Windows) |
| if: runner.os == 'Windows' |
| run: | |
| # Our runtime2 tests may break if mxml library is compiled with clang |
| export AR=ar CC=cc |
| cd mxml |
| ./configure --prefix=/usr --disable-shared --disable-threads |
| make install |
| # Workaround for sbt hanging problem |
| echo "COURSIER_CACHE=$temp" >> $GITHUB_ENV |
| echo "COURSIER_CONFIG_DIR=$temp" >> $GITHUB_ENV |
| |
| - name: Setup Java |
| uses: actions/setup-java@v1.4.3 |
| with: |
| java-version: ${{ matrix.java_version }} |
| |
| - name: Check out Repository |
| uses: actions/checkout@v2.3.4 |
| |
| ############################################################ |
| # Build & Package |
| ############################################################ |
| |
| - name: Compile |
| run: $SBT compile Test/compile IntegrationTest/compile |
| |
| - name: Build Documentation |
| run: $SBTNOCOV unidoc |
| |
| - name: Package Zip & Tar |
| run: $SBTNOCOV daffodil-cli/Universal/packageBin daffodil-cli/Universal/packageZipTarball |
| |
| - name: Package RPM (Linux) |
| if: runner.os == 'Linux' |
| run: $SBTNOCOV daffodil-cli/Rpm/packageBin |
| |
| ############################################################ |
| # Test |
| ############################################################ |
| |
| - name: Run Rat Check |
| run: $SBTNOCOV ratCheck || (cat target/rat.txt; exit 1) |
| |
| - name: Run Unit Tests |
| run: $SBT test |
| |
| - name: Run Integration Tests |
| run: $SBT IntegrationTest/test |
| |
| - name: Generate Coverage Report |
| run: $SBT coverageAggregate |
| |
| - name: Upload Coverage Report |
| uses: codecov/codecov-action@v1.3.1 |