diff --git a/Jenkinsfile b/Jenkinsfile index 0a0c5ed..aa00b8d 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,5 +1,11 @@ pipeline { - agent any // 배포 서버에 직접 SSH 접속하는 경우, 특정 Jenkins 에이전트 레이블을 지정할 수 있음 + agent { + // 빌드 에이전트가 특정 레이블을 가지고 있다면 여기에 지정 + // label 'your-jenkins-agent-label' + tools { + nodejs 'NodeJS 18' // 'NodeJS 18'은 위에서 설정한 Node.js installation의 이름입니다. + } + } environment { // Jenkins Credentials ID (SSH 접속용) @@ -29,6 +35,13 @@ pipeline { HEALTH_CHECK_INTERVAL_SECONDS = 5 } + REMOTE_NPM_CACHE_DIR = "/home/kegorii/.npm" // 이 경로는 Jenkins 에이전트가 아닌 배포 서버의 경로이므로 주의 + // 이 빌드 단계에서는 Jenkins 에이전트의 로컬 npm 캐시 경로를 사용해야 합니다. + // Jenkins 에이전트의 npm cache가 필요하다면, Jenkins 에이전트의 경로를 지정해야 합니다. + // 또는 npm install --prefix . --cache 옵션을 생략하고 Jenkins 에이전트가 기본 캐시를 사용하게 할 수도 있습니다. + // 일단은 `npm install` 만 시도해보고, 캐시 문제가 발생하면 다시 고려하는 것이 좋습니다. + + stages { stage('Checkout Source Code') { steps { @@ -40,11 +53,15 @@ pipeline { stage('Install Dependencies and Build (SvelteKit)') { steps { - // Groovy 문자열 내에서 ${} 구문을 사용하여 Jenkins 환경 변수를 직접 삽입합니다. - // sh 명령은 이중 따옴표로 감싸서 Jenkins가 내부의 Groovy 변수를 먼저 치환하게 합니다. - sh "npm install --prefix . --cache ${env.REMOTE_NPM_CACHE_DIR}" - sh "npm run build" - echo "SvelteKit project built successfully." + // 이제 'npm' 명령어를 직접 호출할 수 있습니다. + // Jenkins Node.js 플러그인이 PATH를 자동으로 설정해줍니다. + // --prefix . 옵션은 현재 디렉토리에 node_modules를 설치하라는 의미입니다. + // --cache 옵션은 Jenkins 에이전트의 로컬 캐시를 사용하게 됩니다. + // Jenkins 에이전트에 대한 전역 캐시 경로가 따로 없다면, 이 옵션을 제거하거나 Jenkins 에이전트의 적절한 캐시 경로를 지정해야 합니다. + // 일반적으로는 이 옵션 없이 `npm install`만으로도 충분합니다. + sh "npm install" // --prefix . --cache ${env.REMOTE_NPM_CACHE_DIR} 부분을 제거하고 먼저 시도 + sh "npm run build" + echo "SvelteKit project built successfully." } }