summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2020-10-09 04:53:26 (GMT)
committerJunio C Hamano <gitster@pobox.com>2020-10-09 04:53:26 (GMT)
commit20a00abe35a3f54db5bcb54ca8c04d3f679042ea (patch)
tree7db86873586b6954a0528b754e275a83c09712dc
parentd620daaa34be578a67734c0daca4412d6d06f208 (diff)
parent4463ce75b7eea47f9b484b05957def655d3f46d5 (diff)
downloadgit-20a00abe35a3f54db5bcb54ca8c04d3f679042ea.zip
git-20a00abe35a3f54db5bcb54ca8c04d3f679042ea.tar.gz
git-20a00abe35a3f54db5bcb54ca8c04d3f679042ea.tar.bz2
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
-rw-r--r--.github/workflows/main.yml39
-rwxr-xr-xci/lib.sh2
2 files changed, 40 insertions, 1 deletions
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index 14ff94d..a940997 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
diff --git a/ci/lib.sh b/ci/lib.sh
index 821e366..38c0eac 100755
--- a/ci/lib.sh
+++ b/ci/lib.sh
@@ -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"
mkdir -p "$cache_dir"
+test -n "${DONT_SKIP_TAGS-}" ||
skip_branch_tip_with_tag
skip_good_tree