From 5dc949e7f2f095d2c9ead539db8da08e22f73e36 Mon Sep 17 00:00:00 2001 From: Connor Clark Date: Wed, 29 Nov 2023 14:03:27 -0800 Subject: [PATCH] misc: improve download-chrome usabality --- .github/workflows/ci.yml | 6 ++---- .github/workflows/devtools.yml | 6 ++---- .github/workflows/smoke.yml | 12 ++++-------- .github/workflows/unit.yml | 6 ++---- core/scripts/download-chrome.sh | 21 ++++++++++++++++----- 5 files changed, 26 insertions(+), 25 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5aaaca75e63b..87f49291206c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -25,6 +25,7 @@ jobs: fetch-depth: 100 - run: bash core/scripts/github-actions-commit-range.sh env: + CHROME_PATH: ${{ github.workspace }}/lighthouse/.tmp/chrome-tot/chrome GITHUB_CONTEXT_PR_BASE_SHA: ${{ github.event.pull_request.base.sha }} GITHUB_CONTEXT_BASE_SHA: ${{ github.event.before }} @@ -38,11 +39,8 @@ jobs: - run: yarn build-all # Run pptr tests using ToT Chrome instead of stable default. - - name: Define ToT chrome path - run: echo "CHROME_PATH=/home/runner/chrome-linux-tot/chrome" >> $GITHUB_ENV - name: Install Chrome ToT - working-directory: /home/runner - run: bash $GITHUB_WORKSPACE/core/scripts/download-chrome.sh && mv chrome-linux chrome-linux-tot + run: bash $GITHUB_WORKSPACE/core/scripts/download-chrome.sh # Run tests that require headfull Chrome. - run: sudo apt-get install xvfb diff --git a/.github/workflows/devtools.yml b/.github/workflows/devtools.yml index 667d636b5611..f875be2ccd3c 100644 --- a/.github/workflows/devtools.yml +++ b/.github/workflows/devtools.yml @@ -127,6 +127,7 @@ jobs: fail-fast: false runs-on: ubuntu-latest env: + CHROME_PATH: ${{ github.workspace }}/lighthouse/.tmp/chrome-tot/chrome FORCE_COLOR: true name: DevTools smoke ${{ matrix.smoke-test-shard }}/${{ strategy.job-total }} @@ -159,11 +160,8 @@ jobs: - run: yarn build-report working-directory: ${{ github.workspace }}/lighthouse - - name: Define ToT chrome path - run: echo "CHROME_PATH=/home/runner/chrome-linux-tot/chrome" >> $GITHUB_ENV - name: Install Chrome ToT - working-directory: /home/runner - run: bash ${{ github.workspace }}/lighthouse/core/scripts/download-chrome.sh && mv chrome-linux chrome-linux-tot + run: bash ${{ github.workspace }}/lighthouse/core/scripts/download-chrome.sh - run: mkdir latest-run working-directory: ${{ github.workspace }}/lighthouse diff --git a/.github/workflows/smoke.yml b/.github/workflows/smoke.yml index 05970fa96454..4bb4ba4f0614 100644 --- a/.github/workflows/smoke.yml +++ b/.github/workflows/smoke.yml @@ -42,13 +42,12 @@ jobs: - name: Define ToT chrome path if: matrix.chrome-channel == 'ToT' - run: echo "CHROME_PATH=/home/runner/chrome-linux-tot/chrome" >> $GITHUB_ENV + run: echo "CHROME_PATH=${{ github.workspace }}/lighthouse/.tmp/chrome-tot/chrome" >> $GITHUB_ENV # Chrome Stable is already installed by default. - name: Install Chrome ToT if: matrix.chrome-channel == 'ToT' - working-directory: /home/runner - run: bash $GITHUB_WORKSPACE/core/scripts/download-chrome.sh && mv chrome-linux chrome-linux-tot + run: bash $GITHUB_WORKSPACE/core/scripts/download-chrome.sh - run: yarn install --frozen-lockfile --network-timeout 1000000 - run: yarn build-report @@ -127,6 +126,7 @@ jobs: fail-fast: false runs-on: ubuntu-latest env: + CHROME_PATH: ${{ github.workspace }}/lighthouse/.tmp/chrome-tot/chrome # The total number of shards. Set dynamically when length of *single* matrix variable is # computable. See https://github.community/t/get-length-of-strategy-matrix-or-get-all-matrix-options/18342 SHARD_TOTAL: 3 @@ -146,12 +146,8 @@ jobs: - run: yarn build-report - run: yarn build-devtools - - name: Define ToT chrome path - run: echo "CHROME_PATH=/home/runner/chrome-linux-tot/chrome" >> $GITHUB_ENV - - name: Install Chrome ToT - working-directory: /home/runner - run: bash $GITHUB_WORKSPACE/core/scripts/download-chrome.sh && mv chrome-linux chrome-linux-tot + run: bash $GITHUB_WORKSPACE/core/scripts/download-chrome.sh - name: yarn test-bundle run: yarn test-bundle --shard=${{ matrix.smoke-test-shard }}/$SHARD_TOTAL --retries=2 diff --git a/.github/workflows/unit.yml b/.github/workflows/unit.yml index 80a45b24926d..e20f6011f49c 100644 --- a/.github/workflows/unit.yml +++ b/.github/workflows/unit.yml @@ -18,6 +18,7 @@ jobs: runs-on: ubuntu-latest name: node ${{ matrix.node }} env: + CHROME_PATH: ${{ github.workspace }}/lighthouse/.tmp/chrome-tot/chrome LATEST_NODE: '18' FORCE_COLOR: true @@ -53,11 +54,8 @@ jobs: - run: yarn reset-link # Run pptr tests using ToT Chrome instead of stable default. - - name: Define ToT chrome path - run: echo "CHROME_PATH=/home/runner/chrome-linux-tot/chrome" >> $GITHUB_ENV - name: Install Chrome ToT - working-directory: /home/runner - run: bash $GITHUB_WORKSPACE/core/scripts/download-chrome.sh && mv chrome-linux chrome-linux-tot + run: bash $GITHUB_WORKSPACE/core/scripts/download-chrome.sh - run: yarn test-proto # Run before unit-core because the roundtrip json is needed for proto tests. diff --git a/core/scripts/download-chrome.sh b/core/scripts/download-chrome.sh index d4827c677758..a3b92e50586c 100755 --- a/core/scripts/download-chrome.sh +++ b/core/scripts/download-chrome.sh @@ -6,9 +6,21 @@ ## # Download chrome inside of our CI env. +# Takes one arg - the location to extract ToT chrome to. Defaults to .tmp/chrome-tot +# If already exists, this script does nothing. set -euo pipefail +SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +LH_ROOT_DIR="$SCRIPT_DIR/../.." + +chrome_out=${1:-"$LH_ROOT_DIR/.tmp/chrome-tot"} + +if [ -e "$chrome_out" ]; then + echo "cached chrome found" + exit 0 +fi + unameOut="$(uname -s)" case "${unameOut}" in Linux*) machine=Linux;; @@ -28,8 +40,7 @@ else exit 1 fi -if [ -e "$CHROME_PATH" ]; then - echo "cached chrome found" -else - curl "$url" -Lo chrome.zip && unzip -q chrome.zip -fi +mkdir -p .tmp-download && cd .tmp-download +curl "$url" -Lo chrome.zip && unzip -q chrome.zip && rm chrome.zip +mv * "$chrome_out" +cd - && rmdir -f .tmp-download