Skip to content

Commit 79b9a72

Browse files
committed
New data collected at 2026-02-23_00-03-50
1 parent 085b455 commit 79b9a72

33 files changed

Lines changed: 674 additions & 192 deletions
Lines changed: 46 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -1,86 +1,68 @@
1-
name: Coverage
2-
1+
# Workflow derived from https://github.com/r-lib/actions/tree/v2/examples
2+
# Need help debugging build failures? Start at https://github.com/r-lib/actions#where-to-find-help
33
on:
44
push:
5-
branches:
6-
- master
5+
branches: [main, master]
76
pull_request:
8-
branches:
9-
- master
7+
branches: [main, master]
108

11-
jobs:
12-
cleanup:
13-
name: Cancel Previous Runs
14-
runs-on: ubuntu-latest
15-
steps:
16-
- uses: styfle/cancel-workflow-action@0.12.1
17-
with:
18-
access_token: ${{ github.token }}
9+
name: Coverage
1910

20-
codecov:
11+
permissions: read-all
12+
13+
jobs:
14+
test-coverage:
2115
if: contains(github.event.head_commit.message, '[ci skip]') == false
22-
name: codecov ${{ matrix.os }}
23-
strategy:
24-
fail-fast: false
25-
matrix:
26-
include:
27-
# - os: ubuntu-latest
28-
# log_file: /tmp/languageserver/ubuntu-log
29-
- os: macos-latest
30-
log_file: /tmp/languageserver/macos-log
31-
# - os: windows-latest
32-
# log_file: C:/tmp/languageserver/windows-log
33-
runs-on: ${{ matrix.os }}
16+
runs-on: ubuntu-latest
3417
env:
18+
GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }}
3519
NOT_CRAN: true
3620
_R_CHECK_CRAN_INCOMING_: false
3721
R_LANGSVR_LOG: ${{ matrix.log_file }}
3822
R_LANGSVR_POOL_SIZE: 1
3923
R_LANGSVR_TEST_FAST: NO
24+
4025
steps:
41-
- uses: actions/checkout@v4
26+
- uses: actions/checkout@v6
4227
- uses: r-lib/actions/setup-r@v2
4328
with:
29+
use-public-rspm: true
4430
r-version: release
45-
- name: Create log directory on Linux or macOS
46-
if: runner.os != 'Windows'
47-
run: mkdir -p $(dirname ${{ env.R_LANGSVR_LOG }})
48-
- name: Create log directory on Windows
49-
if: runner.os == 'Windows'
50-
run: New-Item -ItemType directory -Path (Split-Path -Parent ${{ env.R_LANGSVR_LOG }})
51-
- name: Query dependencies
31+
32+
- uses: r-lib/actions/setup-r-dependencies@v2
33+
with:
34+
extra-packages: any::covr, any::xml2
35+
needs: coverage
36+
37+
- name: Test coverage
5238
run: |
53-
install.packages('remotes')
54-
saveRDS(remotes::dev_package_deps(dependencies = TRUE), ".github/depends.Rds", version = 2)
55-
writeLines(sprintf("R-%i.%i", getRversion()$major, getRversion()$minor), ".github/R-version")
39+
cov <- covr::package_coverage(
40+
quiet = FALSE,
41+
clean = FALSE,
42+
install_path = file.path(normalizePath(Sys.getenv("RUNNER_TEMP"), winslash = "/"), "package")
43+
)
44+
print(cov)
45+
covr::to_cobertura(cov)
5646
shell: Rscript {0}
57-
- name: Restore R package cache
58-
uses: actions/cache@v4
47+
- uses: codecov/codecov-action@v5
5948
with:
60-
path: ${{ env.R_LIBS_USER }}
61-
key: ${{ runner.os }}-${{ hashFiles('.github/R-version') }}-1-${{ hashFiles('.github/depends.Rds') }}
62-
restore-keys: ${{ runner.os }}-${{ hashFiles('.github/R-version') }}-1-
63-
- name: Install system dependencies
64-
if: runner.os == 'Linux'
65-
run: |
66-
while read -r cmd
67-
do
68-
eval sudo $cmd
69-
done < <(Rscript -e 'writeLines(remotes::system_requirements("ubuntu", "20.04"))')
70-
- name: Install dependencies
71-
run: |
72-
Rscript -e "remotes::install_deps(dependencies = TRUE)"
73-
Rscript -e "remotes::install_cran('covr')"
74-
- name: Install a sperate copy on Windows
75-
if: runner.os == 'Windows'
49+
# Fail if error if not on PR, or if on PR and token is given
50+
fail_ci_if_error: ${{ github.event_name != 'pull_request' || secrets.CODECOV_TOKEN }}
51+
files: ./cobertura.xml
52+
plugins: noop
53+
disable_search: true
54+
token: ${{ secrets.CODECOV_TOKEN }}
55+
56+
- name: Show testthat output
57+
if: always()
7658
run: |
77-
Rscript -e "remotes::install_local()"
78-
- name: Codecov
79-
run: Rscript -e "covr::codecov()"
80-
env:
81-
CODECOV_TOKEN: ${{secrets.CODECOV_TOKEN}}
82-
- uses: actions/upload-artifact@v4
59+
## --------------------------------------------------------------------
60+
find '${{ runner.temp }}/package' -name 'testthat.Rout*' -exec cat '{}' \; || true
61+
shell: bash
62+
63+
- name: Upload test results
8364
if: failure()
65+
uses: actions/upload-artifact@v6
8466
with:
85-
name: ${{ runner.os }}-log
86-
path: ${{ env.R_LANGSVR_LOG }}
67+
name: coverage-test-failures
68+
path: ${{ runner.temp }}/package

github-actions/languageserver/lint.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ jobs:
1414
runs-on: ubuntu-latest
1515
container: rocker/tidyverse
1616
steps:
17-
- uses: actions/checkout@v4
17+
- uses: actions/checkout@v6
1818
- name: Install apt-get dependencies
1919
run: |
2020
apt-get update

github-actions/languageserver/rcmdcheck.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ jobs:
1313
name: Cancel Previous Runs
1414
runs-on: ubuntu-latest
1515
steps:
16-
- uses: styfle/cancel-workflow-action@0.12.1
16+
- uses: styfle/cancel-workflow-action@0.13.0
1717
with:
1818
access_token: ${{ github.token }}
1919

@@ -37,7 +37,7 @@ jobs:
3737
R_LANGSVR_LOG: ${{ matrix.log_file }}
3838
R_LANGSVR_POOL_SIZE: 1
3939
steps:
40-
- uses: actions/checkout@v4
40+
- uses: actions/checkout@v6
4141
- uses: r-lib/actions/setup-r@v2
4242
with:
4343
r-version: release
@@ -54,7 +54,7 @@ jobs:
5454
writeLines(sprintf("R-%i.%i", getRversion()$major, getRversion()$minor), ".github/R-version")
5555
shell: Rscript {0}
5656
- name: Restore R package cache
57-
uses: actions/cache@v4
57+
uses: actions/cache@v5
5858
with:
5959
path: ${{ env.R_LIBS_USER }}
6060
key: ${{ runner.os }}-${{ hashFiles('.github/R-version') }}-1-${{ hashFiles('.github/depends.Rds') }}
@@ -78,7 +78,7 @@ jobs:
7878
id: rcmdcheck
7979
run: |
8080
Rscript -e "rcmdcheck::rcmdcheck(args = c('--as-cran', '--no-manual'), error_on = 'warning')"
81-
- uses: actions/upload-artifact@v4
81+
- uses: actions/upload-artifact@v6
8282
if: failure()
8383
with:
8484
name: ${{ runner.os }}-log

github-actions/languageserver/tagbot.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ jobs:
1010
runs-on: ubuntu-latest
1111
container: rtagbot/tagbot:latest
1212
steps:
13-
- uses: actions/checkout@v4
13+
- uses: actions/checkout@v6
1414
with:
1515
fetch-depth: 0
1616
- name: check and publish release
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
name: Label Community PRs
2+
3+
on:
4+
pull_request_target:
5+
types:
6+
- opened
7+
8+
defaults:
9+
run:
10+
shell: bash
11+
12+
jobs:
13+
label-community:
14+
if: github.repository == 'mlflow/mlflow'
15+
runs-on: ubuntu-slim
16+
timeout-minutes: 5
17+
permissions:
18+
pull-requests: write
19+
steps:
20+
- env:
21+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
22+
AUTHOR: ${{ github.event.pull_request.user.login }}
23+
AUTHOR_TYPE: ${{ github.event.pull_request.user.type }}
24+
ASSOCIATION: ${{ github.event.pull_request.author_association }}
25+
PR_NUMBER: ${{ github.event.pull_request.number }}
26+
REPO: ${{ github.repository }}
27+
run: |
28+
# Skip bot PRs
29+
if [[ "$AUTHOR_TYPE" == "Bot" ]]; then
30+
echo "Bot PR (type: $AUTHOR_TYPE), skipping"
31+
exit 0
32+
fi
33+
34+
# Skip internal PRs based on author association
35+
if [[ "$ASSOCIATION" =~ ^(MEMBER|COLLABORATOR|OWNER)$ ]]; then
36+
echo "Internal PR (association: $ASSOCIATION), skipping"
37+
exit 0
38+
fi
39+
40+
# Check user profile for Databricks affiliation
41+
PROFILE=$(gh api "users/$AUTHOR" --jq '[.company // "", .email // ""] | join("\n")')
42+
if echo "$PROFILE" | grep -iq 'databricks'; then
43+
echo "Internal PR (profile contains 'databricks'), skipping"
44+
exit 0
45+
fi
46+
47+
# Check commit author emails for @databricks.com
48+
if gh api "repos/$REPO/pulls/$PR_NUMBER/commits" \
49+
--jq '.[].commit.author.email' | grep -iq '@databricks\.com'; then
50+
echo "Internal PR (commit email ends with @databricks.com), skipping"
51+
exit 0
52+
fi
53+
54+
# Add community label
55+
gh pr edit "$PR_NUMBER" --repo "$REPO" --add-label "community"
56+
echo "Added 'community' label to PR #$PR_NUMBER"

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

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
name: Cross version tests
2-
run-name: ${{ inputs.uuid }}
32

43
on:
54
pull_request:
@@ -38,10 +37,6 @@ on:
3837
description: "[Optional] Comma-separated string specifying which versions to test (e.g. '1.2.3, 4.5.6'). If unspecified, all versions are tested."
3938
required: false
4039
default: ""
41-
uuid:
42-
description: "[Optional] A unique identifier for this run."
43-
required: false
44-
default: ""
4540
schedule:
4641
# Run this workflow daily at 13:00 UTC
4742
- cron: "0 13 * * *"
@@ -167,8 +162,7 @@ jobs:
167162
# For tracing SDK test, install the tracing package from the local path and minimal test dependencies
168163
if [[ "${{ matrix.category }}" == "tracing-sdk" ]]; then
169164
pip install libs/tracing
170-
# litellm is required for cost tracking tests
171-
pip install pytest pytest-asyncio pytest-cov litellm
165+
pip install pytest pytest-asyncio pytest-cov
172166
# Other two categories of tests (model/autologging)
173167
else
174168
pip install .[extras]

github-actions/mlflow/docs.yml

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -84,8 +84,6 @@ jobs:
8484
ALIAS="pr-$PR_NUMBER"
8585
fi
8686
echo "value=$ALIAS" >> $GITHUB_OUTPUT
87-
echo "$ALIAS" > /tmp/alias.txt
88-
cat /tmp/alias.txt
8987
- name: Build docs
9088
env:
9189
GTM_ID: "GTM-TEST"
@@ -121,15 +119,6 @@ jobs:
121119
retention-days: 1
122120
if-no-files-found: error
123121

124-
# `github.event.workflow_run.pull_requests` is empty when a PR is created from a fork:
125-
# https://github.com/orgs/community/discussions/25220#discussioncomment-11001085
126-
- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
127-
with:
128-
name: alias
129-
path: /tmp/alias.txt
130-
retention-days: 1
131-
if-no-files-found: error
132-
133122
test-examples:
134123
if: github.event_name != 'pull_request' || github.event.pull_request.draft == false
135124
permissions:

github-actions/mlflow/fs2db.yml

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ defaults:
2828
shell: bash
2929

3030
jobs:
31-
fs2db:
31+
e2e-tests:
3232
runs-on: ubuntu-latest
3333
timeout-minutes: 30
3434
permissions:
@@ -53,6 +53,23 @@ jobs:
5353
uv run --with 'mlflow==${{ matrix.mlflow-version }}' --no-project python -I \
5454
fs2db/src/generate_synthetic_data.py --output /tmp/fs2db/${{ matrix.mlflow-version }}/ --size full
5555
56-
# TODO: Run migration tests
57-
- name: Run migration tests
58-
run: echo "Not yet implemented"
56+
- name: Run migration for MLflow ${{ matrix.mlflow-version }}
57+
run: |
58+
uv run mlflow migrate-filestore \
59+
--source /tmp/fs2db/${{ matrix.mlflow-version }}/ \
60+
--target sqlite:////tmp/fs2db/${{ matrix.mlflow-version }}/migrated.db \
61+
--no-progress
62+
63+
unit-tests:
64+
runs-on: ubuntu-latest
65+
timeout-minutes: 30
66+
permissions:
67+
contents: read
68+
if: github.event_name != 'pull_request' || github.event.pull_request.draft == false
69+
steps:
70+
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
71+
- uses: ./.github/actions/untracked
72+
- uses: ./.github/actions/setup-python
73+
74+
- name: Run fs2db pytest tests
75+
run: uv run pytest tests/store/fs2db

github-actions/mlflow/preview-docs.yml

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -22,18 +22,29 @@ jobs:
2222
with:
2323
sparse-checkout: |
2424
.github
25-
- name: Download alias
26-
uses: actions/download-artifact@95815c38cf2ff2164869cbab79da8d1f422bc89e # v4.2.1
27-
with:
28-
github-token: ${{ secrets.GITHUB_TOKEN }}
29-
run-id: ${{ github.event.workflow_run.id }}
30-
name: alias
31-
path: /tmp
3225
- name: Set alias
3326
id: alias
27+
env:
28+
EVENT: ${{ github.event.workflow_run.event }}
29+
HEAD_OWNER: ${{ github.event.workflow_run.head_repository.owner.login }}
30+
HEAD_BRANCH: ${{ github.event.workflow_run.head_branch }}
31+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
32+
REPO: ${{ github.repository }}
3433
run: |
35-
cat /tmp/alias.txt
36-
echo "value=$(cat /tmp/alias.txt)" >> $GITHUB_OUTPUT
34+
if [ "$EVENT" = "push" ]; then
35+
ALIAS="dev"
36+
else
37+
# Derive PR number from the workflow run's head branch via API
38+
# instead of trusting the artifact (which fork PRs can manipulate)
39+
PR_NUMBER=$(gh api "repos/$REPO/pulls?head=$HEAD_OWNER:$HEAD_BRANCH&state=open" \
40+
--jq '.[0].number // empty')
41+
if [ -z "$PR_NUMBER" ]; then
42+
echo "::error::Could not find PR for $HEAD_OWNER:$HEAD_BRANCH"
43+
exit 1
44+
fi
45+
ALIAS="pr-$PR_NUMBER"
46+
fi
47+
echo "value=$ALIAS" >> $GITHUB_OUTPUT
3748
- name: Download build artifact
3849
uses: actions/download-artifact@95815c38cf2ff2164869cbab79da8d1f422bc89e # v4.2.1
3950
with:
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
name: Stale PRs
2+
3+
on:
4+
schedule:
5+
- cron: "0 0 * * *"
6+
workflow_dispatch:
7+
8+
defaults:
9+
run:
10+
shell: bash
11+
12+
jobs:
13+
stale-prs:
14+
if: github.repository == 'mlflow/mlflow'
15+
runs-on: ubuntu-slim
16+
permissions:
17+
pull-requests: write
18+
timeout-minutes: 10
19+
steps:
20+
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
21+
with:
22+
sparse-checkout: |
23+
.github
24+
- uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
25+
with:
26+
script: |
27+
const script = require(".github/workflows/stale-prs.js");
28+
await script({ context, github });

0 commit comments

Comments
 (0)