홈 › CI/CD › 01 / 7

CI/CD 개념과 파이프라인

섹션 7진행 0 / 7

6. 연습 문제

문제 1. run_step 의 실패 처리 코드 쓰기

명령이 실패했을 때 종료 코드를 기록하고 그 코드로 스크립트를 끝내는 코드를 쓰세요.

bash
local code=$?
echo "[FAIL] $name (종료 코드 $code)"
exit "$code"

$? 는 바로 앞 명령의 종료 코드입니다. local 선언 앞에서 값을 읽어야 다른 명령이 끼어들어 값이 바뀌는 일을 막을 수 있습니다.

문제 2. 정적 검사에서 경고를 오류로 만들기

컴파일 경고를 전부 검사하고 오류로 취급해 빌드를 멈추는 javac 옵션을 쓰세요.

bash
javac -Xlint:all -Werror -d out src/*.java

-Xlint:all 이 모든 경고를 켜고 -Werror 가 경고를 오류로 바꿔 정적 검사 단계를 통과하지 못하게 합니다.

문제 3. 재현 가능한 산출물 확인 명령 쓰기

jar 자체가 아니라 그 안 클래스 파일들의 내용이 매번 같은지 확인하는 명령을 쓰세요.

bash
sha256sum out/*.class | sort

두 번 빌드해 이 명령의 출력을 비교했을 때 완전히 같아야 재현 가능한 빌드입니다.

문제 4. 실패 시나리오에서 어디까지 실행됐는지 확인하기

테스트가 실패한 뒤 패키징 단계가 실행됐는지 deploy 폴더로 확인하는 명령을 쓰세요.

bash
ls -A deploy

출력이 없으면(비어 있으면) 패키징·배포 단계가 실행되지 않았다는 뜻입니다.

문제 5. Continuous Delivery 와 Deployment 구분하기

배포 가능한 상태까지만 자동으로 준비하고, 운영 반영은 사람이 승인한 뒤 진행하는 방식의 이름을 쓰세요.

text
Continuous Delivery

승인 없이 검증만 통과하면 운영까지 자동으로 반영되는 방식은 Continuous Deployment 입니다.