우리는 AWS 클라우드 안에 S3 버킷을 생성했다. 그렇다면 Jenkins를 활용해서 방금 생성한 S3 버킷에 파일을 업로드할 수 있을까? 바로 CLI(Command Line Interface)를 사용해야 한다. Jenkins는 실제로 브라우저를 열 수 없기 때문에, 해당 도구를 활용해야만 S3에 접근 할 수 있다.
pipeline { // 전역 에이전트를 사용하지 않음으로써 컨테이너 중첩 방지 agent none environment { NETLIFY_SITE_ID = '자신의 사이트 ID' NETLIFY_AUTH_TOKEN = credentials('netlify-token') } stages { stage('AWS') { agent { docker { image 'amazon/aws-cli' // aws-cli 이미지는 기본적으로 실행 후 바로 종료되므로 엔트리포인트 무력화 args "--entrypoint=''" } } steps { sh 'aws --version' } } stage('Build') { agent { docker { image 'mcr.microsoft.com/playwright:v1.39.0-jammy' } } steps { sh ''' echo '빌드 시작..' node --version npm --version npm ci npm run build ''' } } stage('Test') { agent { docker { image 'mcr.microsoft.com/playwright:v1.39.0-jammy' } } steps { sh ''' npm test ''' } } stage('E2E') { agent { docker { image 'mcr.microsoft.com/playwright:v1.39.0-jammy' } } steps { sh ''' # serve를 로컬에 설치하여 실행 npm install serve node_modules/.bin/serve -s build & sleep 10 npx playwright test --reporter=html ''' } } stage('Deploy staging') { agent { docker { image 'node:18-bullseye' } } steps { sh ''' npm install netlify-cli@20.1.1 node_modules/.bin/netlify deploy --dir=build ''' } } stage('Approval'){ agent none steps { timeout(time: 15, unit: 'MINUTES') { input message: '운영환경에 배포할까요?', ok: '네 배포합니다' } } } stage('Deploy prod') { agent { docker { image 'node:18-bullseye' } } steps { sh ''' npm install netlify-cli@20.1.1 node_modules/.bin/netlify deploy --dir=build --prod ''' } } stage('Prod E2E') { agent { docker { image 'mcr.microsoft.com/playwright:v1.39.0-jammy' } } environment { CI_ENVIRONMENT_URL = 'https://legendary-mousse-2c5c10.netlify.app' } steps { sh 'npx playwright test --reporter=html' } } } }

aws —verision에 대한 값이 잘 출력이 된다면 설치가 잘된 것이다.