Browse Source

Merge branch 'js/ci-ghwf-dedup-tests'

The logic to skip testing on the tagged commit and the tag itself
was not quite consistent which led to failure of Windows test
tasks.  It has been revamped to consistently skip revisions that
have already been tested, based on the tree object of the revision.

* js/ci-ghwf-dedup-tests:
  ci: do not skip tagged revisions in GitHub workflows
  ci: skip GitHub workflow runs for already-tested commits/trees
maint
Junio C Hamano 4 years ago
parent
commit
20a00abe35
  1. 39
      .github/workflows/main.yml
  2. 2
      ci/lib.sh

39
.github/workflows/main.yml

@ -9,7 +9,7 @@ jobs: @@ -9,7 +9,7 @@ jobs:
ci-config:
runs-on: ubuntu-latest
outputs:
enabled: ${{ steps.check-ref.outputs.enabled }}
enabled: ${{ steps.check-ref.outputs.enabled }}${{ steps.skip-if-redundant.outputs.enabled }}
steps:
- name: try to clone ci-config branch
run: |
@ -34,6 +34,43 @@ jobs: @@ -34,6 +34,43 @@ jobs:
enabled=no
fi
echo "::set-output name=enabled::$enabled"
- name: skip if the commit or tree was already tested
id: skip-if-redundant
uses: actions/github-script@v3
if: steps.check-ref.outputs.enabled == 'yes'
with:
github-token: ${{secrets.GITHUB_TOKEN}}
script: |
// Figure out workflow ID, commit and tree
const { data: run } = await github.actions.getWorkflowRun({
owner: context.repo.owner,
repo: context.repo.repo,
run_id: context.runId,
});
const workflow_id = run.workflow_id;
const head_sha = run.head_sha;
const tree_id = run.head_commit.tree_id;

// See whether there is a successful run for that commit or tree
const { data: runs } = await github.actions.listWorkflowRuns({
owner: context.repo.owner,
repo: context.repo.repo,
per_page: 500,
status: 'success',
workflow_id,
});
for (const run of runs.workflow_runs) {
if (head_sha === run.head_sha) {
core.warning(`Successful run for the commit ${head_sha}: ${run.html_url}`);
core.setOutput('enabled', ' but skip');
break;
}
if (tree_id === run.head_commit.tree_id) {
core.warning(`Successful run for the tree ${tree_id}: ${run.html_url}`);
core.setOutput('enabled', ' but skip');
break;
}
}

windows-build:
needs: ci-config

2
ci/lib.sh

@ -149,6 +149,7 @@ then @@ -149,6 +149,7 @@ then
CI_REPO_SLUG="$GITHUB_REPOSITORY"
CI_JOB_ID="$GITHUB_RUN_ID"
CC="${CC:-gcc}"
DONT_SKIP_TAGS=t

cache_dir="$HOME/none"

@ -167,6 +168,7 @@ good_trees_file="$cache_dir/good-trees" @@ -167,6 +168,7 @@ good_trees_file="$cache_dir/good-trees"

mkdir -p "$cache_dir"

test -n "${DONT_SKIP_TAGS-}" ||
skip_branch_tip_with_tag
skip_good_tree


Loading…
Cancel
Save