diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index be6b2564..3b71c594 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -48,6 +48,13 @@ jobs: with: version: latest + - name: Setup Yarn (via Corepack) + if: matrix.pm == 'yarn' + shell: bash + run: | + corepack enable + corepack prepare yarn@stable --activate + - name: Setup Bun if: matrix.pm == 'bun' uses: oven-sh/setup-bun@v2 @@ -114,12 +121,16 @@ jobs: ${{ runner.os }}-bun- # Install dependencies + # COREPACK_ENABLE_STRICT=0 allows pnpm to install even though + # package.json declares "packageManager": "yarn@..." - name: Install dependencies shell: bash + env: + COREPACK_ENABLE_STRICT: '0' run: | case "${{ matrix.pm }}" in npm) npm ci ;; - pnpm) pnpm install ;; + pnpm) pnpm install --no-frozen-lockfile ;; # --ignore-engines required for Node 18 compat with some devDependencies (e.g., markdownlint-cli) yarn) yarn install --ignore-engines ;; bun) bun install ;; diff --git a/.github/workflows/reusable-test.yml b/.github/workflows/reusable-test.yml index ff907249..e0fdc4fc 100644 --- a/.github/workflows/reusable-test.yml +++ b/.github/workflows/reusable-test.yml @@ -40,6 +40,13 @@ jobs: with: version: latest + - name: Setup Yarn (via Corepack) + if: inputs.package-manager == 'yarn' + shell: bash + run: | + corepack enable + corepack prepare yarn@stable --activate + - name: Setup Bun if: inputs.package-manager == 'bun' uses: oven-sh/setup-bun@v2 @@ -104,12 +111,16 @@ jobs: restore-keys: | ${{ runner.os }}-bun- + # COREPACK_ENABLE_STRICT=0 allows pnpm to install even though + # package.json declares "packageManager": "yarn@..." - name: Install dependencies shell: bash + env: + COREPACK_ENABLE_STRICT: '0' run: | case "${{ inputs.package-manager }}" in npm) npm ci ;; - pnpm) pnpm install ;; + pnpm) pnpm install --no-frozen-lockfile ;; yarn) yarn install --ignore-engines ;; bun) bun install ;; *) echo "Unsupported package manager: ${{ inputs.package-manager }}" && exit 1 ;;