b/.github/workflows/ci-patchwork-trigger.yml
new file mode 100644
0000000000000000000000000000000000000000..ff8e5606f17327f461e9aeec803fbffaac1b1a8f
@@ -0,0 +1,63 @@
+# Copyright (c) 2025 Andrea Cervesato <andrea.cervesato@suse.com>
+
+name: "Patchwork checker"
+on:
+ push:
+ schedule:
+ - cron: '*/30 * * * *'
+
+env:
+ PATCHWORK_CI_FILE: patchwork-ci-output.txt
+
+jobs:
+ checker:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Git checkout
+ uses: actions/checkout@v1
+
+ - name: Verify new patches
+ id: verify
+ run: |
+ ./ci/patchwork-ci.sh verify > "$PATCHWORK_CI_FILE"
+ cat "$PATCHWORK_CI_FILE"
+
+ - name: Run tests
+ if: success()
+ uses: actions/github-script@v7
+ with:
+ script: |
+ const fs = require('fs');
+
+ const output = fs.readFileSync(process.env.PATCHWORK_CI_FILE, 'utf8');
+ if (output.length === 0) {
+ console.log("'patchwork-ci.sh verify' output is empty");
+ return;
+ }
+
+ const lines = output.split('\n');
+ if (lines.length === 0) {
+ console.log("No new patch-series found");
+ return;
+ }
+
+ for (const data of lines) {
+ const [series_id, series_mbox] = data.split('|');
+ if (series_id.length === 0 || series_mbox.length === 0) {
+ console.log("Malformed data: ${data}");
+ continue;
+ }
+
+ const response = await github.rest.actions.createWorkflowDispatch({
+ owner: context.repo.owner,
+ repo: context.repo.repo,
+ ref: context.ref,
+ workflow_id: 'ci-docker-build.yml',
+ inputs: {
+ SERIES_ID: series_id,
+ SERIES_MBOX: series_mbox,
+ }
+ });
+
+ console.log(response);
+ }