Update ccip-1.6.2 installation callout #21463
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Test | |
| on: [push, pull_request] | |
| # Cancel any in-progress job or run | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
| cancel-in-progress: true | |
| env: | |
| FOUNDRY_PROFILE: ci | |
| # Set default permissions as restrictive as possible | |
| permissions: | |
| actions: write # Required for upload-artifact | |
| contents: read # Required for checkout and other read operations | |
| checks: write # Required for test results | |
| jobs: | |
| # Setup job to install and cache dependencies | |
| setup: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout Repo | |
| uses: actions/checkout@v5 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: '20' | |
| cache: 'npm' | |
| cache-dependency-path: '**/package-lock.json' | |
| - name: Cache node_modules | |
| uses: actions/cache@v4 | |
| id: cache-node-modules | |
| continue-on-error: true | |
| with: | |
| path: node_modules | |
| key: ${{ runner.os }}-node-modules-${{ hashFiles('**/package-lock.json') }} | |
| - name: Install Dependencies | |
| if: steps.cache-node-modules.outputs.cache-hit != 'true' | |
| run: | | |
| echo "Cache miss, installing dependencies..." | |
| npm ci --prefer-offline --no-audit | |
| # Job 1: Check Solidity Compilation and Solhint | |
| solidity: | |
| needs: setup | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout Repo | |
| uses: actions/checkout@v5 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: '20' | |
| cache: 'npm' | |
| cache-dependency-path: '**/package-lock.json' | |
| - name: Install Foundry | |
| uses: foundry-rs/foundry-toolchain@50d5a8956f2e319df19e6b57539d7e2acb9f8c1e # v1.5 | |
| with: | |
| version: stable | |
| cache: false | |
| - name: Show Forge version | |
| run: forge --version | |
| - name: Restore node_modules | |
| uses: actions/cache/restore@v4 | |
| continue-on-error: true | |
| with: | |
| path: node_modules | |
| key: ${{ runner.os }}-node-modules-${{ hashFiles('**/package-lock.json') }} | |
| - name: Ensure Dependencies | |
| run: | | |
| if [ ! -d "node_modules" ]; then | |
| echo "node_modules not found, installing dependencies..." | |
| npm ci --prefer-offline --no-audit | |
| fi | |
| - name: Check Solidity Formatting | |
| run: npm run sol:fmt:check | |
| - name: Check Solidity Compilation | |
| run: forge build --sizes | |
| - name: Check Solidity Linting | |
| run: npm run lint-solc | |
| # Job 2: Check ESLint | |
| eslint: | |
| needs: setup | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout Repo | |
| uses: actions/checkout@v5 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: '20' | |
| cache: 'npm' | |
| cache-dependency-path: '**/package-lock.json' | |
| - name: Restore node_modules | |
| uses: actions/cache/restore@v4 | |
| continue-on-error: true | |
| with: | |
| path: node_modules | |
| key: ${{ runner.os }}-node-modules-${{ hashFiles('**/package-lock.json') }} | |
| - name: Ensure Dependencies | |
| run: | | |
| if [ ! -d "node_modules" ]; then | |
| echo "node_modules not found, installing dependencies..." | |
| npm ci --prefer-offline --no-audit | |
| fi | |
| - name: Check ESLint | |
| run: | | |
| echo "Running ESLint with cache..." | |
| npm run lint -- --cache --cache-strategy content | |
| - name: Check Formatting | |
| run: | | |
| echo "Running Prettier with cache..." | |
| npm run format:check -- --cache | |
| # Job 3: Check Internal Links | |
| linkcheck-internal: | |
| needs: setup | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout Repo | |
| uses: actions/checkout@v5 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: '20' | |
| cache: 'npm' | |
| cache-dependency-path: '**/package-lock.json' | |
| - name: Restore node_modules | |
| uses: actions/cache/restore@v4 | |
| continue-on-error: true | |
| with: | |
| path: node_modules | |
| key: ${{ runner.os }}-node-modules-${{ hashFiles('**/package-lock.json') }} | |
| - name: Ensure Dependencies | |
| run: | | |
| if [ ! -d "node_modules" ]; then | |
| echo "node_modules not found, installing dependencies..." | |
| npm ci --prefer-offline --no-audit | |
| fi | |
| - name: Check Internal Links | |
| run: npm run linkcheck-internal | |
| # Job 4: Check Types | |
| typecheck: | |
| needs: [setup] | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout Repo | |
| uses: actions/checkout@v5 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: '20' | |
| cache: 'npm' | |
| cache-dependency-path: '**/package-lock.json' | |
| - name: Restore node_modules | |
| uses: actions/cache/restore@v4 | |
| continue-on-error: true | |
| with: | |
| path: node_modules | |
| key: ${{ runner.os }}-node-modules-${{ hashFiles('**/package-lock.json') }} | |
| - name: Ensure Dependencies | |
| run: | | |
| if [ ! -d "node_modules" ]; then | |
| echo "node_modules not found, installing dependencies..." | |
| npm ci --prefer-offline --no-audit | |
| fi | |
| - name: Generate Astro types | |
| run: | | |
| echo "Generating Astro types..." | |
| npm run astro sync | |
| - name: Check Types | |
| run: | | |
| echo "Running type check..." | |
| npm run typecheck | |
| # Job 5: Run Jest Tests | |
| jest: | |
| needs: [setup] | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| node-version: [20.x] | |
| fail-fast: false | |
| steps: | |
| - name: Checkout Repo | |
| uses: actions/checkout@v5 | |
| - name: Setup Node.js ${{ matrix.node-version }} | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: ${{ matrix.node-version }} | |
| cache: 'npm' | |
| cache-dependency-path: '**/package-lock.json' | |
| - name: Restore node_modules | |
| uses: actions/cache/restore@v4 | |
| continue-on-error: true | |
| with: | |
| path: node_modules | |
| key: ${{ runner.os }}-node-modules-${{ hashFiles('**/package-lock.json') }} | |
| - name: Ensure Dependencies | |
| run: | | |
| if [ ! -d "node_modules" ]; then | |
| echo "node_modules not found, installing dependencies..." | |
| npm ci --prefer-offline --no-audit | |
| fi | |
| - name: Run Jest Tests | |
| run: npm test -- --coverage | |
| - name: Upload Test Coverage | |
| if: always() | |
| uses: actions/upload-artifact@v5 | |
| with: | |
| name: coverage-report-node-${{ matrix.node-version }} | |
| path: coverage/ | |
| retention-days: 30 |