CI/CD 개념과 파이프라인
6. 연습 문제
문제 1. run_step 의 실패 처리 코드 쓰기
명령이 실패했을 때 종료 코드를 기록하고 그 코드로 스크립트를 끝내는 코드를 쓰세요.
local code=$?
echo "[FAIL] $name (종료 코드 $code)"
exit "$code"$? 는 바로 앞 명령의 종료 코드입니다. local 선언 앞에서 값을 읽어야 다른 명령이 끼어들어 값이 바뀌는 일을 막을 수 있습니다.
문제 2. 정적 검사에서 경고를 오류로 만들기
컴파일 경고를 전부 검사하고 오류로 취급해 빌드를 멈추는 javac 옵션을 쓰세요.
javac -Xlint:all -Werror -d out src/*.java-Xlint:all 이 모든 경고를 켜고 -Werror 가 경고를 오류로 바꿔 정적 검사 단계를 통과하지 못하게 합니다.
문제 3. 재현 가능한 산출물 확인 명령 쓰기
jar 자체가 아니라 그 안 클래스 파일들의 내용이 매번 같은지 확인하는 명령을 쓰세요.
sha256sum out/*.class | sort두 번 빌드해 이 명령의 출력을 비교했을 때 완전히 같아야 재현 가능한 빌드입니다.
문제 4. 실패 시나리오에서 어디까지 실행됐는지 확인하기
테스트가 실패한 뒤 패키징 단계가 실행됐는지 deploy 폴더로 확인하는 명령을 쓰세요.
ls -A deploy출력이 없으면(비어 있으면) 패키징·배포 단계가 실행되지 않았다는 뜻입니다.
문제 5. Continuous Delivery 와 Deployment 구분하기
배포 가능한 상태까지만 자동으로 준비하고, 운영 반영은 사람이 승인한 뒤 진행하는 방식의 이름을 쓰세요.
Continuous Delivery승인 없이 검증만 통과하면 운영까지 자동으로 반영되는 방식은 Continuous Deployment 입니다.