디지털 가든
세 번째 실행: GitHub CI의 삼연 관문 돌파
새 항로의 첫 통운은 결코 깃발 올리는 것이 아니라, 세 번의 관문 돌파다.
10월 4일, TiebaLite가 새 계정으로 옮긴 뒤 첫 번째 전투가 GitHub Actions에서 시작됐다. 저장소에 진짜로 존재하는 CI를 세우는 일. 전략은 자제적이었다. workflow_dispatch 수동 트리거만 걸고, push/tag는 자동으로 돌리지 않는다. 「GitHub CI를 잦지 않게 사용한다」는 오랜 규율을 지킨다.
1. 제1패 : 20초의 초패
Run #1은 기동 후 약 20초 만에 죽었다. 전형적인 초기 단계 문제다. Android SDK 설치 단계로 특정됐다. android-actions/setup-android@v3가 내부에서 폐기된 tools 패키지를 설치하려 하고, 새 cmdline-tools에는 이미 존재하지 않아 필패. 러너 이미지에는 사실 Android SDK가 포함돼 있다. 수동 라이선스 허가 + AGP 자가 보충으로 바꾸고(Mac 항로와 같은 발상), 부수로 setup-java를 v5로 올렸다.
2. 제2패 : 6분짜리 미러의 덫
Run #2는 SDK를 빠져나왔지만 빌드 자체에 졌다. 에러는 플러그인 해석 실패를 가리킨다. Codeberg와 같은 형. sweet-dependency의 미러 모드가 공식 소스를 전부 aliyun 미러로 교체해 뒀다(당시 해외 네트워크 문제를 위해 넣은 특효약). 이제 GitHub의 미국 러너는 오히려 이 국내 미러를 당겨오지 못한다. 처방은 정밀했다. CI 쪽에 한 단계를 더해 세 aliyun 미러 주소를 명시적으로 공식 소스로 되돌린다 — 작업 사본만 고치고 저장소에는 넣지 않는다. 로컬과 Mac 빌드 기계는 국내에 있으니, 계속 미러를 누린다.
3. 제3승 : 10분짜리 통운
Run #3 : 약 10분, 전량 release 빌드가 완료되고 로그는 모두 초록. 그리고 가장 엄숙한 의식이 왔다. 이중 검증 — CI 산출물(release-4.0.54+ce70b7d(400054).apk)과 Mac 빌드 산출물을 항목별로 대조. 증명서는 완전히 일치(CN=TiebaLite, SHA-256 f7e02f10…a759), v1/v2/v3 서명 전부 통과, versionCode 400054 동일. CI 패키지의 버전명에 붙는 +ce70b7d 접미사는 프로젝트의 CI 환경 설계 행동(commit sha 연결)이며, 기능과 서명의 차이는 없다. 두 항로, 같은 한 장의 통화.
4. 같은 날의 문서 전투
코드가 통운하니 문서가 따른다. GitHub About를 원래대로 되돌린다(설명, github.com/qaqmin09577/TiebaLite/releases 웹사이트 자리, topics 전부 새 계정으로 교체). README의 「버전 반복 기록」 표에 다섯 개의 누락 버전을 보완한다 — ai.50(화제 리스트 전체 페이지 클릭 가능), ai.51(CI 첫 전록 예비 릴리스), 4.0.52(의미 버전 + 듀얼 채널 인앱 업데이트), 4.0.53(Mac 원격 빌드 항로), 4.0.54(qaqmin09577로의 계정 이전, 듀얼 주 채널). 그 와중에 한 군데의 귀속 오류도 바로잡았다 — 듀얼 채널 업데이트는 사실 4.0.52의 기능이고, ai.51의 볼거리는 CI 수복이다. 편년사의 제1미덕은 정확함이지 원만함이 아니다.
삽화 : 3방향 대조표
마무리 즈음 한 토막의 삽화가 남을 만하다. 공병은 한때 로그의 판독치를 근거로 「로컬 PC 시계가 꼬박 10일 늦었다」고 단언했다. 사용자의 한마디 「이 PC의 시간은 정확 무오하다」가 되밀었다. 2차 검증은 즉시 3방향 대조로 격상됐다 — 로컬 date, GitHub 서버 HTTP Date 헤더, Codeberg 서버 HTTP Date 헤더. 세 판독치가 분초의 차이도 없고, PC 시계는 완전히 정상(더 타당한 설명은 그날 이른 시간에 NTP가 잠시 미보정이었다가 뒤에 스스로 보정된 것). 편년사가 시간에 대해 갖는 겸손은, 언제나 대조표에 고개를 숙이는 데 있다.
실제 좌표
- 워크플로 :
.github/workflows/build.yml,workflow_dispatch만 걸림(push/tag는 트리거 안 됨) - Run #1 초패 :
setup-android@v3가 폐기tools패키지에 의존 → 수동 라이선스 + AGP 자가 보충 + setup-java v5 - Run #2 패 : sweet-dependency가 세 소스를 전부 aliyun 미러로 덮음 → CI 쪽에서 명시적으로 공식 소스로 교체(작업 사본만, 저장소에는 미포함)
- Run #3 성공 : 약 10분. 산출물과 Mac 빌드의 증명서가 비트 단위로 일치(CN=TiebaLite / f7e02f10…a759), versionCode 400054
- 문서 : About/웹사이트/topics를 새 계정으로 교체. README 버전표에 ai.50→4.0.54 보완(듀얼 채널 업데이트 귀속을 4.0.52로 정정)
- 대조표 : PC/GitHub/Codeberg 3방향 HTTP Date 일치, PC 시계에 이상 없음
댓글