Skip to content

Commit 0edd8f0

Browse files
.github/workflows: add per-branch nightly workflows and tooling
Add five separate nightly workflows (scheduled at 06:00 UTC) replacing the previous combined multi-job workflow files: nightly-cxl-next.yml — cxl/cxl.git next, cxl tests nightly-cxl-fixes.yml — cxl/cxl.git fixes, cxl tests nightly-nvdimm-for-next.yml — nvdimm/nvdimm.git for-next, nvdimm+dax nightly-nvdimm-fixes.yml — nvdimm/nvdimm.git fixes, nvdimm+dax nightly-linux-next.yml — next/linux-next.git master, all suites Each workflow is a separate file so each branch appears as its own named entry in the Actions tab. CXL and nvdimm/libnvdimm workflows use SHA deduplication to skip runs when the branch is unchanged. linux-next always runs since it changes daily. Also add: - run-test.sh: CLI wrapper for triggering workflows via gh - testfails/: captured output from known test failures (dax-ext4, dax-xfs, pfn-meta-errors) for future triage - testskips/: captured output from known test skips (btt-errors, btt-pad-compat, device-dax-fio, rescan-partitions) - README.md: document scheduled runs, workflow inputs, example usage, and how to trigger from a kernel repo Assisted-By: Claude Sonnet 4.6 <noreply@anthropic.com> Signed-off-by: Alison Schofield <alison.schofield@intel.com>
1 parent c1f0621 commit 0edd8f0

14 files changed

Lines changed: 571 additions & 73 deletions
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
---
2+
name: cxl/fixes
3+
4+
# yamllint disable-line rule:truthy
5+
on:
6+
schedule:
7+
- cron: '0 6 * * *' # 10 pm PST (UTC-8)
8+
workflow_dispatch:
9+
10+
run-name: "cxl/fixes (${{ github.event_name }})"
11+
12+
jobs:
13+
check:
14+
runs-on: ubuntu-latest
15+
outputs:
16+
changed: ${{ steps.changed.outputs.value }}
17+
sha: ${{ steps.sha.outputs.value }}
18+
steps:
19+
- name: fetch kernel HEAD
20+
id: sha
21+
run: |
22+
sha=$(git ls-remote \
23+
https://git.kernel.org/pub/scm/linux/kernel/git/cxl/cxl.git \
24+
refs/heads/fixes | awk '{print $1}')
25+
echo "value=$sha" >> "$GITHUB_OUTPUT"
26+
27+
- name: check if already tested
28+
id: cache
29+
uses: actions/cache/restore@v4
30+
with:
31+
path: /tmp/.ndctl-tested
32+
key: tested-cxl-fixes-${{ steps.sha.outputs.value }}
33+
lookup-only: true
34+
35+
- name: set changed output
36+
id: changed
37+
run: |
38+
if [[ "${{ steps.cache.outputs.cache-hit }}" == "true" ]]; then
39+
echo "value=false" >> "$GITHUB_OUTPUT"
40+
echo "cxl/fixes unchanged (SHA: ${{ steps.sha.outputs.value }}) — skipping"
41+
else
42+
echo "value=true" >> "$GITHUB_OUTPUT"
43+
echo "cxl/fixes new SHA: ${{ steps.sha.outputs.value }} — running"
44+
fi
45+
46+
test:
47+
needs: check
48+
if: needs.check.outputs.changed == 'true'
49+
uses: ./.github/workflows/main.yml
50+
with:
51+
kernel_repo: "https://git.kernel.org/pub/scm/linux/kernel/git/cxl/cxl.git"
52+
kernel_branch: "fixes"
53+
ndctl_repo: "pmem/ndctl"
54+
ndctl_branch: "pending"
55+
test_suite: "cxl"
56+
timeout_min: "35"
57+
58+
mark:
59+
needs: [check, test]
60+
if: needs.test.result == 'success'
61+
runs-on: ubuntu-latest
62+
steps:
63+
- run: echo "${{ needs.check.outputs.sha }}" > /tmp/.ndctl-tested
64+
- uses: actions/cache/save@v4
65+
with:
66+
path: /tmp/.ndctl-tested
67+
key: tested-cxl-fixes-${{ needs.check.outputs.sha }}
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
---
2+
name: cxl/next
3+
4+
# yamllint disable-line rule:truthy
5+
on:
6+
schedule:
7+
- cron: '0 6 * * *' # 10 pm PST (UTC-8)
8+
workflow_dispatch:
9+
10+
run-name: "cxl/next (${{ github.event_name }})"
11+
12+
jobs:
13+
check:
14+
runs-on: ubuntu-latest
15+
outputs:
16+
changed: ${{ steps.changed.outputs.value }}
17+
sha: ${{ steps.sha.outputs.value }}
18+
steps:
19+
- name: fetch kernel HEAD
20+
id: sha
21+
run: |
22+
sha=$(git ls-remote \
23+
https://git.kernel.org/pub/scm/linux/kernel/git/cxl/cxl.git \
24+
refs/heads/next | awk '{print $1}')
25+
echo "value=$sha" >> "$GITHUB_OUTPUT"
26+
27+
- name: check if already tested
28+
id: cache
29+
uses: actions/cache/restore@v4
30+
with:
31+
path: /tmp/.ndctl-tested
32+
key: tested-cxl-next-${{ steps.sha.outputs.value }}
33+
lookup-only: true
34+
35+
- name: set changed output
36+
id: changed
37+
run: |
38+
if [[ "${{ steps.cache.outputs.cache-hit }}" == "true" ]]; then
39+
echo "value=false" >> "$GITHUB_OUTPUT"
40+
echo "cxl/next unchanged (SHA: ${{ steps.sha.outputs.value }}) — skipping"
41+
else
42+
echo "value=true" >> "$GITHUB_OUTPUT"
43+
echo "cxl/next new SHA: ${{ steps.sha.outputs.value }} — running"
44+
fi
45+
46+
test:
47+
needs: check
48+
if: needs.check.outputs.changed == 'true'
49+
uses: ./.github/workflows/main.yml
50+
with:
51+
kernel_repo: "https://git.kernel.org/pub/scm/linux/kernel/git/cxl/cxl.git"
52+
kernel_branch: "next"
53+
ndctl_repo: "pmem/ndctl"
54+
ndctl_branch: "pending"
55+
test_suite: "cxl"
56+
timeout_min: "35"
57+
58+
mark:
59+
needs: [check, test]
60+
if: needs.test.result == 'success'
61+
runs-on: ubuntu-latest
62+
steps:
63+
- run: echo "${{ needs.check.outputs.sha }}" > /tmp/.ndctl-tested
64+
- uses: actions/cache/save@v4
65+
with:
66+
path: /tmp/.ndctl-tested
67+
key: tested-cxl-next-${{ needs.check.outputs.sha }}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
---
2+
name: linux-next/master
3+
4+
# yamllint disable-line rule:truthy
5+
on:
6+
schedule:
7+
- cron: '0 6 * * *' # 10 pm PST (UTC-8)
8+
workflow_dispatch:
9+
10+
run-name: "linux-next/master (${{ github.event_name }})"
11+
12+
jobs:
13+
# linux-next changes daily — always run, no SHA check needed.
14+
15+
test:
16+
uses: ./.github/workflows/main.yml
17+
with:
18+
kernel_repo: "https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git"
19+
kernel_branch: "master"
20+
ndctl_repo: "pmem/ndctl"
21+
ndctl_branch: "pending"
22+
test_suite: "all"
23+
timeout_min: "45"
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
---
2+
name: libnvdimm/fixes
3+
4+
# yamllint disable-line rule:truthy
5+
on:
6+
schedule:
7+
- cron: '0 6 * * *' # 10 pm PST (UTC-8)
8+
workflow_dispatch:
9+
10+
run-name: "libnvdimm/fixes (${{ github.event_name }})"
11+
12+
jobs:
13+
check:
14+
runs-on: ubuntu-latest
15+
outputs:
16+
changed: ${{ steps.changed.outputs.value }}
17+
sha: ${{ steps.sha.outputs.value }}
18+
steps:
19+
- name: fetch kernel HEAD
20+
id: sha
21+
run: |
22+
sha=$(git ls-remote \
23+
https://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm.git \
24+
refs/heads/libnvdimm-fixes | awk '{print $1}')
25+
echo "value=$sha" >> "$GITHUB_OUTPUT"
26+
27+
- name: check if already tested
28+
id: cache
29+
uses: actions/cache/restore@v4
30+
with:
31+
path: /tmp/.ndctl-tested
32+
key: tested-nvdimm-fixes-${{ steps.sha.outputs.value }}
33+
lookup-only: true
34+
35+
- name: set changed output
36+
id: changed
37+
run: |
38+
if [[ "${{ steps.cache.outputs.cache-hit }}" == "true" ]]; then
39+
echo "value=false" >> "$GITHUB_OUTPUT"
40+
echo "nvdimm/fixes unchanged (SHA: ${{ steps.sha.outputs.value }}) — skipping"
41+
else
42+
echo "value=true" >> "$GITHUB_OUTPUT"
43+
echo "nvdimm/fixes new SHA: ${{ steps.sha.outputs.value }} — running"
44+
fi
45+
46+
test:
47+
needs: check
48+
if: needs.check.outputs.changed == 'true'
49+
uses: ./.github/workflows/main.yml
50+
with:
51+
kernel_repo: "https://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm.git"
52+
kernel_branch: "libnvdimm-fixes"
53+
ndctl_repo: "pmem/ndctl"
54+
ndctl_branch: "pending"
55+
test_suite: "nvdimm dax"
56+
timeout_min: "35"
57+
58+
mark:
59+
needs: [check, test]
60+
if: needs.test.result == 'success'
61+
runs-on: ubuntu-latest
62+
steps:
63+
- run: echo "${{ needs.check.outputs.sha }}" > /tmp/.ndctl-tested
64+
- uses: actions/cache/save@v4
65+
with:
66+
path: /tmp/.ndctl-tested
67+
key: tested-nvdimm-fixes-${{ needs.check.outputs.sha }}
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
---
2+
name: libnvdimm/for-next
3+
4+
# yamllint disable-line rule:truthy
5+
on:
6+
schedule:
7+
- cron: '0 6 * * *' # 10 pm PST (UTC-8)
8+
workflow_dispatch:
9+
10+
run-name: "libnvdimm/for-next (${{ github.event_name }})"
11+
12+
jobs:
13+
check:
14+
runs-on: ubuntu-latest
15+
outputs:
16+
changed: ${{ steps.changed.outputs.value }}
17+
sha: ${{ steps.sha.outputs.value }}
18+
steps:
19+
- name: fetch kernel HEAD
20+
id: sha
21+
run: |
22+
sha=$(git ls-remote \
23+
https://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm.git \
24+
refs/heads/libnvdimm-for-next | awk '{print $1}')
25+
echo "value=$sha" >> "$GITHUB_OUTPUT"
26+
27+
- name: check if already tested
28+
id: cache
29+
uses: actions/cache/restore@v4
30+
with:
31+
path: /tmp/.ndctl-tested
32+
key: tested-nvdimm-for-next-${{ steps.sha.outputs.value }}
33+
lookup-only: true
34+
35+
- name: set changed output
36+
id: changed
37+
run: |
38+
if [[ "${{ steps.cache.outputs.cache-hit }}" == "true" ]]; then
39+
echo "value=false" >> "$GITHUB_OUTPUT"
40+
echo "nvdimm/for-next unchanged (SHA: ${{ steps.sha.outputs.value }}) — skipping"
41+
else
42+
echo "value=true" >> "$GITHUB_OUTPUT"
43+
echo "nvdimm/for-next new SHA: ${{ steps.sha.outputs.value }} — running"
44+
fi
45+
46+
test:
47+
needs: check
48+
if: needs.check.outputs.changed == 'true'
49+
uses: ./.github/workflows/main.yml
50+
with:
51+
kernel_repo: "https://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm.git"
52+
kernel_branch: "libnvdimm-for-next"
53+
ndctl_repo: "pmem/ndctl"
54+
ndctl_branch: "pending"
55+
test_suite: "nvdimm dax"
56+
timeout_min: "35"
57+
58+
mark:
59+
needs: [check, test]
60+
if: needs.test.result == 'success'
61+
runs-on: ubuntu-latest
62+
steps:
63+
- run: echo "${{ needs.check.outputs.sha }}" > /tmp/.ndctl-tested
64+
- uses: actions/cache/save@v4
65+
with:
66+
path: /tmp/.ndctl-tested
67+
key: tested-nvdimm-for-next-${{ needs.check.outputs.sha }}

0 commit comments

Comments
 (0)