244 lines
7.5 KiB
YAML
244 lines
7.5 KiB
YAML
# This is a basic workflow to help you get started with Actions
|
|
|
|
name: XGBoost-CI
|
|
|
|
# Controls when the action will run. Triggers the workflow on push or pull request
|
|
# events but only for the master branch
|
|
on: [push, pull_request]
|
|
|
|
env:
|
|
R_PACKAGES: c('XML', 'igraph', 'data.table', 'magrittr', 'stringi', 'ggplot2', 'DiagrammeR', 'Ckmeans.1d.dp', 'vcd', 'testthat', 'lintr', 'knitr', 'rmarkdown', 'e1071', 'cplm', 'devtools')
|
|
|
|
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
|
|
jobs:
|
|
gtest-cpu:
|
|
name: Test Google C++ test (CPU)
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
os: [macos-10.15]
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
with:
|
|
submodules: 'true'
|
|
- name: Install system packages
|
|
run: |
|
|
brew install lz4 ninja libomp
|
|
- name: Build gtest binary
|
|
run: |
|
|
mkdir build
|
|
cd build
|
|
cmake .. -DGOOGLE_TEST=ON -DUSE_OPENMP=ON -DUSE_DMLC_GTEST=ON -DPLUGIN_LZ4=ON -DPLUGIN_DENSE_PARSER=ON -GNinja
|
|
ninja -v
|
|
- name: Run gtest binary
|
|
run: |
|
|
cd build
|
|
ctest --extra-verbose
|
|
test-with-jvm:
|
|
name: Test JVM on OS ${{ matrix.os }}
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
os: [windows-latest, ubuntu-latest]
|
|
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
with:
|
|
submodules: 'true'
|
|
|
|
- uses: actions/setup-java@v1
|
|
with:
|
|
java-version: 1.8
|
|
|
|
- name: Cache Maven packages
|
|
uses: actions/cache@v2
|
|
with:
|
|
path: ~/.m2
|
|
key: ${{ runner.os }}-m2-${{ hashFiles('./jvm-packages/pom.xml') }}
|
|
restore-keys: ${{ runner.os }}-m2
|
|
|
|
- name: Test XGBoost4J
|
|
run: |
|
|
cd jvm-packages
|
|
mvn test -B -pl :xgboost4j_2.12
|
|
|
|
- name: Test XGBoost4J-Spark
|
|
run: |
|
|
rm -rfv build/
|
|
cd jvm-packages
|
|
mvn -B test
|
|
if: matrix.os == 'ubuntu-latest' # Distributed training doesn't work on Windows
|
|
env:
|
|
RABIT_MOCK: ON
|
|
|
|
lint:
|
|
runs-on: ubuntu-latest
|
|
name: Code linting for Python and C++
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
with:
|
|
submodules: 'true'
|
|
- uses: actions/setup-python@v2
|
|
with:
|
|
python-version: '3.7'
|
|
architecture: 'x64'
|
|
- name: Install Python packages
|
|
run: |
|
|
python -m pip install wheel setuptools
|
|
python -m pip install pylint cpplint numpy scipy scikit-learn
|
|
- name: Run lint
|
|
run: |
|
|
make lint
|
|
|
|
doxygen:
|
|
runs-on: ubuntu-latest
|
|
name: Generate C/C++ API doc using Doxygen
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
with:
|
|
submodules: 'true'
|
|
- uses: actions/setup-python@v2
|
|
with:
|
|
python-version: '3.7'
|
|
architecture: 'x64'
|
|
- name: Install system packages
|
|
run: |
|
|
sudo apt-get install -y --no-install-recommends doxygen graphviz ninja-build
|
|
python -m pip install wheel setuptools
|
|
python -m pip install awscli
|
|
- name: Run Doxygen
|
|
run: |
|
|
mkdir build
|
|
cd build
|
|
cmake .. -DBUILD_C_DOC=ON -GNinja
|
|
ninja -v doc_doxygen
|
|
- name: Extract branch name
|
|
shell: bash
|
|
run: echo "##[set-output name=branch;]$(echo ${GITHUB_REF#refs/heads/})"
|
|
id: extract_branch
|
|
if: github.ref == 'refs/heads/master' || contains(github.ref, 'refs/heads/release_')
|
|
- name: Publish
|
|
run: |
|
|
cd build/
|
|
tar cvjf ${{ steps.extract_branch.outputs.branch }}.tar.bz2 doc_doxygen/
|
|
python -m awscli s3 cp ./${{ steps.extract_branch.outputs.branch }}.tar.bz2 s3://xgboost-docs/ --acl public-read
|
|
if: github.ref == 'refs/heads/master' || contains(github.ref, 'refs/heads/release_')
|
|
env:
|
|
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID_IAM_S3_UPLOADER }}
|
|
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY_IAM_S3_UPLOADER }}
|
|
|
|
sphinx:
|
|
runs-on: ubuntu-latest
|
|
name: Build docs using Sphinx
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
with:
|
|
submodules: 'true'
|
|
- uses: actions/setup-python@v2
|
|
with:
|
|
python-version: '3.7'
|
|
architecture: 'x64'
|
|
- name: Install system packages
|
|
run: |
|
|
sudo apt-get install -y --no-install-recommends graphviz
|
|
python -m pip install wheel setuptools
|
|
python -m pip install -r doc/requirements.txt
|
|
- name: Extract branch name
|
|
shell: bash
|
|
run: echo "##[set-output name=branch;]$(echo ${GITHUB_REF#refs/heads/})"
|
|
id: extract_branch
|
|
if: github.ref == 'refs/heads/master' || contains(github.ref, 'refs/heads/release_')
|
|
- name: Run Sphinx
|
|
run: |
|
|
make -C doc html
|
|
env:
|
|
SPHINX_GIT_BRANCH: ${{ steps.extract_branch.outputs.branch }}
|
|
|
|
lintr:
|
|
runs-on: ${{ matrix.config.os }}
|
|
name: Run R linters on OS ${{ matrix.config.os }}, R ${{ matrix.config.r }}, Compiler ${{ matrix.config.compiler }}, Build ${{ matrix.config.build }}
|
|
strategy:
|
|
matrix:
|
|
config:
|
|
- {os: windows-latest, r: 'release', compiler: 'mingw', build: 'autotools'}
|
|
env:
|
|
R_REMOTES_NO_ERRORS_FROM_WARNINGS: true
|
|
RSPM: ${{ matrix.config.rspm }}
|
|
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
with:
|
|
submodules: 'true'
|
|
|
|
- uses: r-lib/actions/setup-r@master
|
|
with:
|
|
r-version: ${{ matrix.config.r }}
|
|
|
|
- name: Cache R packages
|
|
uses: actions/cache@v2
|
|
with:
|
|
path: ${{ env.R_LIBS_USER }}
|
|
key: ${{ runner.os }}-r-${{ matrix.config.r }}-1-${{ hashFiles('R-package/DESCRIPTION') }}
|
|
restore-keys: ${{ runner.os }}-r-${{ matrix.config.r }}-2-
|
|
|
|
- name: Install dependencies
|
|
shell: Rscript {0}
|
|
run: |
|
|
install.packages(${{ env.R_PACKAGES }},
|
|
repos = 'http://cloud.r-project.org',
|
|
dependencies = c('Depends', 'Imports', 'LinkingTo'))
|
|
|
|
- name: Run lintr
|
|
run: |
|
|
cd R-package
|
|
R.exe CMD INSTALL .
|
|
Rscript.exe tests/helper_scripts/run_lint.R
|
|
|
|
test-with-R:
|
|
runs-on: ${{ matrix.config.os }}
|
|
name: Test R on OS ${{ matrix.config.os }}, R ${{ matrix.config.r }}, Compiler ${{ matrix.config.compiler }}, Build ${{ matrix.config.build }}
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
config:
|
|
- {os: windows-2016, r: 'release', compiler: 'mingw', build: 'autotools'}
|
|
- {os: windows-2016, r: 'release', compiler: 'msvc', build: 'cmake'}
|
|
- {os: windows-2016, r: 'release', compiler: 'mingw', build: 'cmake'}
|
|
env:
|
|
R_REMOTES_NO_ERRORS_FROM_WARNINGS: true
|
|
RSPM: ${{ matrix.config.rspm }}
|
|
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
with:
|
|
submodules: 'true'
|
|
|
|
- uses: r-lib/actions/setup-r@master
|
|
with:
|
|
r-version: ${{ matrix.config.r }}
|
|
|
|
- name: Cache R packages
|
|
uses: actions/cache@v2
|
|
with:
|
|
path: ${{ env.R_LIBS_USER }}
|
|
key: ${{ runner.os }}-r-${{ matrix.config.r }}-1-${{ hashFiles('R-package/DESCRIPTION') }}
|
|
restore-keys: ${{ runner.os }}-r-${{ matrix.config.r }}-2-
|
|
|
|
- name: Install dependencies
|
|
shell: Rscript {0}
|
|
run: |
|
|
install.packages(${{ env.R_PACKAGES }},
|
|
repos = 'http://cloud.r-project.org',
|
|
dependencies = c('Depends', 'Imports', 'LinkingTo'))
|
|
|
|
- uses: actions/setup-python@v2
|
|
with:
|
|
python-version: '3.7'
|
|
architecture: 'x64'
|
|
|
|
- name: Test R
|
|
run: |
|
|
python tests/ci_build/test_r_package.py --compiler="${{ matrix.config.compiler }}" --build-tool="${{ matrix.config.build }}"
|