1- name : Run Haystack Tutorials
1+ name : Run Tutorials
22
33on :
4+ workflow_dispatch : # Activate this workflow manually
5+ schedule :
6+ - cron : " 0 0 * * *"
47 pull_request :
58 paths :
69 - " tutorials/*.ipynb"
912 generate-matrix :
1013 runs-on : ubuntu-slim
1114 outputs :
12- matrix : ${{ steps.filter .outputs.matrix }}
15+ matrix : ${{ steps.matrix .outputs.matrix }}
1316 steps :
1417 - uses : actions/checkout@v6
1518
@@ -28,38 +31,41 @@ jobs:
2831 echo "matrix={\"include\":$NOTEBOOKS}" >> "$GITHUB_OUTPUT"
2932
3033 - name : Get changed files
34+ if : github.event_name == 'pull_request'
3135 id : files
3236 uses : tj-actions/changed-files@v47
3337 with :
3438 matrix : true
3539 files : tutorials/*.ipynb
3640
37- - name : Filter non changed notebooks
38- id : filter
41+ - name : Filter to changed notebooks (pull request only)
42+ id : matrix
3943 shell : python
4044 env :
45+ EVENT_NAME : ${{ github.event_name }}
4146 MATRIX : ${{ steps.generator.outputs.matrix }}
4247 CHANGED_FILES : ${{ steps.files.outputs.all_changed_files }}
4348 run : |
4449 import os
4550 import json
4651
4752 matrix = json.loads(os.environ["MATRIX"])
48- changed_files = json.loads(os.environ["CHANGED_FILES"])
49- new_matrix = {"include": []}
50- for item in matrix["include"]:
51- notebook = item["notebook"]
52- if f"tutorials/{notebook}.ipynb" not in changed_files:
53- continue
54- new_matrix["include"].append(item)
55-
56- new_matrix = json.dumps(new_matrix)
53+
54+ if os.environ["EVENT_NAME"] == "pull_request":
55+ changed_files = json.loads(os.environ["CHANGED_FILES"])
56+ new_matrix = {"include": []}
57+ for item in matrix["include"]:
58+ notebook = item["notebook"]
59+ if f"tutorials/{notebook}.ipynb" in changed_files:
60+ new_matrix["include"].append(item)
61+ matrix = new_matrix
62+
5763 with open(os.environ["GITHUB_OUTPUT"], "a") as f:
58- print(f"matrix={new_matrix }", file=f)
64+ print(f"matrix={json.dumps(matrix) }", file=f)
5965
6066 run-tutorials :
61- runs-on : ubuntu-latest
6267 needs : generate-matrix
68+ runs-on : ubuntu-latest
6369
6470 strategy :
6571 fail-fast : false
@@ -114,3 +120,9 @@ jobs:
114120 else
115121 python "$NOTEBOOK"
116122 fi
123+
124+ - name : Notify Slack on nightly failure
125+ if : failure() && github.event_name != 'pull_request'
126+ uses : deepset-ai/notify-slack-action@v1
127+ with :
128+ slack-webhook-url : ${{ secrets.SLACK_WEBHOOK_URL_NOTIFICATIONS }}
0 commit comments