Skip to content

Commit cd34cdc

Browse files
committed
New data collected at 2025-07-07_00-02-20
1 parent 426170f commit cd34cdc

15 files changed

Lines changed: 361 additions & 30 deletions

github-actions/brms/R-CMD-check.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,11 @@ jobs:
8686
cmdstanr::install_cmdstan(cores = parallel::detectCores())
8787
shell: Rscript {0}
8888

89+
- name: Install colorspace manually
90+
run: |
91+
install.packages("colorspace", repos = "https://cran.rstudio.com/")
92+
shell: Rscript {0}
93+
8994
- uses: r-lib/actions/check-r-package@v2
9095
with:
9196
build_args: 'c("--no-manual", "--no-build-vignettes")'

github-actions/mlflow/autoformat.yml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ jobs:
8080
changed_files="$(gh pr view --repo ${{ github.repository }} ${{ needs.check-comment.outputs.pull_number }} --json files --jq '.files.[].path')"
8181
protos=$([[ -z $(echo "$changed_files" | grep '^\(mlflow/protos\|tests/protos\)') ]] && echo "false" || echo "true")
8282
js=$([[ -z $(echo "$changed_files" | grep '^mlflow/server/js') ]] && echo "false" || echo "true")
83+
docs=$([[ -z $(echo "$changed_files" | grep '^docs/') ]] && echo "false" || echo "true")
8384
r=$([[ -z $(echo "$changed_files" | grep '^mlflow/R/mlflow') ]] && echo "false" || echo "true")
8485
db=$([[ -z $(echo "$changed_files" | grep '^mlflow/store/db_migrations/') ]] && echo "false" || echo "true")
8586
echo "protos=$protos" >> $GITHUB_OUTPUT
@@ -151,6 +152,14 @@ jobs:
151152
working-directory: mlflow/server/js
152153
run: |
153154
yarn i18n
155+
- if: steps.diff.outputs.docs == 'true'
156+
working-directory: docs
157+
run: |
158+
yarn install
159+
- if: steps.diff.outputs.docs == 'true'
160+
working-directory: docs
161+
run: |
162+
yarn prettier:fix
154163
# ************************************************************************
155164
# R
156165
# ************************************************************************

github-actions/mlflow/copilot-setup-steps.yml

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
name: copilot-setup-steps
22

3-
on: workflow_dispatch
3+
on:
4+
workflow_dispatch:
5+
pull_request:
6+
paths:
7+
- .github/workflows/copilot-setup-steps.yml
48

59
jobs:
610
copilot-setup-steps:
@@ -13,7 +17,7 @@ jobs:
1317
- uses: ./.github/actions/setup-python
1418
- name: pre-commit setup
1519
run: |
16-
uv pip install --system -r requirements/lint-requirements.txt
20+
uv pip install --system . -r requirements/lint-requirements.txt
1721
dev/install-taplo.sh
1822
dev/install-typos.sh
1923
dev/install-conftest.sh

github-actions/mlflow/cross-version-tests.yml

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -146,15 +146,22 @@ jobs:
146146
- uses: ./.github/actions/setup-java
147147
with:
148148
java-version: ${{ matrix.java }}
149-
# TODO: Remove this step once we remove the pyspark constraint in requirements/constraints.txt
150-
- name: Remove pyspark constraint
149+
- name: Remove constraints
151150
run: |
152151
if [ "${{ matrix.package }}" = "pyspark" ]; then
152+
# TODO: Remove once we remove the pyspark constraint in requirements/constraints.txt
153153
sed -i '/^pyspark/d' requirements/constraints.txt
154+
elif [ "${{ matrix.package }}" = "transformers" ]; then
155+
# TODO: Remove once https://github.com/huggingface/transformers/issues/39115 is resolved
156+
sed -i '/^transformers</d' requirements/constraints.txt
157+
fi
158+
159+
if ! git diff --exit-code requirements/constraints.txt; then
160+
git diff
154161
git config user.name 'mlflow-app[bot]'
155162
git config user.email 'mlflow-app[bot]@users.noreply.github.com'
156163
git add requirements/constraints.txt
157-
git commit -m "Remove pyspark constraints for testing"
164+
git commit -m "Remove constraints for testing"
158165
fi
159166
- name: Install mlflow & test dependencies
160167
run: |
@@ -210,15 +217,22 @@ jobs:
210217
- uses: ./.github/actions/setup-java
211218
with:
212219
java-version: ${{ matrix.java }}
213-
# TODO: Remove this step once we remove the pyspark constraint in requirements/constraints.txt
214-
- name: Remove pyspark constraint
220+
- name: Remove constraints
215221
run: |
216222
if [ "${{ matrix.package }}" = "pyspark" ]; then
223+
# TODO: Remove once we remove the pyspark constraint in requirements/constraints.txt
217224
sed -i '/^pyspark/d' requirements/constraints.txt
225+
elif [ "${{ matrix.package }}" = "transformers" ]; then
226+
# TODO: Remove once https://github.com/huggingface/transformers/issues/39115 is resolved
227+
sed -i '/^transformers</d' requirements/constraints.txt
228+
fi
229+
230+
if ! git diff --exit-code requirements/constraints.txt; then
231+
git diff
218232
git config user.name 'mlflow-app[bot]'
219233
git config user.email 'mlflow-app[bot]@users.noreply.github.com'
220234
git add requirements/constraints.txt
221-
git commit -m "Remove pyspark constraints for testing"
235+
git commit -m "Remove constraints for testing"
222236
fi
223237
- name: Install mlflow & test dependencies
224238
run: |

github-actions/mlflow/docs.yml

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
name: docs
2+
3+
on:
4+
# TODO: Support deploying docs on push
5+
# push:
6+
# paths:
7+
# - docs/**
8+
# - .github/workflows/docs.yml
9+
# branches:
10+
# - master
11+
# - branch-[0-9]+.[0-9]+
12+
pull_request:
13+
types:
14+
- opened
15+
- synchronize
16+
- reopened
17+
- ready_for_review
18+
paths:
19+
- docs/**
20+
- .github/workflows/docs.yml
21+
22+
concurrency:
23+
group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.ref }}
24+
cancel-in-progress: true
25+
26+
defaults:
27+
run:
28+
working-directory: docs
29+
30+
jobs:
31+
check:
32+
if: github.event_name != 'pull_request' || github.event.pull_request.draft == false
33+
permissions:
34+
contents: read
35+
timeout-minutes: 30
36+
runs-on: ubuntu-latest
37+
steps:
38+
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
39+
- uses: ./.github/actions/setup-node
40+
- name: Install dependencies
41+
run: |
42+
yarn install --immutable
43+
- name: Run lint
44+
run: |
45+
yarn eslint
46+
- name: Run prettier
47+
run: |
48+
yarn prettier:check
49+
50+
build:
51+
if: github.event_name != 'pull_request' || github.event.pull_request.draft == false
52+
permissions:
53+
contents: read
54+
timeout-minutes: 30
55+
runs-on: ubuntu-latest
56+
steps:
57+
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
58+
- uses: ./.github/actions/setup-node
59+
- uses: ./.github/actions/setup-python
60+
- run: |
61+
uv pip install --system .. -r ../requirements/doc-requirements.txt
62+
- run: |
63+
yarn install --immutable
64+
- name: Build docs
65+
run: |
66+
yarn convert-notebooks
67+
yarn build
68+
- name: Upload build artifacts
69+
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
70+
with:
71+
name: docs-build-${{ github.run_id }}
72+
path: docs/build
73+
retention-days: 1
74+
if-no-files-found: error
75+
76+
# `github.event.workflow_run.pull_requests` is empty when a PR is created from a fork:
77+
# https://github.com/orgs/community/discussions/25220#discussioncomment-11001085
78+
- name: Save PR number
79+
env:
80+
PR_NUMBER: ${{ github.event.pull_request.number }}
81+
run: |
82+
echo $PR_NUMBER > /tmp/pr_number.txt
83+
cat /tmp/pr_number.txt
84+
- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
85+
with:
86+
name: pr_number
87+
path: /tmp/pr_number.txt
88+
retention-days: 1
89+
if-no-files-found: error

github-actions/mlflow/js.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,9 @@ jobs:
7575
- name: Run extract-i18n lint
7676
run: |
7777
yarn i18n:check
78+
- name: Run type-check
79+
run: |
80+
yarn type-check
7881
- name: Run tests
7982
run: |
8083
yarn test --silent ${{ matrix.option }} src/experiment-tracking/components
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
name: External Link Checker
2+
3+
on:
4+
schedule:
5+
# Runs at 00:00 UTC every day
6+
- cron: "0 13 * * *"
7+
workflow_dispatch: # Allow manual runs
8+
pull_request:
9+
paths:
10+
- ".github/workflows/link-checker.yml"
11+
12+
concurrency:
13+
group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.ref }}
14+
cancel-in-progress: true
15+
16+
defaults:
17+
run:
18+
shell: bash --noprofile --norc -exo pipefail {0}
19+
working-directory: docs
20+
21+
jobs:
22+
check-external-links:
23+
# Only run on the main repository
24+
if: github.repository == 'mlflow/mlflow'
25+
permissions:
26+
contents: read
27+
timeout-minutes: 30
28+
runs-on: ubuntu-latest
29+
steps:
30+
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
31+
- uses: ./.github/actions/setup-node
32+
with:
33+
cache: "yarn"
34+
- name: Install dependencies
35+
run: |
36+
yarn install --immutable
37+
- name: Run external links checker
38+
run: |
39+
yarn run check-links

github-actions/mlflow/lint.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,3 +63,8 @@ jobs:
6363
NO_FIX: "true"
6464
run: |
6565
pre-commit run --all-files
66+
67+
- name: Test clint
68+
run: |
69+
uv run --isolated --no-project --with pytest==8.4.0 --with ./dev/clint \
70+
pytest --confcutdir=dev/clint dev/clint
Lines changed: 102 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,115 @@
11
name: Preview docs
22

33
on:
4-
pull_request_target:
4+
workflow_run:
5+
workflows: [docs]
6+
types: [completed]
57

68
jobs:
9+
fail-early:
10+
if: github.repository == 'mlflow/mlflow' && github.event.workflow_run.status == 'completed'
11+
runs-on: ubuntu-latest
12+
permissions:
13+
pull-requests: write # To post comments on PRs
14+
timeout-minutes: 10
15+
outputs:
16+
should_continue: ${{ github.event.workflow_run.conclusion == 'success' }}
17+
pr_number: ${{ steps.pr_number.outputs.pr_number }}
18+
steps:
19+
- uses: actions/download-artifact@95815c38cf2ff2164869cbab79da8d1f422bc89e # v4.2.1
20+
with:
21+
github-token: ${{ secrets.GITHUB_TOKEN }}
22+
run-id: ${{ github.event.workflow_run.id }}
23+
name: pr_number
24+
path: /tmp
25+
- name: Set PR number
26+
id: pr_number
27+
run: |
28+
cat /tmp/pr_number.txt
29+
echo "pr_number=$(cat /tmp/pr_number.txt)" >> $GITHUB_OUTPUT
30+
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
31+
if: github.event.workflow_run.conclusion == 'failure'
32+
with:
33+
sparse-checkout: |
34+
.github
35+
- name: Handle docs workflow failure
36+
if: github.event.workflow_run.conclusion == 'failure'
37+
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
38+
env:
39+
COMMIT_SHA: ${{ github.event.workflow_run.head_sha }}
40+
PULL_NUMBER: ${{ steps.pr_number.outputs.pr_number }}
41+
WORKFLOW_RUN_ID: ${{ github.run_id }}
42+
STAGE: failed
43+
DOCS_WORKFLOW_RUN_URL: ${{ github.event.workflow_run.html_url }}
44+
with:
45+
script: |
46+
const script = require(
47+
`${process.env.GITHUB_WORKSPACE}/.github/workflows/preview-comment.js`
48+
);
49+
await script({ context, github, env: process.env });
50+
751
main:
8-
if: github.repository == 'mlflow/mlflow'
52+
needs: [fail-early]
53+
if: needs.fail-early.outputs.should_continue == 'true'
954
runs-on: ubuntu-latest
1055
permissions:
11-
statuses: read # preview_docs.py checks PR statuses
12-
pull-requests: write # preview_docs.py comments on PRs
56+
pull-requests: write # To post comments on PRs
57+
actions: write # To delete artifacts
1358
timeout-minutes: 10
1459
steps:
1560
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
16-
- uses: ./.github/actions/setup-python
17-
- name: Install dependencies
18-
run: |
19-
pip install requests
61+
with:
62+
sparse-checkout: |
63+
.github
64+
- name: Download build artifact
65+
uses: actions/download-artifact@95815c38cf2ff2164869cbab79da8d1f422bc89e # v4.2.1
66+
with:
67+
github-token: ${{ secrets.GITHUB_TOKEN }}
68+
run-id: ${{ github.event.workflow_run.id }}
69+
name: docs-build-${{ github.event.workflow_run.id }}
70+
path: downloaded-artifact
71+
- uses: ./.github/actions/setup-node
72+
- name: Deploy to Netlify
73+
id: netlify_deploy
74+
working-directory: downloaded-artifact
75+
env:
76+
NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
77+
NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }}
78+
PR_NUMBER: ${{ needs.fail-early.outputs.pr_number }}
79+
RUN_ID: ${{ github.run_id }}
80+
run: |-
81+
OUTPUT=$(npx -y netlify-cli deploy \
82+
--dir=. \
83+
--no-build \
84+
--message="PR Preview #${PR_NUMBER} - GitHub Run ID: $RUN_ID" \
85+
--alias="pr-${PR_NUMBER}" \
86+
--json)
87+
DEPLOY_URL=$(echo "$OUTPUT" | jq -r '.deploy_url')
88+
echo "deploy_url=$DEPLOY_URL" >> $GITHUB_OUTPUT
89+
continue-on-error: true
2090
- name: Create preview link
91+
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
2192
env:
22-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
23-
CIRCLE_TOKEN: ${{ secrets.CIRCLE_TOKEN }}
24-
run: |
25-
python dev/preview_docs.py \
26-
--commit-sha ${{ github.event.pull_request.head.sha }} \
27-
--pull-number ${{ github.event.pull_request.number }} \
28-
--workflow-run-id ${{ github.run_id }}
93+
COMMIT_SHA: ${{ github.event.workflow_run.head_sha }}
94+
PULL_NUMBER: ${{ needs.fail-early.outputs.pr_number }}
95+
WORKFLOW_RUN_ID: ${{ github.run_id }}
96+
STAGE: ${{ steps.netlify_deploy.outcome == 'success' && 'completed' || 'failed' }}
97+
NETLIFY_URL: ${{ steps.netlify_deploy.outputs.deploy_url }}
98+
DOCS_WORKFLOW_RUN_URL: ${{ github.event.workflow_run.html_url }}
99+
with:
100+
script: |
101+
const script = require(
102+
`${process.env.GITHUB_WORKSPACE}/.github/workflows/preview-comment.js`
103+
);
104+
await script({ context, github, env: process.env });
105+
- name: Delete Build Artifact
106+
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
107+
env:
108+
RUN_ID: ${{ github.event.workflow_run.id }}
109+
ARTIFACT_NAME: docs-build-${{ github.event.workflow_run.id }}
110+
with:
111+
script: |
112+
const script = require(
113+
`${process.env.GITHUB_WORKSPACE}/.github/workflows/delete-artifact.js`
114+
);
115+
await script({ context, github, env: process.env });

0 commit comments

Comments
 (0)