6장 아티팩트 승격 계약을 만든다
배포 요청에는 “최신 WAR”가 아니라 식별 가능한 봉투가 필요하다.
{
"service": "releaseportal",
"version": "1.0.0",
"gitCommit": "abc1234",
"artifact": "releaseportal.war",
"sha256": "배포 파일의 64자리 해시",
"builtWith": "JDK 21",
"target": "Tomcat 11 / Java 21",
"migration": "expand only",
"health": "/releaseportal/health",
"rollback": "0.9.0"
}
SNAPSHOT이나 같은 이름의 WAR를 덮어써도 아티팩트 저장소에서는 내용이 바뀌지 않게 한다. 운영에 반입할 때 서버에서 체크섬을 다시 계산한다. 전송 전과 전송 후 해시가 다르면 unzip이나 재복사로 고치지 않고 반입을 중단한다.