workaround GitHub Actions issues (#4991)

This commit is contained in:
Alex Lam S.L
2021-06-01 19:43:34 +01:00
committed by GitHub
parent f4f0d2a2dd
commit dff7b48921
2 changed files with 16 additions and 9 deletions

View File

@@ -3,10 +3,13 @@ on:
pull_request: pull_request:
schedule: schedule:
- cron: '*/15 * * * *' - cron: '*/15 * * * *'
workflow_dispatch:
workflow_run:
branches: [ master ]
types: [ completed ]
workflows: [ 'Build testing', CI ]
env: env:
BASE_URL: https://api.github.com/repos/${{ github.repository }} BASE_URL: https://api.github.com/repos/${{ github.repository }}
CAUSE: ${{ github.event_name }}
RUN_NUM: ${{ github.run_number }}
TOKEN: ${{ github.token }} TOKEN: ${{ github.token }}
jobs: jobs:
ufuzz: ufuzz:
@@ -34,8 +37,8 @@ jobs:
shell: bash shell: bash
run: | run: |
. ./test/release/install.sh . ./test/release/install.sh
if [[ $CAUSE == "schedule" ]]; then if [[ $GITHUB_EVENT_NAME == "pull_request" ]]; then
node test/ufuzz/job $BASE_URL $TOKEN $RUN_NUM
else
node test/ufuzz/job 5000 node test/ufuzz/job 5000
else
node test/ufuzz/job $BASE_URL $TOKEN $GITHUB_RUN_NUMBER
fi fi

View File

@@ -1,7 +1,7 @@
var get = require("https").get; var get = require("https").get;
var parse = require("url").parse; var parse = require("url").parse;
var base, token, run_number, eldest = true; var base, token, run_number;
exports.init = function(url, auth, num) { exports.init = function(url, auth, num) {
base = url; base = url;
token = auth; token = auth;
@@ -19,14 +19,14 @@ exports.should_stop = function(callback) {
do { do {
workflow = runs.pop(); workflow = runs.pop();
if (!workflow) return; if (!workflow) return;
if (workflow.event == "schedule" && workflow.run_number == run_number) found = true; if (is_cron(workflow) && workflow.run_number == run_number) found = true;
} while (!found && workflow.status == "completed"); } while (!found && workflow.status == "completed");
read(workflow.jobs_url, function(reply) { read(workflow.jobs_url, function(reply) {
if (!reply || !Array.isArray(reply.jobs)) return; if (!reply || !Array.isArray(reply.jobs)) return;
if (!reply.jobs.every(function(job) { if (!reply.jobs.every(function(job) {
if (job.status == "completed") return true; if (job.status == "completed") return true;
remaining--; remaining--;
return found || workflow.event != "schedule"; return found || !is_cron(workflow);
})) return; })) return;
if (remaining >= 0) { if (remaining >= 0) {
next(); next();
@@ -38,6 +38,10 @@ exports.should_stop = function(callback) {
}); });
}; };
function is_cron(workflow) {
return /^(schedule|workflow_dispatch|workflow_run)$/.test(workflow.event);
}
function read(url, callback) { function read(url, callback) {
var done = function(reply) { var done = function(reply) {
done = function() {}; done = function() {};
@@ -56,7 +60,7 @@ function read(url, callback) {
}).on("end", function() { }).on("end", function() {
var reply; var reply;
try { try {
reply = JSON.parse(chunks.join("")) reply = JSON.parse(chunks.join(""));
} catch (e) {} } catch (e) {}
done(reply); done(reply);
}).on("error", function() { }).on("error", function() {