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