소개
Walk Weekender는 가상의 강변 행사를 위한 방문객 자료를 준비하고 있습니다. 자료 묶음에는 작은 웹사이트, 경로 그림, 경유지 CSV, 방문객 안내문이 들어 있습니다. Jenkins에는 이미 정상적으로 작동하는 자료 묶음 생성기가 있지만, 임시 작업 공간은 매 실행 후 정리됩니다. 이번 과제는 완전한 결과물을 해당 빌드에 연결하여 다운로드할 수 있도록 보관하는 것입니다.
이 실습은 기본적인 Jenkins 화면 탐색, 짧은 Declarative Pipeline을 알아보는 능력, ZIP 압축 해제를 포함한 기본 파일 처리를 전제로 합니다. 보관, 지문, 작업 공간의 수명 주기는 사용하기 전에 설명합니다. 웹사이트를 작성하거나 소프트웨어를 설치할 필요는 없으며, Java를 몰라도 됩니다.
방문객이 이용할 자료의 기준 예시를 볼 때는 Pack Desk를, 빌드와 설정 작업에는 Jenkins를 사용합니다. 두 서비스는 준비된 하나의 VM에서 실행됩니다. 브라우저에서 다운로드한 파일은 컴퓨터에 저장되며, 훈련용 VM 안의 Jenkins 파일과는 별개입니다. 각 단원은 독립적으로 시작합니다. 소요 시간은 읽기와 일반적인 실수에 드는 시간을 포함한 작성자의 예상치이며, 초보자를 대상으로 측정한 값은 아닙니다.
빌드로 만든 파일이 어디로 가는지 확인하기
이 단계에서는 예상 방문객 자료를 살펴보고, 원래 작업을 실행하여 빌드가 성공해도 다운로드할 자료 묶음이 자동으로 남지는 않는 이유를 확인합니다. Pack Desk에서 시작하세요.
요청된 행사는 Riverwalk Saturday이며, 방문객 자료 버전은 RW-02입니다. Reference visitor pack 섹션에서 Open the reference pack을 선택하세요. 기준 자료는 방문객이 이용할 때의 예상 모습을 보여 줍니다. 제출할 결과물은 직접 실행한 Jenkins 빌드에 보관된 ZIP입니다.
Explore the route를 선택하세요. 경로에는 번호가 붙은 세 경유지, Garden gate, Willow bridge, Orchard yard가 있습니다. Download all route stops를 선택하고, 저장된 CSV를 평소 사용하는 텍스트 또는 스프레드시트 뷰어로 여세요. CSV는 필드를 쉼표로 구분하는 텍스트 형식이며, 첫 번째 행에는 열 이름이 있습니다. 시작 부분은 다음과 같습니다.
order,stop_id,name,map_x,map_y,visitor_note
1,gate,Garden gate,150,340,Meet beside the blue gate.
Read the visitor notes를 선택하고 다운로드한 텍스트 파일을 읽으세요. 확정된 모임 시각은 10:00입니다. 이 파일들, 정상적으로 작동하는 페이지, 경로 이미지는 하나의 묶음입니다. 파일을 다운로드해도 페이지는 바뀌지 않습니다. 브라우저의 Back 동작을 두 번 사용하여 경로 페이지에서 자료 개요를 거쳐 데스크로 돌아가세요.
Jenkins 탭으로 전환하세요. create-riverwalk-pack을 열고 Build with Parameters를 선택하세요. 매개변수 양식이 완전히 로드될 때까지 기다리세요. EDITION을 river-v2로 둔 채 Build를 선택하세요. 이 매개변수는 준비된 방문객 자료 버전을 선택하며, 제공된 프로그램이 실제 ZIP을 만듭니다.
번호가 지정된 빌드가 끝날 때까지 기다리세요. Builds에서 해당 빌드를 연 다음 Console Output을 선택하세요. 다음 줄들을 찾으세요.
Prepared visitor edition: Riverwalk Saturday / RW-02
Complete event-pack.zip created.
...
Finished: SUCCESS
프로그램은 실제로 자료 묶음을 만들었습니다. Pipeline 로그의 더 아래쪽에서 마지막 사후 작업 아래에 있는 [Pipeline] deleteDir를 읽어 보세요. 제공된 정리 작업은 단계들이 끝난 뒤 해당 실행의 작업 공간 파일을 제거합니다.
**작업 공간(workspace)**은 Jenkins가 작업 실행에 할당하는 작업 디렉터리입니다. 빌드는 그곳에 파일을 만든 뒤 나중에 제거할 수 있습니다. SUCCESS는 실행 결과를 나타내며, Jenkins가 생성된 모든 파일을 자동으로 보관했다는 뜻은 아닙니다.
이동 경로 링크를 사용하여 해당 번호의 빌드 상태 페이지로 돌아가세요. 제공된 작업을 수정 없이 실행한 이 빌드에는 event-pack.zip 아티팩트 다운로드가 없습니다. 작업은 파일을 빌드했지만, 아카이브를 먼저 보관하지 않고 정리했습니다. 다음 실행과 비교할 수 있도록 이 빌드를 기록에 남겨 두세요.
정리 전에 아카이브 보관하기
이 단계에서는 완전한 방문객 ZIP을 보관하고, 작업 공간 정리는 유지하며, 다운로드한 파일을 사용합니다. Jenkins의 create-riverwalk-pack 작업 페이지에서 시작하세요.
Configure를 선택한 다음 Pipeline 섹션으로 이동하세요. Script 편집기에는 제공된 빌드 단계들과 post 블록이 들어 있습니다. 이 블록의 always 섹션은 실행이 실패한 경우를 포함하여 단계들이 끝난 뒤 실행됩니다. 그 안의 deleteDir() 연산은 할당된 작업 공간을 비웁니다. 이 정리 작업은 유지하세요.
archiveArtifacts는 정리 전에 선택한 작업 공간 파일을 해당 빌드에 보관할 아티팩트로 복사합니다. artifacts 설정은 작업 공간을 기준으로 한 상대 파일 이름 또는 패턴입니다. 'event-pack.zip'을 둘러싼 작은따옴표는 이 값을 문자열로 만듭니다. fingerprint: true는 Jenkins의 파일 사용 추적용 식별자도 기록합니다. 이 식별자는 다음 가이드 실습에서 작업 간에 이 ZIP을 추적하는 데 도움이 됩니다. 지문(fingerprint)은 파일의 식별 정보와 사용 내역을 기록하며, 게시자의 서명은 아닙니다.
콜론은 각 설정과 값을 구분하고, 쉼표는 설정들을 구분합니다. stages 안에서 Build pack 다음에 Archive pack 단계를 추가하세요. 매개변수, 빌드 명령, 정리 작업은 유지하세요. 전체 버전을 복사하려면 Script 안을 클릭하고, Windows/Linux에서는 Ctrl+A, macOS에서는 Command+A로 내용을 모두 선택한 다음 아래 내용으로 바꾸세요.
pipeline {
agent any
parameters {
choice(name: 'EDITION', choices: ['river-v2'], description: 'Visitor edition to prepare')
}
stages {
stage('Prepare workspace') {
steps { deleteDir() }
}
stage('Build pack') {
steps { sh 'sh /var/jenkins_home/walk-pack-fixtures/build-pack.sh' }
}
stage('Archive pack') {
steps {
archiveArtifacts artifacts: 'event-pack.zip', fingerprint: true
}
}
}
post {
always { deleteDir() }
}
}
Save를 선택하세요. Build with Parameters를 다시 실행하세요. 매개변수 양식이 완전히 로드될 때까지 기다리고, EDITION을 river-v2로 유지한 채 Build를 선택하세요. 새 번호의 빌드가 성공적으로 끝날 때까지 기다리세요. 콘솔에는 Archiving artifacts, Recording fingerprints와 마지막 정리 작업이 표시되어야 합니다.
새 빌드의 상태 페이지를 열고 Build Artifacts를 찾으세요. event-pack.zip을 다운로드하세요. 작업 공간은 정리되었지만, Jenkins는 이 ZIP을 해당 빌드의 일부로 보관했습니다.
컴퓨터의 압축 해제 도구로 ZIP 전체를 새 폴더에 추출하세요. 추출한 폴더의 index.html을 브라우저에서 여세요. 여덟 파일을 모두 함께 유지하세요.
index.html
route.html
styles.css
route-map.png
stops.csv
visitor-notes.txt
event.json
build.json
Riverwalk Saturday, 방문객 자료 버전 RW-02, 모임 시각 10:00을 확인하세요. Explore the route로 이동하여 세 경유지를 모두 살펴보고, 경로 CSV를 다운로드한 다음, Read the visitor notes를 선택하여 로컬 텍스트 파일을 읽으세요. 브라우저에 따라 이 텍스트 파일은 다시 다운로드되지 않고 페이지에서 바로 열릴 수 있습니다. 해당 파일은 이미 추출한 폴더에 포함되어 있습니다. 이미지와 링크는 로컬 파일을 사용하므로, 이 방문객 자료 묶음은 훈련용 VM과 독립적으로 사용할 수 있습니다.

추출한 페이지에 스타일이나 이미지가 없다면 ZIP 전체를 추출했는지, index.html을 styles.css 및 route-map.png와 같은 폴더에서 열었는지 확인하세요. ZIP 뷰어 안에서 HTML 파일 하나만 열면 관련 리소스와 분리될 수 있습니다. 파일을 다시 빌드하지 말고 원래 다운로드한 파일을 새 폴더에 추출하세요.
Jenkins가 Groovy 구문 오류를 보고하면 Configure로 돌아가 위의 전체 스크립트를 복원하고, Save를 선택한 뒤 river-v2를 다시 실행하세요. 중괄호와 작은따옴표를 유지하세요. 제공된 작업을 수정하지 않은 상태로 처음 실행하기 전에 스크립트를 편집했다면 Archive pack만 임시로 제거하고 저장한 뒤 한 번 실행하세요. 그런 다음 전체 스크립트를 복원하고 다시 실행하세요.
최종 결과는 현재 저장된 Pipeline에서 나와야 합니다. 이후에 편집할 때마다 다시 실행하세요. 이전 빌드와 제공된 자료 묶음 파일을 유지하세요. 이 훈련용 VM은 임시 환경이므로, 실습을 마친 후에도 다운로드한 사본을 보관하세요.
요약
실제 자료 묶음이 임시 작업 공간에서 사라지는 것을 관찰한 뒤, Jenkins의 보관 및 지문 기록 기능으로 완전한 ZIP을 보관했습니다. 정리 작업을 유지하면서 원래 빌드 아티팩트를 다운로드하고, 그 안의 페이지, 이미지, 경로 데이터, 방문객 안내문을 하나의 독립적인 방문객 자료 묶음으로 사용했습니다.



