diff options
author | Junio C Hamano <gitster@pobox.com> | 2020-10-08 21:53:26 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2020-10-08 21:53:26 -0700 |
commit | 20a00abe35a3f54db5bcb54ca8c04d3f679042ea (patch) | |
tree | 7db86873586b6954a0528b754e275a83c09712dc /.github | |
parent | d620daaa34be578a67734c0daca4412d6d06f208 (diff) | |
parent | 4463ce75b7eea47f9b484b05957def655d3f46d5 (diff) | |
download | git-20a00abe35a3f54db5bcb54ca8c04d3f679042ea.tar.gz |
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
Diffstat (limited to '.github')
-rw-r--r-- | .github/workflows/main.yml | 39 |
1 files changed, 38 insertions, 1 deletions
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 14ff94dcbe..a940997f1b 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -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: 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 |