blob: ca263f26c40e654f0c110427f4e55c6d4bc3e185 [file] [log] [blame]
# 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