소개
Walk Weekender는 Riverwalk Saturday 방문객 자료의 한 버전을 확정했습니다. 이후에 만든 초안도 빌드에 성공했습니다. 전달 작업은 자료를 다시 빌드하거나 이미 정리된 작업 공간에 의존하지 않고, 기존 Jenkins 실행에서 확정된 자료 묶음을 가져와야 합니다.
이 실습은 다운로드할 수 있는 행사 자료 묶음 보관하기에서 배운 보관, 작업 공간 정리, 지문 개념과 기본적인 Jenkins 화면 탐색 및 ZIP 압축 해제를 전제로 합니다. 이 단원은 독립적으로 시작합니다. 원본 빌드 기록, 현재 제공 중인 이전 자료 묶음, 전달 작업이 이미 준비되어 있습니다. 이전 실습의 파일이나 실행 중인 VM은 필요하지 않습니다.
실제 방문객 파일을 살펴볼 때는 Pack Desk를, 작업을 살펴보고 설정할 때는 Jenkins를 사용합니다. 두 서비스는 준비된 하나의 VM에서 실행됩니다. Copy Artifact 플러그인도 이미 사용할 수 있습니다. 제공된 게시 프로그램은 이 요청을 검사하는 작은 로컬 훈련용 수신자이며, 운영용 아티팩트 레지스트리나 승인 서비스가 아닙니다. 승인 절차를 구현하는 것이 아니라 이미 확정된 실행을 선택합니다. 소요 시간은 작성자의 예상치이며, 초보자를 대상으로 측정한 값은 아닙니다.
요청과 복사된 자료 묶음 비교하기
이 단계에서는 확정된 원본 실행을 식별한 다음, 전달 작업이 다른 버전의 자료를 복사하는 것을 관찰합니다. Pack Desk에서 시작하세요.
Requested edition: RW-02를 읽으세요. 활동은 Riverwalk Saturday이며, 원본 작업은 create-riverwalk-pack입니다. Open the current pack을 선택하세요. 현재 버전은 RW-01이고 모임 시각은 10:30입니다. 요청된 자료 묶음으로 이 이전 버전을 교체하되, 별도의 Parkside 자료 묶음은 계속 사용할 수 있어야 합니다. 브라우저의 Back 동작으로 데스크로 돌아가세요.
Jenkins로 전환하고 create-riverwalk-pack을 연 다음 Builds에서 번호가 지정된 빌드들을 살펴보세요. 빌드 번호는 하나의 작업에 속합니다. 번호 하나만으로는 전체 Jenkins에서 아티팩트를 고유하게 식별할 수 없습니다. 각 빌드의 Console Output을 열어 준비된 방문객 자료 버전과 최종 결과를 읽으세요. 기록에는 다음 빌드들이 있습니다.
| 빌드 | 방문객 자료 버전 | 결과 | 이번 요청에서의 의미 |
|---|---|---|---|
| #1 | Parkside Paper Trail / PP-01 | SUCCESS | 다른 활동 |
| #2 | Riverwalk Saturday / RW-02 | SUCCESS | 기존의 확정된 자료 묶음 |
| #3 | Riverwalk Saturday / RW-03-DRAFT | SUCCESS | 요청된 버전이 아닌 더 최근의 초안 |
| #4 | Riverwalk Saturday / RW-02 | FAILURE | ZIP을 보관했더라도 실패한 실행 |
이동 경로 링크를 사용해 빌드 #2를 열고, Build Artifacts에서 event-pack.zip을 다운로드한 뒤 아카이브 전체를 추출하세요. 개요와 안내문에는 RW-02와 10:00이 표시됩니다. 콘솔은 작업 공간 정리로 끝납니다. 아카이브는 해당 빌드에 속하므로, 전달 작업은 정리 후에도 이를 가져올 수 있습니다.
이 기존 원본 빌드 기록을 유지하세요. 원본 작업이나 해당 빌드의 설정을 바꾸거나, 다시 실행하거나, 삭제하거나, 이름을 바꾸지 마세요. 작업 범위는 deliver-riverwalk-pack의 Pipeline과 빌드 매개변수뿐입니다. 제공된 파일, 게시 프로그램, 보관 및 정리 작업을 유지하고, 별도의 Parkside 자료 묶음은 그대로 두세요.
Dashboard 이동 경로 링크를 사용하여 deliver-riverwalk-pack을 열고, Configure를 선택한 다음 Pipeline 섹션으로 이동하세요. 아직 변경하지 말고 Copy archive 단계를 읽어 보세요.
copyArtifacts projectName: params.SOURCE_JOB,
selector: lastSuccessful(),
filter: 'event-pack.zip',
fingerprintArtifacts: true
copyArtifacts는 다른 Jenkins 작업에 보관된 아티팩트를 가져옵니다. projectName은 해당 작업을 선택하고, params.SOURCE_JOB은 이번 전달 실행에 입력한 값을 읽습니다. filter는 해당 작업의 아카이브 안에서 파일을 선택합니다. 선택기는 번호가 지정된 원본 실행 중 어느 것을 사용할지 결정합니다. lastSuccessful()은 선택 대상이 달라질 수 있는 방식입니다. 요청에 적힌 버전이 아니라, 복사가 이루어지는 시점의 가장 최근 성공 실행을 뜻합니다. fingerprintArtifacts: true는 작업 간 추적을 위해 파일 사용 내역을 기록합니다.
제공된 Archive delivery 단계는 복사된 ZIP을 전달 빌드에 보관합니다. Deliver pack은 복사한 바로 그 바이트를 로컬 데스크로 전송합니다. 마지막 post 정리 작업은 전달 작업 공간을 비웁니다. 이 부분들은 변경하지 마세요. 편집하지 않은 채 Save를 선택하세요.
Build with Parameters를 선택하세요. 양식이 완전히 로드될 때까지 기다리세요. SOURCE_JOB을 create-riverwalk-pack으로, SOURCE_BUILD를 2로 설정한 다음 Build를 선택하세요. 이 값들은 의도한 원본을 나타내지만, 현재 선택기는 여전히 SOURCE_BUILD를 무시합니다.
이 전달 빌드가 FAILURE로 끝날 때까지 기다린 다음 Console Output을 여세요. 원본 빌드 3에서 Copied 1 artifact가 표시된 후 **The package bytes differ from the selected source archive.**가 나타나야 합니다. 게시 프로그램은 HTTP 422를 반환합니다. 서비스에 도달했지만 선택된 패키지를 거부했다는 뜻입니다. 연결 실패와는 다릅니다. 셸 단계가 0이 아닌 결과를 보고하므로 빌드가 실패합니다.
이 전달 빌드의 Build Artifacts에서 event-pack.zip을 열고, 별도 폴더에 추출하여 개요를 읽으세요. 빌드 #3이 가장 최근 성공한 원본 실행이므로 RW-03-DRAFT가 들어 있습니다. 보관된 ZIP과 성공한 원본 실행만으로는 요청된 버전을 식별하기에 충분하지 않습니다.
Pack Desk로 전환하고 새로 고침한 다음 현재 자료 묶음을 다시 여세요. 여전히 RW-01과 10:30이 표시되어야 합니다. 거부된 시도가 유효한 방문객 자료를 대체해서는 안 됩니다. 브라우저의 Back 동작으로 데스크로 돌아가세요.
확정된 실행을 전달하고 추적하기
이 단계에서는 확정된 실행을 명시적으로 지정하여 복사하고, 전달된 방문객 파일과 Jenkins 추적 기록을 확인합니다. Jenkins의 deliver-riverwalk-pack 작업 페이지에서 시작하세요.
Configure를 선택한 다음 Pipeline으로 이동하세요. Script에서 다음 줄만 변경하세요.
selector: lastSuccessful(),
아래 내용으로 바꾸세요.
selector: specific(params.SOURCE_BUILD),
specific(...)은 원본 빌드 번호를 명시적으로 선택합니다. params.SOURCE_BUILD는 빌드 양식에 입력한 문자열을 읽으며, SOURCE_JOB과 함께 하나의 기존 실행을 식별합니다. 쉼표를 유지하세요. 뒤에 오는 filter 설정은 동일한 copyArtifacts 연산에 속합니다. 제공된 RECEIVER_URL 값, 다른 모든 단계, 마지막 정리 작업을 유지하세요.
Script에서 Copy archive 아래의 선택기 줄을 찾으세요. 코드가 완전히 로드될 때까지 기다리고, 필요하면 편집기 안에서 스크롤하세요. lastSuccessful을 두 번 클릭하여 함수 이름만 선택한 다음 specific을 입력하세요. 빈 괄호는 그대로 남습니다. 커서가 specific 바로 뒤에 있는 상태에서 Right Arrow 키를 한 번 눌러 () 안으로 이동한 다음 params.SOURCE_BUILD를 입력하세요. 저장하기 전에 위에 제시된 전체 선택기 줄을 확인하세요. 실수로 더 많은 텍스트를 바꿨다면 저장하기 전에 Windows/Linux에서는 Ctrl+Z, macOS에서는 Command+Z로 되돌린 뒤 다시 시도하세요. Save를 선택하세요.
Build with Parameters를 다시 실행하세요. 양식이 완전히 로드될 때까지 기다린 다음, SOURCE_JOB에 create-riverwalk-pack을, SOURCE_BUILD에 2를 입력하고 Build를 선택하세요. SUCCESS가 나올 때까지 기다리세요. 콘솔에는 아티팩트 복사, 보관 및 지문 기록 작업, delivered가 포함된 응답, 마지막 작업 공간 정리가 표시되어야 합니다.
Jenkins가 Groovy 구문 오류를 보고하면 Configure로 돌아가서 선택기 줄, 괄호, 쉼표를 위의 정확한 교체 내용과 대조하세요. 저장한 뒤 같은 값으로 다시 실행하세요. 콘솔이 프로젝트, 빌드 또는 아티팩트가 없다고 보고하면 양식의 두 값과 원본 빌드 #2를 확인하세요. 새 실행을 만들기 위해 원본 작업을 다시 실행하지 마세요. **The selected source run does not satisfy this delivery request.**라는 응답은 작업 또는 빌드 번호가 잘못되었다는 뜻입니다. **The package bytes differ from the selected source archive.**는 복사한 ZIP이 해당 매개변수가 가리키는 원본 실행과 일치하지 않는다는 뜻입니다. 둘 다 데스크에 도달한 뒤 발생하는 비즈니스 규칙에 따른 거부입니다.
성공한 전달 빌드의 상태 페이지를 열고 See Fingerprints를 선택하세요. Recorded Fingerprints에서 event-pack.zip 행의 Original owner는 create-riverwalk-pack 빌드 #2로 연결되어야 합니다. event-pack.zip 링크를 선택하여 세부 정보를 여세요. 파일이 처음 도입된 빌드를 가리키는 링크는 해당 원본 실행을 식별해야 하며, Usage에는 성공한 deliver-riverwalk-pack 실행이 포함되어야 합니다. 이는 동일한 파일의 출처와 사용 내역에 대한 Jenkins 기록입니다. 누가 자료 버전을 승인했는지 인증하거나 암호학적 게시자 서명을 제공하는 것은 아닙니다.

상단 근처에서 파일이 처음 도입된 빌드의 링크를 읽고 Usage 아래의 두 작업을 살펴보세요. 전달 빌드 번호는 이 예시와 다를 수 있습니다.
성공한 이 전달 빌드에서 event-pack.zip을 다운로드하세요. 새 폴더에 추출하고 index.html을 열어 Riverwalk Saturday, RW-02, 10:00을 확인하세요. Explore the route를 열어 세 경유지와 표시된 경로 이미지를 모두 확인하세요. CSV는 Download all route stops를, 로컬 텍스트는 Read the visitor notes를 선택하세요. 안내문은 새 다운로드를 시작하는 대신 브라우저에서 바로 열릴 수 있습니다. 원래 텍스트 파일은 이미 추출한 폴더에 있습니다. build.json을 포함한 여덟 파일을 모두 함께 유지하세요. 이 파일의 job과 number는 create-riverwalk-pack과 2를 식별합니다.
Pack Desk로 전환하고 새로 고침하세요. 이제 현재 자료 묶음에는 RW-02가 표시되어야 합니다. 자료를 열고 경로, CSV, 안내문 검사를 반복하세요. 브라우저의 Back 동작으로 돌아간 다음 Download the current ZIP을 선택하세요. 이 다운로드는 새로 빌드한 대체물이 아니라 원본 아카이브 전체여야 합니다. 수신자는 현재 자료 묶음을 변경하기 전에 실제 바이트를 비교합니다.
마지막으로 데스크 탐색 메뉴에서 Parkside pack을 선택하고, Parkside Paper Trail이 경로 및 안내문과 함께 여전히 열리는지 확인하세요. 원본 빌드 기록과 제공된 모든 파일은 온전히 유지되어야 합니다. 이후 Pipeline을 편집할 때마다 완료 검사를 하기 전에 저장된 Pipeline을 다시 실행하세요.
요약
작업 공간이 정리된 뒤에도 기존 Jenkins 빌드에서 확정된 방문객 자료 묶음을 가져왔습니다. 선택 대상이 달라지는 선택기가 왜 빌드에 성공한 초안을 고를 수 있는지 확인하고, 작업과 빌드 번호를 명시적으로 지정했으며, Jenkins 지문을 통해 원본 아카이브가 별도의 전달 작업으로 이어지는 과정을 추적했습니다. 이제 데스크는 완전한 원본 방문객 파일을 제공하며, 별도의 활동도 계속 이용할 수 있습니다.



