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
This commit is contained in:
Junio C Hamano 2020-10-08 21:53:26 -07:00
Родитель d620daaa34 4463ce75b7
Коммит 20a00abe35
2 изменённых файлов: 40 добавлений и 1 удалений

39
.github/workflows/main.yml поставляемый
Просмотреть файл

@ -9,7 +9,7 @@ jobs:
ci-config: ci-config:
runs-on: ubuntu-latest runs-on: ubuntu-latest
outputs: outputs:
enabled: ${{ steps.check-ref.outputs.enabled }} enabled: ${{ steps.check-ref.outputs.enabled }}${{ steps.skip-if-redundant.outputs.enabled }}
steps: steps:
- name: try to clone ci-config branch - name: try to clone ci-config branch
run: | run: |
@ -34,6 +34,43 @@ jobs:
enabled=no enabled=no
fi fi
echo "::set-output name=enabled::$enabled" 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: windows-build:
needs: ci-config needs: ci-config

Просмотреть файл

@ -149,6 +149,7 @@ then
CI_REPO_SLUG="$GITHUB_REPOSITORY" CI_REPO_SLUG="$GITHUB_REPOSITORY"
CI_JOB_ID="$GITHUB_RUN_ID" CI_JOB_ID="$GITHUB_RUN_ID"
CC="${CC:-gcc}" CC="${CC:-gcc}"
DONT_SKIP_TAGS=t
cache_dir="$HOME/none" cache_dir="$HOME/none"
@ -167,6 +168,7 @@ good_trees_file="$cache_dir/good-trees"
mkdir -p "$cache_dir" mkdir -p "$cache_dir"
test -n "${DONT_SKIP_TAGS-}" ||
skip_branch_tip_with_tag skip_branch_tip_with_tag
skip_good_tree skip_good_tree