GitHub Actions에서 pnpm/action-setup 자체 설치 프로그램 문제: 심층 분석 및 해결 방법
GitHub Actions에서 pnpm/action-setup 자체 설치 프로그램 문제: 심층 분석 및 해결 방법
GitHub Actions에서 pnpm/action-setup를 사용하여 pnpm 패키지 관리자를 설치하는 경우 "자체 설치 프로그램 오류"가 발생하는 경우가 있습니다. 이 오류는 다양한 요인으로 인해 발생할 수 있으며, 개발 프로세스에 지장을 초래할 수 있습니다.
오류 메시지:
오류 메시지는 상황에 따라 다를 수 있지만, 일반적으로 다음과 같은 내용을 포함합니다.
- "ERR_PNPM_META_FETCH_FAIL GET https://registry.npmjs.org/pnpm: Value of "this" must be of type URLSearchParams"
- "Error: Something went wrong, self-installer exits with code 1"
오류 원인:
이 오류는 다음과 같은 다양한 요인으로 인해 발생할 수 있습니다.
- pnpm/action-setup 버전: pnpm/action-setup의 오래된 버전을 사용하는 경우 오류가 발생할 수 있습니다. 최신 버전으로 업그레이드하면 문제가 해결될 가능성이 높습니다.
- Node.js 버전: pnpm/action-setup은 최신 버전의 Node.js와 호환되지 않을 수 있습니다. Node.js를 최신 버전으로 업그레이드하면 문제가 해결될 가능성이 높습니다.
- 네트워크 연결: 네트워크 연결 문제로 인해 pnpm/action-setup 자체 설치 프로그램이 registry.npmjs.org에 액세스하지 못할 수 있습니다. 안정적인 네트워크 연결을 확인하십시오.
- npm 캐시: 손상된 npm 캐시가 오류를 유발할 수 있습니다. npm 캐시를 지우고 다시 시도하십시오.
해결 방법:
다음 단계를 수행하여 pnpm/action-setup 자체 설치 프로그램 오류를 해결할 수 있습니다.
-
pnpm/action-setup 버전 업그레이드:
- uses: pnpm/action-setup@v4
위 코드를 사용하여 GitHub Actions 작업에서 pnpm/action-setup의 최신 버전을 사용합니다.
-
네트워크 연결 확인:
-
npm 캐시 지우기:
다음 명령을 사용하여 npm 캐시를 지웁니다.
npm cache clean --force
캐시를 지운 후 다시 pnpm/action-setup을 설치하십시오.
추가 정보:
GitHub Actions에서 pnpm/action-setup 사용 예제 코드
예제 1: 기본 사용
이 예제에서는 pnpm/action-setup을 사용하여 pnpm을 설치하고, package.json
파일에 정의된 종속성을 설치합니다.
name: Node.js with pnpm
on:
push:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup pnpm
uses: pnpm/action-setup@v4
- name: Install dependencies
run: pnpm install
- name: Test
run: pnpm test
예제 2: 사용자 지정 옵션 사용
이 예제에서는 pnpm/action-setup의 사용자 지정 옵션을 보여줍니다.
name: Node.js with pnpm
on:
push:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup pnpm with custom options
uses: pnpm/action-setup@v4
with:
node-version: '16'
args: ['--frozen-lockfile']
설명:
uses: pnpm/action-setup@v4
: 이 단계는 pnpm/action-setup@v4 버전을 사용하여 pnpm을 설치합니다.node-version
: (예제 2에서만 사용됨) 이 옵션은 설치할 Node.js 버전을 지정합니다.
참고:
- 이러한 예제는 기본적인 사용법을 보여주는 데만 사용됩니다. 사용자의 특정 요구 사항에 따라 단계를 추가하거나 수정해야 할 수도 있습니다.
GitHub Actions에서 pnpm/action-setup 대체 방법
actions/setup-node@v2:
- 장점:
- GitHub Marketplace에서 공식적으로 지원되는 작업입니다.
- pnpm뿐만 아니라 다른 Node.js 버전도 설치할 수 있습니다.
- 사용하기 쉬운 단일 단계 작업입니다.
- 단점:
- pnpm 6.10 이상이 필요합니다.
- pnpm의 모든 기능을 지원하지 않을 수 있습니다.
name: Node.js with actions/setup-node
on:
push:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup Node.js
uses: actions/setup-node@v2
with:
node-version: '16'
cache: 'pnpm'
- name: Install dependencies
run: pnpm install
- name: Test
run: pnpm test
actions/cache:
- 장점:
- 이전 작업에서 pnpm 설치를 캐시하여 속도를 높일 수 있습니다.
- 특정 pnpm 버전을 설치할 수 있습니다.
- 단점:
- 다소 복잡한 구성이 필요할 수 있습니다.
- 캐시가 손상되면 오류가 발생할 수 있습니다.
name: Node.js with actions/cache
on:
push:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Cache pnpm
id: cache-pnpm
uses: actions/cache@v2
with:
path: ~/.pnpm
key: ${{ runner.os }}-pnpm-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-pnpm-
- name: Setup Node.js
if: steps.cache-pnpm.outputs.cache-hit != 'true'
uses: actions/setup-node@v2
with:
node-version: '16'
cache: 'pnpm'
- name: Install dependencies
run: pnpm install
- name: Test
run: pnpm test
bash 스크립트:
- 장점:
- pnpm 설치 프로세스를 완벽하게 제어할 수 있습니다.
- 다른 도구와 함께 쉽게 사용자 정의할 수 있습니다.
- 단점:
- 유지 관리가 더 어려울 수 있습니다.
- GitHub Actions 환경에서 bash 스크립트를 실행하는 방법에 대한 지식이 필요합니다.
name: Node.js with bash script
on:
push:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install pnpm
run: |
curl -fsSL https://install.pnpm.io/install.sh | sh
export PATH="$HOME/.pnpm/bin:$PATH"
- name: Install dependencies
run: pnpm install
- name: Test
run: pnpm test
Dockerfile:
- 장점:
- 개발 환경과 배포 환경을 일관되게 유지할 수 있습니다.
- pnpm뿐만 아니라 다른 도구와 라이브러리를 설치하는 데 사용할 수 있습니다.
- 단점:
- Dockerfile을 작성하고 유지 관리하는 데 더 많은 노력이 필요합니다.
- 빌드 속도가 느릴 수 있습니다.
name: Node.js with Docker
on:
push:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions
github-actions pnpm