From 7df2b2fded320eef43166fc9689b9026bf0d45d3 Mon Sep 17 00:00:00 2001 From: Kirill Sizov Date: Mon, 9 Jan 2023 23:00:42 +0200 Subject: [PATCH] Add search cache workflow (#5560) Added separate workflow that search cache, it will allow us to remove duplication of this logic in `main.yml`, `full.yml` and `schedule.yml` ! This solution won't work if PR changes search-cache.yml, but this workflow is supposed to almost never change --- .github/workflows/search-cache.yml | 40 ++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 .github/workflows/search-cache.yml diff --git a/.github/workflows/search-cache.yml b/.github/workflows/search-cache.yml new file mode 100644 index 00000000..d19b434b --- /dev/null +++ b/.github/workflows/search-cache.yml @@ -0,0 +1,40 @@ +name: Search Cache +on: + workflow_call: + outputs: + sha: + value: ${{ jobs.search_cache.outputs.sha }} + +# if: | +# github.event.pull_request.draft == false && +# !startsWith(github.event.pull_request.title, '[WIP]') && +# !startsWith(github.event.pull_request.title, '[Dependent]') + +jobs: + search_cache: + runs-on: ubuntu-latest + outputs: + sha: ${{ steps.get-sha.outputs.sha}} + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + REPO: ${{ github.repository }} + steps: + - name: Getting SHA with cache from the default branch + id: get-sha + run: | + DEFAULT_BRANCH=$(gh api /repos/$REPO | jq -r '.default_branch') + for sha in $(gh api "/repos/$REPO/commits?per_page=100&sha=$DEFAULT_BRANCH" | jq -r '.[].sha'); + do + RUN_status=$(gh api /repos/${REPO}/actions/workflows/cache.yml/runs | \ + jq -r ".workflow_runs[]? | select((.head_sha == \"${sha}\") and (.conclusion == \"success\")) | .status") + + if [[ ${RUN_status} == "completed" ]]; then + SHA=$sha + break + fi + done + + echo Default branch is ${DEFAULT_BRANCH} + echo Workflow will try to get cache from commit: ${SHA} + + echo "sha=${SHA}" >> $GITHUB_OUTPUT \ No newline at end of file