From 01ac162725865a7f63877f881cdaced14e1dd161 Mon Sep 17 00:00:00 2001 From: Cortland Goffena <30168413+cmgoffena13@users.noreply.github.com> Date: Mon, 31 Aug 2026 17:36:19 -0600 Subject: [PATCH] feature(ci): adding in retries Signed-off-by: Cortland Goffena <30168413+cmgoffena13@users.noreply.github.com> --- .github/workflows/pr.yaml | 155 +++++++++++++++++------ .github/workflows/release.yaml | 14 +- .github/workflows/release_extension.yaml | 7 +- .github/workflows/release_shared_js.yaml | 14 +- 4 files changed, 147 insertions(+), 43 deletions(-) diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml index 52a561985d..4131fe78bd 100644 --- a/.github/workflows/pr.yaml +++ b/.github/workflows/pr.yaml @@ -57,9 +57,12 @@ jobs: uses: astral-sh/setup-uv@v7 - name: Install dependencies run: | - uv venv .venv - source .venv/bin/activate - make install-dev install-doc + for i in 1 2 3; do + uv venv .venv && source .venv/bin/activate && + make install-dev install-doc && break + if [ "$i" -eq 3 ]; then exit 1; fi + sleep 5 + done - name: Run doc tests run: | source .venv/bin/activate @@ -89,14 +92,21 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v7 - name: Install OpenJDK and ODBC - run: - sudo apt-get update && sudo apt-get install -y default-jdk - unixodbc-dev + run: | + for i in 1 2 3; do + sudo apt-get update && + sudo apt-get install -y default-jdk unixodbc-dev && break + if [ "$i" -eq 3 ]; then exit 1; fi + sleep 5 + done - name: Install SQLMesh dev dependencies run: | - uv venv .venv - source .venv/bin/activate - make install-dev + for i in 1 2 3; do + uv venv .venv && source .venv/bin/activate && + make install-dev && break + if [ "$i" -eq 3 ]; then exit 1; fi + sleep 5 + done - name: Fix Git URL override run: git config --global --unset url."ssh://git@github.com".insteadOf || @@ -133,17 +143,28 @@ jobs: run: git config --global core.symlinks true - uses: actions/checkout@v7 - name: Install make - run: choco install make which -y + run: | + for ($i = 1; $i -le 3; $i++) { + choco install make which -y + if ($LASTEXITCODE -eq 0) { break } + if ($i -eq 3) { exit 1 } + Start-Sleep -Seconds 5 + } - name: Set up Python uses: actions/setup-python@v7 with: python-version: '3.12' - name: Install SQLMesh dev dependencies run: | - python -m venv venv - . ./venv/Scripts/activate - python.exe -m pip install --upgrade pip - make install-dev + for ($i = 1; $i -le 3; $i++) { + python -m venv venv && + . ./venv/Scripts/activate && + python.exe -m pip install --upgrade pip && + make install-dev + if ($LASTEXITCODE -eq 0) { break } + if ($i -eq 3) { exit 1 } + Start-Sleep -Seconds 5 + } - name: Run fast unit tests run: | . ./venv/Scripts/activate @@ -209,7 +230,12 @@ jobs: key: pnpm-store-${{ hashFiles('pnpm-lock.yaml') }} restore-keys: pnpm-store- - name: Install dependencies - run: pnpm install + run: | + for i in 1 2 3; do + pnpm install && break + if [ "$i" -eq 3 ]; then exit 1; fi + sleep 5 + done - name: Run linters and code style checks run: pnpm run lint @@ -225,12 +251,21 @@ jobs: - uses: actions/checkout@v7 - name: Install pnpm via corepack run: | - npm install --global corepack@latest - corepack enable - corepack prepare pnpm@latest-10 --activate - pnpm config set store-dir .pnpm-store + for i in 1 2 3; do + npm install --global corepack@latest && + corepack enable && + corepack prepare pnpm@latest-10 --activate && + pnpm config set store-dir .pnpm-store && break + if [ "$i" -eq 3 ]; then exit 1; fi + sleep 5 + done - name: Install dependencies - run: pnpm install + run: | + for i in 1 2 3; do + pnpm install && break + if [ "$i" -eq 3 ]; then exit 1; fi + sleep 5 + done - name: Build UI run: npm --prefix web/client run build - name: Run unit tests @@ -267,11 +302,20 @@ jobs: uses: astral-sh/setup-uv@v7 - name: Install SQLMesh dev dependencies run: | - uv venv .venv - source .venv/bin/activate - make install-dev + for i in 1 2 3; do + uv venv .venv && source .venv/bin/activate && + make install-dev && break + if [ "$i" -eq 3 ]; then exit 1; fi + sleep 5 + done - name: Install OS-level dependencies - run: ./.github/scripts/install-prerequisites.sh "${{ matrix.engine }}" + run: | + for i in 1 2 3; do + ./.github/scripts/install-prerequisites.sh "${{ matrix.engine }}" && + break + if [ "$i" -eq 3 ]; then exit 1; fi + sleep 5 + done - name: Run tests run: | source .venv/bin/activate @@ -350,12 +394,21 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v7 - name: Install OS-level dependencies - run: ./.github/scripts/install-prerequisites.sh "${{ matrix.engine }}" + run: | + for i in 1 2 3; do + ./.github/scripts/install-prerequisites.sh "${{ matrix.engine }}" && + break + if [ "$i" -eq 3 ]; then exit 1; fi + sleep 5 + done - name: Install SQLMesh dev dependencies run: | - uv venv .venv - source .venv/bin/activate - make install-dev + for i in 1 2 3; do + uv venv .venv && source .venv/bin/activate && + make install-dev && break + if [ "$i" -eq 3 ]; then exit 1; fi + sleep 5 + done - name: Generate database name and setup credentials run: | UUID=$(cat /proc/sys/kernel/random/uuid) @@ -406,7 +459,12 @@ jobs: with: version: latest - name: Install dependencies - run: pnpm install + run: | + for i in 1 2 3; do + pnpm install && break + if [ "$i" -eq 3 ]; then exit 1; fi + sleep 5 + done - name: Run CI run: pnpm run ci test-vscode-e2e: @@ -423,7 +481,12 @@ jobs: with: version: latest - name: Install dependencies - run: pnpm install + run: | + for i in 1 2 3; do + pnpm install && break + if [ "$i" -eq 3 ]; then exit 1; fi + sleep 5 + done - name: Set up Python uses: actions/setup-python@v7 with: @@ -432,14 +495,27 @@ jobs: uses: astral-sh/setup-uv@v7 - name: Install python dependencies run: | - python -m venv .venv - source .venv/bin/activate - make install-dev + for i in 1 2 3; do + python -m venv .venv && source .venv/bin/activate && + make install-dev && break + if [ "$i" -eq 3 ]; then exit 1; fi + sleep 5 + done - name: Install code-server - run: curl -fsSL https://code-server.dev/install.sh | sh + run: | + for i in 1 2 3; do + curl -fsSL https://code-server.dev/install.sh | sh && break + if [ "$i" -eq 3 ]; then exit 1; fi + sleep 5 + done - name: Install Playwright browsers working-directory: ./vscode/extension - run: pnpm exec playwright install + run: | + for i in 1 2 3; do + pnpm exec playwright install && break + if [ "$i" -eq 3 ]; then exit 1; fi + sleep 5 + done - name: Run e2e tests working-directory: ./vscode/extension timeout-minutes: 30 @@ -468,9 +544,12 @@ jobs: uses: astral-sh/setup-uv@v7 - name: Install SQLMesh dev dependencies run: | - uv venv .venv - source .venv/bin/activate - UV=1 make install-dev-dbt-${{ matrix.dbt-version }} + for i in 1 2 3; do + uv venv .venv && source .venv/bin/activate && + UV=1 make install-dev-dbt-${{ matrix.dbt-version }} && break + if [ "$i" -eq 3 ]; then exit 1; fi + sleep 5 + done - name: Run dbt tests # We can't run slow tests across all engines due to tests requiring DuckDB and old versions # of DuckDB require a version of DuckDB we no longer support diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 47fdd9ac7a..3bd90c1fe2 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -17,7 +17,12 @@ jobs: with: version: latest - name: Install dependencies - run: pnpm install --frozen-lockfile + run: | + for i in 1 2 3; do + pnpm install --frozen-lockfile && break + if [ "$i" -eq 3 ]; then exit 1; fi + sleep 5 + done - name: Build UI run: pnpm --prefix web/client run build - name: Upload UI build artifact @@ -44,7 +49,12 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v7 - name: Install build dependencies - run: pip install build twine setuptools_scm + run: | + for i in 1 2 3; do + pip install build twine setuptools_scm && break + if [ "$i" -eq 3 ]; then exit 1; fi + sleep 5 + done - name: Publish Python package run: make publish env: diff --git a/.github/workflows/release_extension.yaml b/.github/workflows/release_extension.yaml index 832f3b466c..c4aa86ca8d 100644 --- a/.github/workflows/release_extension.yaml +++ b/.github/workflows/release_extension.yaml @@ -36,7 +36,12 @@ jobs: with: version: 10 - name: Install dependencies - run: pnpm install --frozen-lockfile + run: | + for i in 1 2 3; do + pnpm install --frozen-lockfile && break + if [ "$i" -eq 3 ]; then exit 1; fi + sleep 5 + done - name: Update package.json version working-directory: vscode/extension run: | diff --git a/.github/workflows/release_shared_js.yaml b/.github/workflows/release_shared_js.yaml index 98bc29d5df..70ed78505d 100644 --- a/.github/workflows/release_shared_js.yaml +++ b/.github/workflows/release_shared_js.yaml @@ -36,7 +36,12 @@ jobs: node-version: '22' registry-url: 'https://registry.npmjs.org' - name: Update npm - run: npm install -g npm@latest + run: | + for i in 1 2 3; do + npm install -g npm@latest && break + if [ "$i" -eq 3 ]; then exit 1; fi + sleep 5 + done - name: Print npm version run: npm --version - name: Install pnpm @@ -44,7 +49,12 @@ jobs: with: version: 10 - name: Install dependencies - run: pnpm install --frozen-lockfile + run: | + for i in 1 2 3; do + pnpm install --frozen-lockfile && break + if [ "$i" -eq 3 ]; then exit 1; fi + sleep 5 + done - name: Update package.json version working-directory: web/common run: |