Re-run CI tests on open PRs
Change-Id: Ifdc4b5e69c2fc5d91240b3b4abe8ae1383a16930
diff --git a/.github/workflows/re-run-pull-request-github-actions.yml b/.github/workflows/re-run-pull-request-github-actions.yml
new file mode 100644
index 0000000..4a2fddf
--- /dev/null
+++ b/.github/workflows/re-run-pull-request-github-actions.yml
@@ -0,0 +1,65 @@
+name: Re-run CI tests on open PRs
+
+on:
+ push:
+ branches:
+ - master
+
+jobs:
+ re-run-github-actions:
+ runs-on: ubuntu-latest
+ steps:
+ - name: (GET-&-PUT Github API) Push empty commit to PR branch
+ uses: actions/github-script@0.2.0
+ with:
+ github-token: ${{secrets.PAT}}
+ script: |
+ const owner = context.repo.owner;
+ const repo = context.repo.repo;
+ const {data: pullRequests} = await github.pulls.list({
+ owner,
+ repo,
+ base: "master",
+ state: "open",
+ });
+
+ for (pr of pullRequests) {
+ try {
+ let pullReq = {};
+ while (pullReq.mergeable === undefined || pullReq.mergeable === null) {
+ pullReq = (
+ await github.pulls.get({
+ owner,
+ repo,
+ pull_number: pr.number,
+ })
+ ).data;
+ }
+ if(pullReq.mergeable === false) continue;
+
+ const {data: commitData} = await github.repos.getCommit({
+ owner,
+ repo,
+ ref: pullReq.head.sha,
+ });
+
+ const {data: createdCommit} = await github.git.createCommit({
+ owner,
+ repo,
+ message: "trigger github actions",
+ tree: commitData.commit.tree.sha,
+ parents: [commitData.sha],
+ commiter: context.payload.pusher,
+ author: context.payload.pusher,
+ });
+
+ await github.git.updateRef({
+ owner,
+ repo,
+ ref: `heads/${pr.head.ref}`,
+ sha: createdCommit.sha,
+ });
+ } catch (err) {
+ console.log(err);
+ }
+ }