Next-generation CI/CD pipelines with RunsOn #12054
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: XGBoost-R-Tests | |
on: [push, pull_request] | |
env: | |
GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} | |
permissions: | |
contents: read # to fetch code (actions/checkout) | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
cancel-in-progress: true | |
jobs: | |
test-Rpkg: | |
runs-on: ${{ matrix.os }} | |
name: Test R on OS ${{ matrix.os }}, R ${{ matrix.r }}, Compiler ${{ matrix.compiler }}, Build ${{ matrix.build }} | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- os: windows-latest | |
r: release | |
compiler: mingw | |
build: autotools | |
- os: ubuntu-latest | |
r: release | |
compiler: none | |
build: cmake | |
env: | |
R_REMOTES_NO_ERRORS_FROM_WARNINGS: true | |
steps: | |
- name: Install system dependencies | |
run: | | |
sudo apt update | |
sudo apt install libcurl4-openssl-dev libssl-dev libssh2-1-dev libgit2-dev libglpk-dev libxml2-dev libharfbuzz-dev libfribidi-dev | |
if: matrix.os == 'ubuntu-latest' | |
- uses: actions/checkout@v4 | |
with: | |
submodules: 'true' | |
- uses: r-lib/actions/setup-r@v2 | |
with: | |
r-version: ${{ matrix.r }} | |
- name: Cache R packages | |
uses: actions/cache@v4 | |
with: | |
path: ${{ env.R_LIBS_USER }} | |
key: ${{ runner.os }}-r-${{ matrix.r }}-7-${{ hashFiles('R-package/DESCRIPTION') }} | |
restore-keys: ${{ runner.os }}-r-${{ matrix.r }}-7-${{ hashFiles('R-package/DESCRIPTION') }} | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: "3.10" | |
architecture: 'x64' | |
- uses: r-lib/actions/setup-tinytex@v2 | |
- name: Install dependencies | |
shell: Rscript {0} | |
run: | | |
source("./R-package/tests/helper_scripts/install_deps.R") | |
- name: Test R | |
run: | | |
python ops/script/test_r_package.py --compiler='${{ matrix.compiler }}' --build-tool="${{ matrix.build }}" --task=check | |
if: matrix.compiler != 'none' | |
- name: Test R | |
run: | | |
python ops/script/test_r_package.py --build-tool="${{ matrix.build }}" --task=check | |
if: matrix.compiler == 'none' | |
test-R-on-Debian: | |
name: Test R package on Debian | |
runs-on: ubuntu-latest | |
container: | |
image: rhub/debian-gcc-release | |
steps: | |
- name: Install system dependencies | |
run: | | |
# Must run before checkout to have the latest git installed. | |
# No need to add pandoc, the container has it figured out. | |
apt update && apt install libcurl4-openssl-dev libssl-dev libssh2-1-dev libgit2-dev libglpk-dev libxml2-dev libharfbuzz-dev libfribidi-dev git -y | |
- name: Trust git cloning project sources | |
run: | | |
git config --global --add safe.directory "${GITHUB_WORKSPACE}" | |
- uses: actions/checkout@v4 | |
with: | |
submodules: 'true' | |
- name: Install dependencies | |
shell: bash -l {0} | |
run: | | |
Rscript -e "source('./R-package/tests/helper_scripts/install_deps.R')" | |
- name: Test R | |
shell: bash -l {0} | |
run: | | |
python3 ops/script/test_r_package.py --r=/usr/bin/R --build-tool=autotools --task=check | |
- uses: dorny/paths-filter@v3 | |
id: changes | |
with: | |
filters: | | |
r_package: | |
- 'R-package/**' | |
- name: Run document check | |
if: steps.changes.outputs.r_package == 'true' | |
run: | | |
python3 ops/script/test_r_package.py --r=/usr/bin/R --task=doc |