1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194
|
name: build
on:
push:
paths-ignore:
- '**/*.md'
- '**/*.rst'
pull_request:
paths-ignore:
- '**/*.md'
- '**/*.rst'
env:
PREREQS_ENV: ${{github.workspace}}/prereqs.sh
SPARK_ENV: ${{github.workspace}}/spark_env.sh
HADOOP_ENV: ${{github.workspace}}/hadoop_env.sh
PREREQS_INSTALL_DIR: ${{github.workspace}}/prereqs
PROTOBUF_VERSION: 3.19.4
CMAKE_INSTALL_PREFIX: ${{github.workspace}}/install
GENOMICSDB_BUILD_DIR: ${{github.workspace}}/build
GENOMICSDB_RELEASE_VERSION: x.y.z.test
HADOOP_VER: 3.2.2
SPARK_VER: 3.0.1
SPARK_HADOOP_VER: 2.7
jobs:
build:
strategy:
fail-fast: false
matrix:
os: [ubuntu-18.04,macos-11]
type: [basic]
java: [8,11]
include:
- os: ubuntu-18.04
type: hdfs
java: 8
#- os: ubuntu-18.04
# type: hdfs
# java: 11
env:
OS_TYPE: ${{matrix.os}}
JAVA_VER: ${{matrix.java}}
JAVA_LINUX: /usr/lib/jvm/java-1.${{matrix.java}}.0-openjdk-amd64/
runs-on: ${{matrix.os}}
steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v2
with:
python-version: 3.6
- uses: actions/setup-java@v1
if: startsWith(matrix.os, 'macos')
with:
java-version: ${{matrix.java}}
- name: Install Java, set path
if: startsWith(matrix.os, 'ubuntu')
shell: bash
run: |
sudo add-apt-repository -y ppa:openjdk-r/ppa
sudo apt update -qq
sudo apt install -yq openjdk-${{matrix.java}}-jdk
echo $JAVA_LINUX/bin >> $GITHUB_PATH
- name: Cache built prerequisites
uses: actions/cache@v2
with:
path: |
${{env.PREREQS_INSTALL_DIR}}
~/.m2/repository
~/awssdk-install
~/gcssdk-install
~/protobuf-install/${{env.PROTOBUF_VERSION}}
key: ${{matrix.os}}-cache-prereqs-v5
# TODO: See https://github.com/actions/cache/pull/285 using platform-independent "pip cache dir"
- name: Cache Python artifacts for Ubuntu
uses: actions/cache@v2
if: startsWith(matrix.os, 'ubuntu')
with:
path: ~/.cache/pip
key: ${{matrix.os}}-pip-${{matrix.python-version}}-v1
- name: Cache Python artifacts for MacOS
uses: actions/cache@v2
if: startsWith(matrix.os, 'macos')
with:
path: ~/Library/Caches/pip
key: ${{matrix.os}}-pip-${{matrix.python-version}}-v1
- name: Cache Distributed FileSystems
if: matrix.type == 'hdfs'
uses: actions/cache@v2
with:
path: ${{runner.workspace}}/hadoop-${{env.HADOOP_VER}}
key: dfs-${{env.HADOOP_VER}}-v2
- name: Install Prerequisites
shell: bash
working-directory: ${{github.workspace}}/scripts/prereqs
run: |
$GITHUB_WORKSPACE/.github/scripts/cleanup_hosts.sh
echo "matrix.os = ${{matrix.os}}"
if [[ ${{matrix.os}} == macos* ]]; then
echo "Installing Prerequistes for MacOS..."
INSTALL_PREFIX=$PREREQS_INSTALL_DIR PREREQS_ENV=$PREREQS_ENV ./install_prereqs.sh
else
echo "Install Prerequisites for Linux.."
sudo INSTALL_PREFIX=$PREREQS_INSTALL_DIR PREREQS_ENV=$PREREQS_ENV ./install_prereqs.sh
fi
echo "cat prereqs env..."
cat $PREREQS_ENV
echo "cat prereqs env DONE"
- name: Install spark and hadoop dependencies
if: matrix.type == 'hdfs'
shell: bash
working-directory: ${{github.workspace}}
run: |
source $GITHUB_WORKSPACE/.github/scripts/install_hadoop.sh
JAVA_HOME=$JAVA_LINUX SPARK_ENV=$SPARK_ENV source $GITHUB_WORKSPACE/.github/scripts/install_spark.sh
env:
INSTALL_DIR: ${{runner.workspace}}
- name: Create Build Directory
shell: bash
run: mkdir -p $GENOMICSDB_BUILD_DIR
- name: Configure CMake Build
shell: bash
working-directory: ${{env.GENOMICSDB_BUILD_DIR}}
run: |
if [[ $JAVA_VER == '11' ]]; then
GENOMICSDB_MAVEN_PROFILE=java11
fi
source $PREREQS_ENV
if [[ $OS_TYPE == 'ubuntu-18.04' ]]; then
JAVA_HOME=$JAVA_LINUX
echo $JAVA_LINUX/bin >> $GITHUB_PATH
fi
# java tests take a very long time to run on MacOS, so limit running the tests to PRs and master/develop branches
BRANCH=${GITHUB_REF##*/}
if [[ ${{matrix.os}} != macos* || ${GITHUB_REF##*/} == master || ${GITHUB_REF##*/} == develop || $GITHUB_BASE_REF == master || $GITHUB_BASE_REF == develop ]]; then
echo "cmake BUILD_JAVA set to 1"
JAVA_BUILD_ARGS="-DBUILD_JAVA=1 -DGENOMICSDB_MAVEN_PROFILE=$GENOMICSDB_MAVEN_PROFILE"
fi
cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=Coverage -DCMAKE_INSTALL_PREFIX=$CMAKE_INSTALL_PREFIX \
-DCMAKE_PREFIX_PATH=$PREREQS_INSTALL_DIR -DGENOMICSDB_PROTOBUF_VERSION=$PROTOBUF_VERSION \
-DGENOMICSDB_RELEASE_VERSION=$GENOMICSDB_RELEASE_VERSION $JAVA_BUILD_ARGS
- name: Build
working-directory: ${{env.GENOMICSDB_BUILD_DIR}}
shell: bash
run: |
if [[ $OS_TYPE == 'ubuntu-18.04' ]]; then
export JAVA_HOME=$JAVA_LINUX
echo $JAVA_LINUX/bin >> $GITHUB_PATH
fi
source $PREREQS_ENV
make -j4
make install
- name: Test
shell: bash
working-directory: ${{env.GENOMICSDB_BUILD_DIR}}
if: matrix.type == 'basic'
run: |
if [[ $OS_TYPE == 'ubuntu-18.04' ]]; then
export JAVA_HOME=$JAVA_LINUX
echo $JAVA_LINUX/bin >> $GITHUB_PATH
fi
python -m pip install --upgrade pip
python -m pip install jsondiff
make test ARGS=-V
- name: Test - Distributed FileSystems
if: matrix.type == 'hdfs'
shell: bash
working-directory: ${{github.workspace}}
run: |
JAVA_HOME=$JAVA_LINUX
source $SPARK_ENV
python -m pip install --upgrade pip
python -m pip install jsondiff
python tests/run_spark_hdfs.py $GENOMICSDB_BUILD_DIR $CMAKE_INSTALL_PREFIX local hdfs://localhost:9000/ client $GENOMICSDB_RELEASE_VERSION $GITHUB_WORKSPACE/tests Coverage
$GITHUB_WORKSPACE/.github/scripts/test_hdfs_htslib_support.sh
- name: Upload Coverage to CodeCov
uses: codecov/codecov-action@v1
|