diff --git a/.github/workflows/rerun-compare-chromium-versions.yml b/.github/workflows/rerun-compare-chromium-versions.yml new file mode 100644 index 000000000000..ed014b374d2d --- /dev/null +++ b/.github/workflows/rerun-compare-chromium-versions.yml @@ -0,0 +1,47 @@ +name: Rerun Compare Chromium versions + +on: + pull_request: + branches: + - master + - '[0-9]+.[0-9]+.x' + paths: + - package.json + types: + - closed + +jobs: + rerun-compare-chromium-versions: + if: github.event.pull_request.merged == true + runs-on: ubuntu-latest + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + PR_SHA: ${{ github.event.pull_request.head.sha }} + TARGET_SHA: ${{ github.event.pull_request.base.sha }} + steps: + - run: | + shopt -s inherit_errexit + set -eEo pipefail + + chromium_ver() { curl -fsS "https://raw.githubusercontent.com/${GITHUB_REPOSITORY:?}/${1:?}/package.json"|jq -r .config.projects.chrome.tag; } + + pr_ver="$(chromium_ver "${PR_SHA:?}")" + target_ver="$(chromium_ver "${TARGET_SHA:?}")" + + echo "::notice::PR branch: ${pr_ver:?}, target branch: ${target_ver:?}" + + if [[ "${pr_ver%%.*}" != "${target_ver%%.*}" ]]; then + while read -r pr_number head_sha; do + run_id="$(gh api "/repos/$GITHUB_REPOSITORY/actions/workflows/compare-chromium-versions.yml/runs?head_sha=${head_sha:?}" -q '.workflow_runs[0].id')" + pr_url="https://github.com/brave/brave-core/pull/${pr_number:?}" + if [[ "$run_id" ]]; then + echo "Rerunning $run_id for $pr_url" + gh -R "$GITHUB_REPOSITORY" run rerun "$run_id" + else + echo "No run found for $pr_url" + fi + sleep 1 + done < <(gh -R "$GITHUB_REPOSITORY" pr list --limit 1000 --state open --base "$GITHUB_BASE_REF" --json number,headRefOid -q '.[]|"\(.number)\t\(.headRefOid)"') + else + echo "Chromium major versions match, nothing to do" + fi