Skip to content

[WIP] Next-generation CI/CD pipelines with RunsOn #6

[WIP] Next-generation CI/CD pipelines with RunsOn

[WIP] Next-generation CI/CD pipelines with RunsOn #6

Workflow file for this run

name: XGBoost CI (Lint)
on: [push, pull_request]
permissions:
contents: read # to fetch code (actions/checkout)
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
env:
BRANCH_NAME: >-
${{ github.event.pull_request.number && 'PR-' }}${{ github.event.pull_request.number || github.ref_name }}
jobs:
build-containers:
name: Build CI containers (${{ matrix.container_id }})
runs-on:
- runs-on=${{ github.run_id }}
- runner=${{ matrix.runner }}
strategy:
fail-fast: false
matrix:
include:
- container_id: xgb-ci.clang_tidy
runner: linux-amd64-cpu
steps:
# Restart Docker daemon so that it recognizes the ephemeral disks
- run: sudo systemctl restart docker
- uses: actions/[email protected]
with:
submodules: "true"
- name: Build ${{ matrix.container_id }}
run: bash ops/docker_build.sh
env:
CONTAINER_ID: ${{ matrix.container_id }}
clang-tidy:
name: Run clang-tidy
needs: build-containers
runs-on:
- runs-on=${{ github.run_id }}
- runner=linux-amd64-cpu
steps:
# Restart Docker daemon so that it recognizes the ephemeral disks
- run: sudo systemctl restart docker
- uses: actions/[email protected]
with:
submodules: "true"
- name: Fetch container from cache
run: bash ops/docker_build.sh
env:
CONTAINER_ID: xgb-ci.clang_tidy
- run: bash ops/pipeline/run-clang-tidy.sh
python-mypy-lint:
runs-on: ubuntu-latest
name: Type and format checks for the Python package
steps:
- uses: actions/[email protected]
with:
submodules: 'true'
- uses: conda-incubator/[email protected]
with:
miniforge-variant: Miniforge3
miniforge-version: latest
activate-environment: python_lint
environment-file: ops/conda_env/python_lint.yml
use-mamba: true
- name: Display Conda env
shell: bash -el {0}
run: |
conda info
conda list
- name: Run mypy
shell: bash -el {0}
run: |
python ops/script/lint_python.py --format=0 --type-check=1 --pylint=0
- name: Run formatter
shell: bash -el {0}
run: |
python ops/script/lint_python.py --format=1 --type-check=0 --pylint=0
- name: Run pylint
shell: bash -el {0}
run: |
python ops/script/lint_python.py --format=0 --type-check=0 --pylint=1
cpp-lint:
runs-on: ubuntu-latest
name: Code linting for C++
steps:
- uses: actions/[email protected]
with:
submodules: 'true'
- uses: actions/[email protected]
with:
python-version: "3.10"
architecture: 'x64'
- name: Install Python packages
run: |
python -m pip install wheel setuptools cmakelint cpplint==1.6.1 pylint
- name: Run lint
run: |
python3 ops/script/lint_cpp.py
bash ops/script/lint_cmake.sh
lintr:
runs-on: ${{ matrix.os }}
name: Run R linters on OS ${{ matrix.os }}, R ${{ matrix.r }}
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-latest
r: "release"
env:
R_REMOTES_NO_ERRORS_FROM_WARNINGS: true
steps:
- uses: actions/[email protected]
with:
submodules: 'true'
- uses: r-lib/actions/[email protected]
with:
r-version: ${{ matrix.r }}
- name: Cache R packages
uses: actions/[email protected]
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') }}
- name: Install dependencies
shell: Rscript {0}
run: |
source("./R-package/tests/helper_scripts/install_deps.R")
- name: Run lintr
run: |
MAKEFLAGS="-j$(nproc)" R CMD INSTALL R-package/
Rscript ops/script/lint_r.R $(pwd)