Examples #378
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: Examples | |
on: | |
pull_request: | |
types: | |
- opened | |
- synchronize | |
- reopened | |
- ready_for_review | |
schedule: | |
# Run this action daily at 13:00 UTC | |
- cron: "0 13 * * *" | |
workflow_dispatch: | |
inputs: | |
repository: | |
description: > | |
[Optional] Repository name with owner. For example, mlflow/mlflow. | |
Defaults to the repository that triggered a workflow. | |
required: false | |
default: "" | |
ref: | |
description: > | |
[Optional] The branch, tag or SHA to checkout. When checking out the repository that | |
triggered a workflow, this defaults to the reference or SHA for that event. Otherwise, | |
uses the default branch. | |
required: false | |
default: "" | |
permissions: | |
contents: read | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.ref }} | |
cancel-in-progress: true | |
defaults: | |
run: | |
shell: bash --noprofile --norc -exo pipefail {0} | |
env: | |
MLFLOW_HOME: /home/runner/work/mlflow/mlflow | |
MLFLOW_CONDA_HOME: /usr/share/miniconda | |
jobs: | |
examples: | |
runs-on: ubuntu-latest | |
timeout-minutes: 120 | |
if: github.event_name == 'workflow_dispatch' || (github.event_name == 'schedule' && github.repository == 'mlflow-automation/mlflow') || (github.event_name == 'pull_request' && github.event.pull_request.draft == false) | |
strategy: | |
fail-fast: false | |
matrix: | |
group: [1, 2] | |
include: | |
- splits: 2 | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
repository: ${{ github.event_name == 'schedule' && 'mlflow/mlflow' || github.event.inputs.repository }} | |
ref: ${{ github.event.inputs.ref }} | |
submodules: recursive | |
- uses: ./.github/actions/free-disk-space | |
- name: Check diff | |
id: check-diff | |
if: github.event_name == 'pull_request' | |
run: | | |
REPO="${{ github.repository }}" | |
PR_NUMBER="${{ github.event.pull_request.number }}" | |
BASE_REF="${{ github.base_ref }}" | |
CHANGED_FILES=$(python dev/list_changed_files.py --repository $REPO --pr-num $PR_NUMBER | grep "tests/examples\|examples" || true); | |
EXAMPLES_CHANGED=$([[ ! -z "$CHANGED_FILES" ]] && echo "true" || echo "false") | |
echo -e "CHANGED_FILES:\nCHANGED_FILES" | |
echo "EXAMPLES_CHANGED: $EXAMPLES_CHANGED" | |
echo "examples_changed=$EXAMPLES_CHANGED" >> $GITHUB_OUTPUT | |
- uses: ./.github/actions/setup-python | |
- uses: ./.github/actions/setup-pyenv | |
- name: Install dependencies | |
if: ${{ github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' || steps.check-diff.outputs.examples_changed == 'true' }} | |
run: | | |
source ./dev/install-common-deps.sh --ml | |
- name: Run example tests | |
if: ${{ github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' || steps.check-diff.outputs.examples_changed == 'true' }} | |
env: | |
SPARK_LOCAL_IP: localhost | |
run: | | |
pytest --splits=${{ matrix.splits }} --group=${{ matrix.group }} --serve-wheel tests/examples --durations=30 | |
- name: Remove conda environments | |
run: | | |
conda remove --all --yes --name test-environment | |
./dev/remove-conda-envs.sh | |
- name: Show disk usage | |
run: | | |
df -h | |
docker: | |
runs-on: ubuntu-latest | |
timeout-minutes: 120 | |
if: github.event_name == 'workflow_dispatch' || (github.event_name == 'schedule' && github.repository == 'mlflow-automation/mlflow') || (github.event_name == 'pull_request' && github.event.pull_request.draft == false) | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
repository: ${{ github.event_name == 'schedule' && 'mlflow/mlflow' || github.event.inputs.repository }} | |
ref: ${{ github.event.inputs.ref }} | |
submodules: recursive | |
- name: Check diff | |
id: check-diff | |
if: github.event_name == 'pull_request' | |
run: | | |
REPO="${{ github.repository }}" | |
PR_NUMBER="${{ github.event.pull_request.number }}" | |
CHANGED_FILES=$(python dev/list_changed_files.py --repository $REPO --pr-num $PR_NUMBER | grep "Dockerfile\|\.dockerignore" || true); | |
DOCKER_CHANGED=$([[ ! -z "$CHANGED_FILES" ]] && echo "true" || echo "false") | |
echo -e "CHANGED_FILES:\nCHANGED_FILES" | |
echo "DOCKER_CHANGED: $DOCKER_CHANGED" | |
echo "docker_changed=$DOCKER_CHANGED" >> $GITHUB_OUTPUT | |
- name: Run docker tests | |
if: ${{ github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' || steps.check-diff.outputs.docker_changed == 'true' }} | |
run: | | |
docker build -t mlflow_test_build . && docker images | grep mlflow_test_build | |
- name: Show disk usage | |
run: | | |
df -h |