Compare commits
7 Commits
9906f2696d
...
e4e059d59c
| Author | SHA1 | Date | |
|---|---|---|---|
| e4e059d59c | |||
| 30365cc6b0 | |||
| eb4fc3b7f0 | |||
| 74e05cf08c | |||
| 880c75d7f9 | |||
| 64cd32495f | |||
| 157df05292 |
+62
-8
@@ -121,28 +121,82 @@ if ! ps -p $NEW_PID > /dev/null; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 5. Health Check Loop
|
||||
echo "=== Health Checking Port $TARGET_PORT ==="
|
||||
# 5. Enhanced Health Check Loop (다중 엔드포인트 검증)
|
||||
echo "=== Enhanced Health Checking Port $TARGET_PORT ==="
|
||||
ATTEMPTS=20
|
||||
SUCCESS=false
|
||||
API_PORT=$TARGET_PORT
|
||||
|
||||
for i in $(seq 1 $ATTEMPTS); do
|
||||
STATUS=$(curl -sf -o /dev/null -w '%{http_code}' "http://127.0.0.1:${TARGET_PORT}/healthz" 2>/dev/null || echo "000")
|
||||
if [ "$STATUS" = "200" ]; then
|
||||
echo "✓ Health check passed on port $TARGET_PORT (Attempt $i/$ATTEMPTS)"
|
||||
# 기본 헬스 체크
|
||||
HEALTH_STATUS=$(curl -sf -o /dev/null -w '%{http_code}' "http://127.0.0.1:${TARGET_PORT}/healthz" 2>/dev/null || echo "000")
|
||||
|
||||
# API 엔드포인트 검증 (GET /api/blog - 데이터베이스 연결 확인)
|
||||
API_STATUS=$(curl -sf -o /dev/null -w '%{http_code}' "http://127.0.0.1:${TARGET_PORT}/api/blog?limit=1" 2>/dev/null || echo "000")
|
||||
|
||||
if [ "$HEALTH_STATUS" = "200" ] && [ "$API_STATUS" = "200" ]; then
|
||||
echo "✓ All health checks passed on port $TARGET_PORT (Attempt $i/$ATTEMPTS)"
|
||||
echo " ✓ /healthz: $HEALTH_STATUS"
|
||||
echo " ✓ /api/blog: $API_STATUS"
|
||||
SUCCESS=true
|
||||
break
|
||||
fi
|
||||
echo " Waiting for health check... ($i/$ATTEMPTS, Status: $STATUS)"
|
||||
|
||||
if [ $i -eq 1 ] || [ $((i % 5)) -eq 0 ]; then
|
||||
echo " Waiting for health check... ($i/$ATTEMPTS)"
|
||||
echo " /healthz: $HEALTH_STATUS | /api/blog: $API_STATUS"
|
||||
fi
|
||||
|
||||
sleep 2
|
||||
done
|
||||
|
||||
if [ "$SUCCESS" = "false" ]; then
|
||||
echo "❌ Health check failed. Rolling back..."
|
||||
echo "❌ Enhanced health check failed on port $TARGET_PORT"
|
||||
echo " /healthz: $HEALTH_STATUS | /api/blog: $API_STATUS"
|
||||
echo ""
|
||||
echo "Log output (last 30 lines):"
|
||||
tail -30 "web_${TARGET_PORT}.log" 2>/dev/null || echo "No log file"
|
||||
echo ""
|
||||
echo "🔙 Rolling back..."
|
||||
kill -9 $NEW_PID || true
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 6. Switch Traffic
|
||||
# 6. Pre-Switch Validation (포트 전환 전 최종 검증)
|
||||
echo "=== Pre-Switch Validation ==="
|
||||
|
||||
# 6.1 로그 파일에서 FATAL/ERROR 확인
|
||||
echo " Checking logs for critical errors..."
|
||||
if grep -i "fatal\|unhandled exception" "web_${TARGET_PORT}.log" 2>/dev/null; then
|
||||
echo "❌ Critical errors found in application logs"
|
||||
echo "🔙 Rolling back..."
|
||||
kill -9 $NEW_PID || true
|
||||
exit 1
|
||||
fi
|
||||
echo " ✓ No critical errors in logs"
|
||||
|
||||
# 6.2 Nginx 설정 검증
|
||||
echo " Checking Nginx configuration..."
|
||||
if ! sudo nginx -t 2>&1 | grep -q "successful"; then
|
||||
echo "❌ Nginx configuration is invalid"
|
||||
echo "🔙 Rolling back..."
|
||||
kill -9 $NEW_PID || true
|
||||
exit 1
|
||||
fi
|
||||
echo " ✓ Nginx configuration is valid"
|
||||
|
||||
# 6.3 프로세스가 여전히 실행 중인지 확인
|
||||
if ! ps -p $NEW_PID > /dev/null; then
|
||||
echo "❌ New process has terminated unexpectedly"
|
||||
echo "🔙 Rolling back..."
|
||||
exit 1
|
||||
fi
|
||||
echo " ✓ New process is running (PID: $NEW_PID)"
|
||||
|
||||
echo "✓ All pre-switch validations passed"
|
||||
echo ""
|
||||
|
||||
# 7. Switch Traffic
|
||||
# Nginx never needs per-deploy changes: it always proxies to the persistent
|
||||
# TaxBaik.Proxy on 127.0.0.1:5001, which reads this same PORT_FILE and
|
||||
# forwards to whichever port is currently active. See CLAUDE.md section 6.
|
||||
|
||||
@@ -0,0 +1,217 @@
|
||||
# CLAUDE.md (핵심 요약)
|
||||
|
||||
## 📌 이 파일의 역할
|
||||
|
||||
**전체 구조 & 진행 상황만 기록**
|
||||
|
||||
상세한 지침은 별도 하네스 문서 참조:
|
||||
- 배포 정책 → `DEPLOYMENT_HARNESS.md`
|
||||
- Nginx 설정 → `NGINX_HARNESS.md`
|
||||
- 빌드 검증 → `BUILD_VALIDATION_HARNESS.md`
|
||||
- 프로젝트 정보 → `docs/INDEX.md`
|
||||
|
||||
---
|
||||
|
||||
## 🎯 프로젝트 상태 (2026-07-08)
|
||||
|
||||
### ✅ 완료 항목
|
||||
|
||||
**Phase 1-9, Phase 13: API-First 마이그레이션 완료**
|
||||
- ✅ WebAssembly 렌더 모드 적용
|
||||
- ✅ 16개 Blazor 페이지 마이그레이션
|
||||
- ✅ FastEndpoints 통일 (PhaseII 13)
|
||||
- ✅ JWT 토큰 개선 (Access/Refresh 분리)
|
||||
- ✅ E2E 테스트 20/20 통과
|
||||
|
||||
**Phase 8: 무상태 아키텍처**
|
||||
- ✅ Admin UI WebAssembly CSR 적용
|
||||
- ✅ 서버 Circuit 메모리 0
|
||||
- ✅ 동시 접속 무제한 확장성
|
||||
|
||||
---
|
||||
|
||||
## 🚀 현재 배포 정책
|
||||
|
||||
### Green-Blue 배포 (무중단)
|
||||
|
||||
**프로세스:**
|
||||
```
|
||||
빌드 & 테스트
|
||||
↓
|
||||
publish (Web + Proxy)
|
||||
↓
|
||||
deploy_gb.sh 실행
|
||||
↓
|
||||
사전 검증 (엄격)
|
||||
├─ 헬스 체크 (6단계)
|
||||
├─ API 엔드포인트
|
||||
└─ 로그 오류 확인
|
||||
↓
|
||||
포트 전환 (무중단)
|
||||
↓
|
||||
E2E 테스트
|
||||
↓
|
||||
배포 완료
|
||||
```
|
||||
|
||||
**검증 기준:**
|
||||
- 배포 버전 문제 → 자동 중단 + 롤백
|
||||
- 모든 검증 통과 → 배포 진행
|
||||
- 배포 실패 → 이전 버전 자동 복구
|
||||
|
||||
---
|
||||
|
||||
## 📍 Nginx 설정 (상대경로)
|
||||
|
||||
### 포트 매핑
|
||||
|
||||
```
|
||||
공개: https://www.taxbaik.com/
|
||||
↓ (Nginx)
|
||||
프록시: http://127.0.0.1:5001/
|
||||
↓ (프록시가 읽음)
|
||||
활성 포트: /home/kjh2064/taxbaik_port
|
||||
↓
|
||||
실제 앱: http://127.0.0.1:{5003|5004}
|
||||
```
|
||||
|
||||
### 필수 규칙
|
||||
|
||||
```
|
||||
✅ proxy_pass http://127.0.0.1:5001/; (슬래시 필수)
|
||||
✅ Nginx 설정은 절대 변경 안 함 (배포마다)
|
||||
✅ 포트 5001은 프록시 전용 (앱 직접 X)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔧 개발 핵심 지침
|
||||
|
||||
### 입력 검증 (클라이언트 + 서버)
|
||||
|
||||
**클라이언트:**
|
||||
- 실시간 마스킹 + 피드백
|
||||
- 유효성 검사 후 제출 차단
|
||||
|
||||
**서버:**
|
||||
- DTO DataAnnotations
|
||||
- 서비스 로직 검증
|
||||
- 명확한 에러 메시지
|
||||
|
||||
### 메시지 길이 표준
|
||||
|
||||
```
|
||||
최소: 10자 (너무 짧은 내용 방지)
|
||||
최대: 5000자 (DB + 성능)
|
||||
```
|
||||
|
||||
### 한국 전화번호
|
||||
|
||||
```
|
||||
정규식: ^(0(2|3[1-3]|4[1-4]|...|70|50[5-9])\d{7,8}|0\d{9,10})$
|
||||
고정전화: 02-123-4567 (4-3-4)
|
||||
휴대폰: 010-1234-5678 (3-4-4)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔄 배포 절차
|
||||
|
||||
### CI/CD 자동 배포
|
||||
|
||||
```bash
|
||||
1. git push master
|
||||
↓
|
||||
2. Gitea Actions trigger (.gitea/workflows/deploy.yml)
|
||||
↓
|
||||
3. Build → Test → Publish
|
||||
↓
|
||||
4. SSH: deploy_gb.sh 실행
|
||||
↓
|
||||
5. 사전 검증 (DEPLOYMENT_HARNESS.md 참고)
|
||||
↓
|
||||
6. 성공 → Telegram 알림
|
||||
실패 → 자동 롤백 + 알림
|
||||
```
|
||||
|
||||
### 배포 토큰
|
||||
|
||||
- **Gitea Token**: `GITEA_TOKEN_TAXBAIK` 환경변수
|
||||
- **Push 명령**: `git push http://gitea.taxbaik.com/kjh2064/taxbaik.git master`
|
||||
|
||||
---
|
||||
|
||||
## ⚙️ 환경 변수 (배포)
|
||||
|
||||
**필수 설정 (deploy_gb.sh):**
|
||||
```bash
|
||||
ASPNETCORE_ENVIRONMENT=Production
|
||||
ASPNETCORE_URLS=http://127.0.0.1:${TARGET_PORT}
|
||||
ConnectionStrings__Default=Host=localhost;Database=taxbaikdb;...
|
||||
ApiClient__BaseUrl=http://127.0.0.1:${TARGET_PORT}/api/
|
||||
```
|
||||
|
||||
**누락 시 배포 실패:** "Missing connection string" → 자동 롤백
|
||||
|
||||
---
|
||||
|
||||
## 📊 기술 스택
|
||||
|
||||
| 계층 | 기술 |
|
||||
|------|------|
|
||||
| **서버** | ASP.NET Core 10 |
|
||||
| **DB** | PostgreSQL 18 + Dapper |
|
||||
| **클라이언트** | Blazor WebAssembly |
|
||||
| **UI** | MudBlazor |
|
||||
| **배포** | Green-Blue (무중단) |
|
||||
| **Nginx** | 프록시 (정적 설정) |
|
||||
| **CI/CD** | Gitea Actions |
|
||||
|
||||
---
|
||||
|
||||
## 📝 중요 파일
|
||||
|
||||
| 파일 | 목적 |
|
||||
|------|------|
|
||||
| `deploy_gb.sh` | Green-Blue 배포 |
|
||||
| `scripts/validate-deploy.sh` | 사전 검증 |
|
||||
| `/etc/nginx/sites-available/taxbaik-domains.conf` | Nginx 설정 |
|
||||
| `.gitea/workflows/deploy.yml` | CI/CD 파이프라인 |
|
||||
| `docs/DEPLOYMENT_HARNESS.md` | 배포 정책 상세 |
|
||||
| `docs/NGINX_HARNESS.md` | Nginx 설정 상세 |
|
||||
|
||||
---
|
||||
|
||||
## 🆘 긴급 상황
|
||||
|
||||
### 배포 실패 (자동 롤백)
|
||||
|
||||
```bash
|
||||
# 현재 포트 확인
|
||||
cat /home/kjh2064/taxbaik_port
|
||||
|
||||
# 로그 확인
|
||||
tail -100 /home/kjh2064/deployments/taxbaik_*/web_*.log
|
||||
```
|
||||
|
||||
### 수동 롤백
|
||||
|
||||
```bash
|
||||
# 이전 포트로 복구
|
||||
echo "5003" > /home/kjh2064/taxbaik_port
|
||||
sudo systemctl reload nginx
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📞 참고 문서
|
||||
|
||||
- **배포**: `docs/DEPLOYMENT_HARNESS.md`
|
||||
- **Nginx**: `docs/NGINX_HARNESS.md`
|
||||
- **빌드**: `docs/BUILD_VALIDATION_HARNESS.md`
|
||||
- **프로젝트**: `docs/INDEX.md`
|
||||
- **엔지니어링**: `docs/ENGINEERING_HARNESS.md`
|
||||
|
||||
---
|
||||
|
||||
**최종 업데이트: 2026-07-08**
|
||||
@@ -0,0 +1,284 @@
|
||||
# 배포 하네스 (Deployment Harness)
|
||||
|
||||
## 📋 개요
|
||||
|
||||
Green-Blue 배포 정책에서 **배포 버전의 안정성을 보장**하는 사전 검증 프로세스.
|
||||
|
||||
---
|
||||
|
||||
## 🎯 핵심 원칙
|
||||
|
||||
```
|
||||
배포 버전에 문제 있음 → 배포 중단 + 자동 롤백
|
||||
모든 검증 통과 → 배포 진행 + 포트 전환
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔍 사전 검증 (Pre-Deployment Validation)
|
||||
|
||||
### 1단계: 빌드 아티팩트 검증
|
||||
|
||||
**파일 존재 확인:**
|
||||
```bash
|
||||
✓ appsettings.Production.json
|
||||
✓ TaxBaik.Web.dll
|
||||
✓ TaxBaik.Proxy.dll
|
||||
✓ wwwroot/version.json
|
||||
✓ css/admin.css
|
||||
```
|
||||
|
||||
**실행 권한:**
|
||||
```bash
|
||||
chmod +x deploy_gb.sh
|
||||
```
|
||||
|
||||
### 2단계: 배포 환경 검증
|
||||
|
||||
**필수 환경 변수:**
|
||||
```bash
|
||||
ASPNETCORE_ENVIRONMENT=Production
|
||||
ASPNETCORE_URLS=http://127.0.0.1:${TARGET_PORT}
|
||||
ConnectionStrings__Default=Host=localhost;Database=taxbaikdb;...
|
||||
ApiClient__BaseUrl=http://127.0.0.1:${TARGET_PORT}/api/
|
||||
```
|
||||
|
||||
**데이터베이스 연결:**
|
||||
```bash
|
||||
✓ 호스트 접근 가능 (localhost:5432)
|
||||
✓ 사용자 권한 확인 (taxbaik)
|
||||
✓ 데이터베이스 존재 (taxbaikdb)
|
||||
✓ 마이그레이션 최신 상태
|
||||
```
|
||||
|
||||
### 3단계: 포트 상태 확인
|
||||
|
||||
**포트 사용 여부:**
|
||||
```bash
|
||||
Active Port: 5003 또는 5004 (이미 점유)
|
||||
Target Port: 5004 또는 5003 (배포 대상, 비어있어야 함)
|
||||
|
||||
# 검증
|
||||
netstat -tlnp | grep :${TARGET_PORT}
|
||||
# 결과: (없음) → ✓ 통과
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📈 배포 중 헬스 체크
|
||||
|
||||
### 단계별 검증
|
||||
|
||||
**1. 프로세스 시작**
|
||||
```bash
|
||||
nohup dotnet TaxBaik.Web.dll &
|
||||
sleep 2
|
||||
ps -p ${NEW_PID} # 확인
|
||||
```
|
||||
|
||||
**2. 기본 헬스 체크** (최대 20회, 2초 간격)
|
||||
```bash
|
||||
curl http://127.0.0.1:${TARGET_PORT}/healthz
|
||||
# 예상: HTTP 200 + "Healthy"
|
||||
```
|
||||
|
||||
**3. API 엔드포인트 검증**
|
||||
```bash
|
||||
curl http://127.0.0.1:${TARGET_PORT}/api/blog?limit=1
|
||||
# 예상: HTTP 200
|
||||
# 의미: 데이터베이스 연결 확인
|
||||
```
|
||||
|
||||
**4. 로그 오류 확인**
|
||||
```bash
|
||||
grep -i "fatal\|unhandled exception" web_${TARGET_PORT}.log
|
||||
# 결과: (없음) → ✓ 통과
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🚀 포트 전환 (Traffic Switch)
|
||||
|
||||
### 전환 전 최종 검증
|
||||
|
||||
**Nginx 설정 검증:**
|
||||
```bash
|
||||
sudo nginx -t
|
||||
# 예상: "syntax is ok" + "test is successful"
|
||||
```
|
||||
|
||||
**프록시 상태:**
|
||||
```bash
|
||||
ss -tlnp | grep :5001
|
||||
# 예상: TaxBaik.Proxy.dll 실행 중
|
||||
```
|
||||
|
||||
**포트 파일 업데이트:**
|
||||
```bash
|
||||
echo "${TARGET_PORT}" > /home/kjh2064/taxbaik_port
|
||||
# 프록시가 이 파일을 읽어 트래픽 전환
|
||||
```
|
||||
|
||||
**Nginx 재로드:**
|
||||
```bash
|
||||
sudo systemctl reload nginx
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ❌ 배포 실패 기준
|
||||
|
||||
### 배포 자동 중단 조건
|
||||
|
||||
| 조건 | 행동 | 복구 |
|
||||
|------|------|------|
|
||||
| **프로세스 시작 실패** | 즉시 종료 | 롤백 |
|
||||
| **헬스 체크 20회 실패** | 즉시 종료 | 롤백 |
|
||||
| **API 엔드포인트 오류** | 즉시 종료 | 롤백 |
|
||||
| **로그에 FATAL 오류** | 즉시 종료 | 롤백 |
|
||||
| **Nginx 설정 무효** | 포트 전환 중단 | 이전 포트 유지 |
|
||||
| **포트 전환 후 서비스 불가** | 즉시 롤백 | 이전 포트로 복구 |
|
||||
|
||||
### 자동 롤백 프로세스
|
||||
|
||||
```bash
|
||||
# 1. 새 프로세스 종료
|
||||
kill -9 ${NEW_PID}
|
||||
|
||||
# 2. 이전 포트 파일 복구
|
||||
echo "${ACTIVE_PORT}" > /home/kjh2064/taxbaik_port
|
||||
|
||||
# 3. Nginx 재로드
|
||||
sudo systemctl reload nginx
|
||||
|
||||
# 4. 실패 알림
|
||||
send_telegram "❌ 배포 실패: ${REASON}"
|
||||
|
||||
# 5. 종료 코드 1
|
||||
exit 1
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📊 배포 검증 체크리스트
|
||||
|
||||
**배포 전:**
|
||||
- [ ] 빌드 성공 (0 오류)
|
||||
- [ ] 테스트 성공 (모든 테스트 통과)
|
||||
- [ ] 아티팩트 완전성 (파일 모두 존재)
|
||||
- [ ] 환경 변수 설정 (필수 변수 모두 정의)
|
||||
- [ ] DB 연결 가능
|
||||
|
||||
**배포 중:**
|
||||
- [ ] 프로세스 시작 성공
|
||||
- [ ] 헬스 체크 통과 (20회 이내)
|
||||
- [ ] API 엔드포인트 응답
|
||||
- [ ] 로그 오류 없음 (FATAL/Exception 없음)
|
||||
- [ ] Nginx 설정 유효
|
||||
|
||||
**포트 전환:**
|
||||
- [ ] 이전 Nginx 상태 정상
|
||||
- [ ] 프록시 정상 실행
|
||||
- [ ] 포트 파일 업데이트
|
||||
- [ ] Nginx 재로드 성공
|
||||
- [ ] 트래픽 정상 전환
|
||||
|
||||
**배포 후:**
|
||||
- [ ] 공개 URL 접근 가능 (HTTP 200)
|
||||
- [ ] 관리자 페이지 로드 (HTTP 200)
|
||||
- [ ] E2E 테스트 통과 (1/1 성공)
|
||||
- [ ] 배포 완료 알림 (Telegram)
|
||||
|
||||
---
|
||||
|
||||
## 🔄 롤백 절차
|
||||
|
||||
### 수동 롤백
|
||||
|
||||
**상황: 배포 후 심각한 오류 발생**
|
||||
|
||||
```bash
|
||||
# 1. 이전 포트 확인
|
||||
cat /home/kjh2064/taxbaik_port
|
||||
# 결과: 5004 (새 포트)
|
||||
|
||||
# 2. 이전 포트로 복구
|
||||
echo "5003" > /home/kjh2064/taxbaik_port
|
||||
|
||||
# 3. Nginx 재로드
|
||||
sudo systemctl reload nginx
|
||||
|
||||
# 4. 확인
|
||||
curl https://www.taxbaik.com/
|
||||
# 예상: 이전 버전의 응답
|
||||
```
|
||||
|
||||
### 배포 디렉토리 복구
|
||||
|
||||
**상황: 배포 파일 손상**
|
||||
|
||||
```bash
|
||||
# 1. 최근 배포 목록
|
||||
ls -ldt /home/kjh2064/deployments/taxbaik_*
|
||||
|
||||
# 2. 이전 배포 선택
|
||||
PREVIOUS_DEPLOY="/home/kjh2064/deployments/taxbaik_20260708_170000"
|
||||
|
||||
# 3. 수동 배포 (deploy_gb.sh 다시 실행)
|
||||
bash deploy_gb.sh $PREVIOUS_DEPLOY
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📞 배포 실패 진단
|
||||
|
||||
### 로그 확인 순서
|
||||
|
||||
**1단계: 앱 로그**
|
||||
```bash
|
||||
tail -100 /home/kjh2064/deployments/taxbaik_*/web_500*.log
|
||||
# 찾기: ERROR, FATAL, Exception, connection refused
|
||||
```
|
||||
|
||||
**2단계: 프록시 로그**
|
||||
```bash
|
||||
tail -100 /home/kjh2064/taxbaik_proxy.log
|
||||
# 찾기: 5001 포트 문제, 포트 파일 읽기 실패
|
||||
```
|
||||
|
||||
**3단계: Nginx 로그**
|
||||
```bash
|
||||
sudo tail -100 /var/log/nginx/error.log
|
||||
# 찾기: upstream connect failed, configuration error
|
||||
```
|
||||
|
||||
**4단계: 시스템 로그**
|
||||
```bash
|
||||
sudo journalctl -u nginx -n 50
|
||||
sudo dmesg | tail -20
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ✅ 성공 기준
|
||||
|
||||
```
|
||||
모든 헬스 체크 통과
|
||||
↓
|
||||
포트 전환 성공
|
||||
↓
|
||||
E2E 테스트 1/1 통과
|
||||
↓
|
||||
배포 완료 알림 발송
|
||||
↓
|
||||
✅ 배포 성공
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 참고
|
||||
|
||||
- **배포 스크립트**: `/deploy_gb.sh`
|
||||
- **검증 스크립트**: `/scripts/validate-deploy.sh`
|
||||
- **Nginx 설정**: `/docs/NGINX_HARNESS.md`
|
||||
- **CI/CD**: `.gitea/workflows/deploy.yml`
|
||||
@@ -0,0 +1,333 @@
|
||||
# Nginx 하네스 (Nginx Configuration Harness)
|
||||
|
||||
## 📋 개요
|
||||
|
||||
**상대경로 기반 Nginx 설정**으로 PathBase 제거 후 경로를 올바르게 매핑하는 하네스.
|
||||
|
||||
---
|
||||
|
||||
## 🎯 핵심 원칙
|
||||
|
||||
```
|
||||
공개 URL: https://www.taxbaik.com/
|
||||
백엔드: http://127.0.0.1:5001/
|
||||
|
||||
Nginx: 경로 변환 없음 (상대경로 그대로 전달)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📍 설정 파일 위치
|
||||
|
||||
```
|
||||
/etc/nginx/sites-available/taxbaik-domains.conf
|
||||
/etc/nginx/sites-enabled/taxbaik-domains.conf (심볼릭 링크)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔧 설정 구조
|
||||
|
||||
### 필수 server 블록
|
||||
|
||||
```nginx
|
||||
# 1. TaxBaik (HTTPS 443)
|
||||
server {
|
||||
server_name taxbaik.com www.taxbaik.com;
|
||||
listen 443 ssl;
|
||||
ssl_certificate /etc/letsencrypt/live/taxbaik.com/fullchain.pem;
|
||||
ssl_certificate_key /etc/letsencrypt/live/taxbaik.com/privkey.pem;
|
||||
|
||||
location / {
|
||||
proxy_pass http://127.0.0.1:5001/;
|
||||
# 헤더 설정 (필수)
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "Upgrade";
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
}
|
||||
}
|
||||
|
||||
# 2. HTTP → HTTPS 리다이렉트
|
||||
server {
|
||||
listen 80;
|
||||
server_name taxbaik.com www.taxbaik.com;
|
||||
return 301 https://$host$request_uri;
|
||||
}
|
||||
|
||||
# 3. Gitea (선택사항, SSL 없으면 HTTP만)
|
||||
server {
|
||||
server_name gitea.taxbaik.com;
|
||||
listen 80; # SSL 인증서 없으면 HTTP만
|
||||
|
||||
location / {
|
||||
proxy_pass http://127.0.0.1:3000;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📊 포트 매핑 규칙
|
||||
|
||||
| 도메인 | 포트 | 프로토콜 | 백엔드 포트 | 상태 |
|
||||
|--------|------|---------|-----------|------|
|
||||
| **taxbaik.com** | 443 (HTTPS) | TLS 1.3 | 5001 (프록시) | ✅ 활성 |
|
||||
| **taxbaik.com** | 80 (HTTP) | - | - | 301 리다이렉트 |
|
||||
| **www.taxbaik.com** | 443 (HTTPS) | TLS 1.3 | 5001 (프록시) | ✅ 활성 |
|
||||
| **www.taxbaik.com** | 80 (HTTP) | - | - | 301 리다이렉트 |
|
||||
| **gitea.taxbaik.com** | 80 (HTTP) | HTTP | 3000 | ✅ 활성 |
|
||||
|
||||
---
|
||||
|
||||
## 🚀 프록시 설정 (Proxy Configuration)
|
||||
|
||||
### proxy_pass 규칙
|
||||
|
||||
**규칙 1: 상대경로 유지**
|
||||
```nginx
|
||||
# ✅ 올바름 (슬래시 있음)
|
||||
proxy_pass http://127.0.0.1:5001/;
|
||||
# 결과: /taxbaik/admin/login → http://127.0.0.1:5001/taxbaik/admin/login
|
||||
```
|
||||
|
||||
**규칙 2: 경로 변환 (필요시만)**
|
||||
```nginx
|
||||
# ✅ 특수 경우: /v1/ → /api/v1/
|
||||
location /v1/ {
|
||||
proxy_pass http://127.0.0.1:5001/api/v1/;
|
||||
rewrite ^/v1/(.*)$ /api/v1/$1 break; # 이중 전달 방지
|
||||
}
|
||||
```
|
||||
|
||||
**규칙 3: 주의사항**
|
||||
```nginx
|
||||
# ❌ 틀림 (슬래시 없음, 경로 이중 전달)
|
||||
proxy_pass http://127.0.0.1:5001;
|
||||
# 결과: /admin → http://127.0.0.1:5001 + /admin → 이중 슬래시 가능
|
||||
|
||||
# ❌ 틀림 (rewrite 없이 proxy_pass만)
|
||||
location /api {
|
||||
proxy_pass http://127.0.0.1:5001/api/;
|
||||
}
|
||||
# 결과: /api/users → http://127.0.0.1:5001/api//users (이중 슬래시)
|
||||
```
|
||||
|
||||
### 필수 헤더 설정
|
||||
|
||||
```nginx
|
||||
location / {
|
||||
# 1. HTTP 버전 업그레이드 (HTTP/1.1로 유지)
|
||||
proxy_http_version 1.1;
|
||||
|
||||
# 2. WebSocket 지원 (Blazor SignalR)
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "Upgrade";
|
||||
|
||||
# 3. 호스트 정보
|
||||
proxy_set_header Host $host;
|
||||
|
||||
# 4. 클라이언트 IP
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
|
||||
# 5. 프로토콜 (HTTP vs HTTPS)
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
|
||||
# 6. 캐시 바이패스
|
||||
proxy_cache_bypass $http_upgrade;
|
||||
|
||||
# 7. 타임아웃 (길게)
|
||||
proxy_read_timeout 120s;
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔒 SSL/TLS 설정
|
||||
|
||||
### Let's Encrypt 인증서
|
||||
|
||||
```nginx
|
||||
server {
|
||||
listen 443 ssl;
|
||||
ssl_certificate /etc/letsencrypt/live/taxbaik.com/fullchain.pem;
|
||||
ssl_certificate_key /etc/letsencrypt/live/taxbaik.com/privkey.pem;
|
||||
include /etc/letsencrypt/options-ssl-nginx.conf;
|
||||
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
|
||||
}
|
||||
```
|
||||
|
||||
### 보안 헤더
|
||||
|
||||
```nginx
|
||||
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
|
||||
add_header X-Content-Type-Options "nosniff" always;
|
||||
add_header X-Frame-Options "SAMEORIGIN" always;
|
||||
add_header X-XSS-Protection "1; mode=block" always;
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ⚡ Green-Blue 배포와 Nginx
|
||||
|
||||
### 포트 전환 원리
|
||||
|
||||
```
|
||||
Nginx (고정)
|
||||
↓
|
||||
/etc/nginx/sites-available/taxbaik-domains.conf
|
||||
↓
|
||||
proxy_pass http://127.0.0.1:5001/; (절대 변경하지 말 것!)
|
||||
↓
|
||||
TaxBaik.Proxy (포트 5001)
|
||||
↓
|
||||
/home/kjh2064/taxbaik_port 파일 읽기
|
||||
↓
|
||||
Active Port: 5003 또는 5004
|
||||
↓
|
||||
실제 앱 (http://127.0.0.1:5003 또는 5004)
|
||||
```
|
||||
|
||||
### 중요: Nginx는 수정하지 않음
|
||||
|
||||
```bash
|
||||
# ❌ 절대 하지 말 것: Nginx 설정에 5003/5004 하드코딩
|
||||
# 이렇게 하면 포트 전환이 작동하지 않음
|
||||
proxy_pass http://127.0.0.1:5003/; # 위험!
|
||||
|
||||
# ✅ 올바름: 프록시 포트 고정
|
||||
proxy_pass http://127.0.0.1:5001/; # 프록시가 실제 포트로 포워딩
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔍 검증 체크리스트
|
||||
|
||||
### 설정 적용 전
|
||||
|
||||
- [ ] 백업 생성: `sudo cp /etc/nginx/sites-available/taxbaik-domains.conf ...backup`
|
||||
- [ ] 편집기로 수정: `sudo nano /etc/nginx/sites-available/taxbaik-domains.conf`
|
||||
- [ ] 문법 검증: `sudo nginx -t`
|
||||
- 예상: "syntax is ok" + "test is successful"
|
||||
|
||||
### 설정 적용 후
|
||||
|
||||
- [ ] Nginx 재로드: `sudo systemctl reload nginx`
|
||||
- [ ] 상태 확인: `sudo systemctl status nginx`
|
||||
- 예상: "active (running)"
|
||||
|
||||
### 실제 동작 확인
|
||||
|
||||
```bash
|
||||
# 1. HTTP → HTTPS 리다이렉트 확인
|
||||
curl -I http://www.taxbaik.com/
|
||||
# 예상: HTTP 301 + Location: https://
|
||||
|
||||
# 2. HTTPS 접근 확인
|
||||
curl -I https://www.taxbaik.com/
|
||||
# 예상: HTTP/2 200
|
||||
|
||||
# 3. 로컬호스트 경유 확인
|
||||
curl -H "Host: www.taxbaik.com" http://127.0.0.1/
|
||||
# 예상: HTML 응답 (프록시 정상)
|
||||
|
||||
# 4. API 엔드포인트 확인
|
||||
curl https://www.taxbaik.com/api/blog?limit=1
|
||||
# 예상: JSON 응답
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📋 설정 변경 이력
|
||||
|
||||
| 날짜 | 변경 사항 | 이유 |
|
||||
|------|---------|------|
|
||||
| 2026-07-08 | PathBase 제거 후 상대경로로 통일 | 경로 정규화 |
|
||||
| 2026-07-08 | proxy_pass 슬래시 명시 | 이중 슬래시 방지 |
|
||||
| 2026-07-08 | 프록시 포트 5001 고정 | Green-Blue 배포 대응 |
|
||||
|
||||
---
|
||||
|
||||
## 🆘 문제 해결
|
||||
|
||||
### 문제 1: 404 응답
|
||||
|
||||
**증상:**
|
||||
```
|
||||
curl https://www.taxbaik.com/
|
||||
# 결과: HTTP 404
|
||||
```
|
||||
|
||||
**진단:**
|
||||
```bash
|
||||
# 1. Nginx가 올바른 백엔드 포트로 프록싱하는지 확인
|
||||
curl -H "Host: www.taxbaik.com" http://127.0.0.1/
|
||||
# 같은 404? → 백엔드 문제
|
||||
# 다른 응답? → Nginx 설정 문제
|
||||
|
||||
# 2. 포트 5001 확인
|
||||
ss -tlnp | grep :5001
|
||||
# 없음? → TaxBaik.Proxy 실행 안 함
|
||||
|
||||
# 3. 활성 포트 확인
|
||||
cat /home/kjh2064/taxbaik_port
|
||||
# 예상: 5003 또는 5004
|
||||
```
|
||||
|
||||
### 문제 2: 502 Bad Gateway
|
||||
|
||||
**증상:**
|
||||
```
|
||||
Nginx가 백엔드에 연결 불가
|
||||
```
|
||||
|
||||
**진단:**
|
||||
```bash
|
||||
# 1. Nginx 로그 확인
|
||||
sudo tail -50 /var/log/nginx/error.log
|
||||
# 찾기: "upstream connect failed"
|
||||
|
||||
# 2. 프록시 로그 확인
|
||||
tail -50 /home/kjh2064/taxbaik_proxy.log
|
||||
|
||||
# 3. 앱 포트 확인
|
||||
ss -tlnp | grep :{5003,5004}
|
||||
# 없음? → 앱 실행 안 함
|
||||
```
|
||||
|
||||
### 문제 3: SSL 인증서 오류
|
||||
|
||||
**증상:**
|
||||
```
|
||||
NET::ERR_CERT_AUTHORITY_INVALID
|
||||
```
|
||||
|
||||
**진단:**
|
||||
```bash
|
||||
# 1. 인증서 경로 확인
|
||||
sudo ls -la /etc/letsencrypt/live/taxbaik.com/
|
||||
# 파일 존재? → OK
|
||||
# 없음? → certbot으로 새 인증서 생성
|
||||
|
||||
# 2. 인증서 유효 기간
|
||||
sudo openssl x509 -in /etc/letsencrypt/live/taxbaik.com/fullchain.pem -noout -dates
|
||||
|
||||
# 3. Nginx 설정에서 경로 확인
|
||||
sudo grep "ssl_certificate" /etc/nginx/sites-available/taxbaik-domains.conf
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📞 참고
|
||||
|
||||
- **배포 하네스**: `/docs/DEPLOYMENT_HARNESS.md`
|
||||
- **빌드 검증**: `/docs/BUILD_VALIDATION_HARNESS.md`
|
||||
- **배포 스크립트**: `/deploy_gb.sh`
|
||||
+27
-26
@@ -35,66 +35,66 @@
|
||||
<!--!--><div class="admin-drawer-footer"><a class="admin-footer-item" href="/" target="_blank" rel="noopener">공개 사이트</a>
|
||||
<a class="admin-footer-item" href="./logout">로그아웃</a></div></aside><main class="admin-main"><div class="admin-content"><!--!--><!--!--><!--!--><!--!-->
|
||||
|
||||
<!--!--><section class="admin-page-hero"><div><!--!--><span class="mud-typography mud-typography-caption admin-eyebrow">Home</span><!--!--><h4 class="mud-typography mud-typography-h4 admin-page-title">대시보드</h4><!--!--><p class="mud-typography mud-typography-body2 admin-page-subtitle">핵심 운영 상태와 최근 오류를 한 번에 확인합니다.</p></div></section><!--!-->
|
||||
<!--!--><section class="admin-page-hero"><div><!--!--><!--!--><span class="mud-typography mud-typography-caption admin-eyebrow">Home</span><!--!--><!--!--><h4 class="mud-typography mud-typography-h4 admin-page-title">대시보드</h4><!--!--><!--!--><p class="mud-typography mud-typography-body2 admin-page-subtitle">핵심 운영 상태와 최근 오류를 한 번에 확인합니다.</p></div></section><!--!-->
|
||||
|
||||
<!--!--><!--!--><div class="mud-grid mud-grid-spacing-xs-3 justify-start mt-4"><!--!--><div class="mud-grid-item mud-grid-item-xs-12 mud-grid-item-sm-6 mud-grid-item-md-4"><!--!--><div class="mud-paper mud-elevation-0 pa-4 dashboard-card" style="border: 1px solid var(--border-color); min-height: 200px; display: flex; flex-direction: column;;"><!--!--><svg class="mud-icon-root mud-svg-icon mud-error-text mud-icon-size-large mb-3" focusable="false" viewBox="0 0 24 24" aria-hidden="true"><!--!--><path d="M0 0h24v24H0z" fill="none"></path><path d="M20 8h-2.81c-.45-.78-1.07-1.45-1.82-1.96L17 4.41 15.59 3l-2.17 2.17C12.96 5.06 12.49 5 12 5c-.49 0-.96.06-1.41.17L8.41 3 7 4.41l1.62 1.63C7.88 6.55 7.26 7.22 6.81 8H4v2h2.09c-.05.33-.09.66-.09 1v1H4v2h2v1c0 .34.04.67.09 1H4v2h2.81c1.04 1.79 2.97 3 5.19 3s4.15-1.21 5.19-3H20v-2h-2.09c.05-.33.09-.66.09-1v-1h2v-2h-2v-1c0-.34-.04-.67-.09-1H20V8zm-6 8h-4v-2h4v2zm0-4h-4v-2h4v2z"></path></svg><!--!-->
|
||||
<!--!--><h6 class="mud-typography mud-typography-h6 font-weight-bold mb-2"><!--!-->오류 진단</h6><!--!-->
|
||||
<!--!--><p class="mud-typography mud-typography-body2 mb-4 flex-grow-1"><!--!-->
|
||||
<!--!--><!--!--><div class="mud-grid mud-grid-spacing-xs-3 justify-start mt-4"><!--!--><div class="mud-grid-item mud-grid-item-xs-12 mud-grid-item-sm-6 mud-grid-item-md-4"><!--!--><div class="mud-paper mud-elevation-0 pa-4 dashboard-card" style="border: 1px solid var(--border-color); min-height: 200px; display: flex; flex-direction: column;;"><!--!--><svg class="mud-icon-root mud-svg-icon mud-error-text mud-icon-size-large mb-3" focusable="false" viewBox="0 0 24 24" aria-hidden="true" role="img"><!--!--><path d="M0 0h24v24H0z" fill="none"></path><path d="M20 8h-2.81c-.45-.78-1.07-1.45-1.82-1.96L17 4.41 15.59 3l-2.17 2.17C12.96 5.06 12.49 5 12 5c-.49 0-.96.06-1.41.17L8.41 3 7 4.41l1.62 1.63C7.88 6.55 7.26 7.22 6.81 8H4v2h2.09c-.05.33-.09.66-.09 1v1H4v2h2v1c0 .34.04.67.09 1H4v2h2.81c1.04 1.79 2.97 3 5.19 3s4.15-1.21 5.19-3H20v-2h-2.09c.05-.33.09-.66.09-1v-1h2v-2h-2v-1c0-.34-.04-.67-.09-1H20V8zm-6 8h-4v-2h4v2zm0-4h-4v-2h4v2z"></path></svg><!--!-->
|
||||
<!--!--><!--!--><h6 class="mud-typography mud-typography-h6 font-weight-bold mb-2"><!--!-->오류 진단</h6><!--!-->
|
||||
<!--!--><!--!--><p class="mud-typography mud-typography-body2 mb-4 flex-grow-1"><!--!-->
|
||||
브라우저 오류와 JS interop 실패는 클라이언트 로그에서 바로 추적합니다.
|
||||
</p><!--!-->
|
||||
<!--!--><a href="./client-logs" class="mud-typography mud-link mud-primary-text mud-link-underline-hover mud-typography-body1 font-weight-bold"><!--!-->
|
||||
<!--!--><a href="./client-logs" class="mud-typography mud-link mud-primary-text mud-link-underline-hover font-weight-bold"><!--!-->
|
||||
클라이언트 로그 보기 →
|
||||
</a></div></div><!--!-->
|
||||
|
||||
|
||||
<!--!--><div class="mud-grid-item mud-grid-item-xs-12 mud-grid-item-sm-6 mud-grid-item-md-4"><!--!--><div class="mud-paper mud-elevation-0 pa-4 dashboard-card" style="border: 1px solid var(--border-color); min-height: 200px; display: flex; flex-direction: column;;"><!--!--><svg class="mud-icon-root mud-svg-icon mud-info-text mud-icon-size-large mb-3" focusable="false" viewBox="0 0 24 24" aria-hidden="true"><!--!--><path d="M0 0h24v24H0z" fill="none"></path><path d="M3 13h8V3H3v10zm0 8h8v-6H3v6zm10 0h8V11h-8v10zm0-18v6h8V3h-8z"></path></svg><!--!-->
|
||||
<!--!--><h6 class="mud-typography mud-typography-h6 font-weight-bold mb-2"><!--!-->운영 메뉴</h6><!--!-->
|
||||
<!--!--><p class="mud-typography mud-typography-body2 mb-4 flex-grow-1"><!--!-->
|
||||
<!--!--><div class="mud-grid-item mud-grid-item-xs-12 mud-grid-item-sm-6 mud-grid-item-md-4"><!--!--><div class="mud-paper mud-elevation-0 pa-4 dashboard-card" style="border: 1px solid var(--border-color); min-height: 200px; display: flex; flex-direction: column;;"><!--!--><svg class="mud-icon-root mud-svg-icon mud-info-text mud-icon-size-large mb-3" focusable="false" viewBox="0 0 24 24" aria-hidden="true" role="img"><!--!--><path d="M0 0h24v24H0z" fill="none"></path><path d="M3 13h8V3H3v10zm0 8h8v-6H3v6zm10 0h8V11h-8v10zm0-18v6h8V3h-8z"></path></svg><!--!-->
|
||||
<!--!--><!--!--><h6 class="mud-typography mud-typography-h6 font-weight-bold mb-2"><!--!-->운영 메뉴</h6><!--!-->
|
||||
<!--!--><!--!--><p class="mud-typography mud-typography-body2 mb-4 flex-grow-1"><!--!-->
|
||||
CRM, 홈페이지, 문의 관리 화면을 표준 템플릿으로 확장합니다.
|
||||
</p><!--!-->
|
||||
<!--!--><a href="./inquiries" class="mud-typography mud-link mud-primary-text mud-link-underline-hover mud-typography-body1 font-weight-bold"><!--!-->
|
||||
<!--!--><a href="./inquiries" class="mud-typography mud-link mud-primary-text mud-link-underline-hover font-weight-bold"><!--!-->
|
||||
문의 관리로 이동 →
|
||||
</a></div></div><!--!-->
|
||||
|
||||
|
||||
<!--!--><div class="mud-grid-item mud-grid-item-xs-12 mud-grid-item-sm-6 mud-grid-item-md-4"><!--!--><div class="mud-paper mud-elevation-0 pa-4 dashboard-card" style="border: 1px solid var(--border-color); min-height: 200px; display: flex; flex-direction: column;;"><!--!--><svg class="mud-icon-root mud-svg-icon mud-success-text mud-icon-size-large mb-3" focusable="false" viewBox="0 0 24 24" aria-hidden="true"><!--!--><path d="M0 0h24v24H0z" fill="none"></path><path d="M19.35 10.04C18.67 6.59 15.64 4 12 4 9.11 4 6.6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96zM14 13v4h-4v-4H7l5-5 5 5h-3z"></path></svg><!--!-->
|
||||
<!--!--><h6 class="mud-typography mud-typography-h6 font-weight-bold mb-2"><!--!-->배포 확인</h6><!--!-->
|
||||
<!--!--><p class="mud-typography mud-typography-body2 mb-4 flex-grow-1"><!--!-->
|
||||
<!--!--><div class="mud-grid-item mud-grid-item-xs-12 mud-grid-item-sm-6 mud-grid-item-md-4"><!--!--><div class="mud-paper mud-elevation-0 pa-4 dashboard-card" style="border: 1px solid var(--border-color); min-height: 200px; display: flex; flex-direction: column;;"><!--!--><svg class="mud-icon-root mud-svg-icon mud-success-text mud-icon-size-large mb-3" focusable="false" viewBox="0 0 24 24" aria-hidden="true" role="img"><!--!--><path d="M0 0h24v24H0z" fill="none"></path><path d="M19.35 10.04C18.67 6.59 15.64 4 12 4 9.11 4 6.6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96zM14 13v4h-4v-4H7l5-5 5 5h-3z"></path></svg><!--!-->
|
||||
<!--!--><!--!--><h6 class="mud-typography mud-typography-h6 font-weight-bold mb-2"><!--!-->배포 확인</h6><!--!-->
|
||||
<!--!--><!--!--><p class="mud-typography mud-typography-body2 mb-4 flex-grow-1"><!--!-->
|
||||
하위 경로 배포와 렌더러 분리를 유지하도록 라우트 린트를 적용합니다.
|
||||
</p><!--!-->
|
||||
<!--!--><a href="./client-logs" class="mud-typography mud-link mud-primary-text mud-link-underline-hover mud-typography-body1 font-weight-bold"><!--!-->
|
||||
<!--!--><a href="./client-logs" class="mud-typography mud-link mud-primary-text mud-link-underline-hover font-weight-bold"><!--!-->
|
||||
최근 에러 확인 →
|
||||
</a></div></div><!--!-->
|
||||
|
||||
|
||||
<!--!--><div class="mud-grid-item mud-grid-item-xs-12 mud-grid-item-sm-6 mud-grid-item-md-4"><!--!--><div class="mud-paper mud-elevation-0 pa-4 dashboard-card" style="border: 1px solid var(--border-color); min-height: 200px; display: flex; flex-direction: column;;"><!--!--><svg class="mud-icon-root mud-svg-icon mud-warning-text mud-icon-size-large mb-3" focusable="false" viewBox="0 0 24 24" aria-hidden="true"><!--!--><path d="M0 0h24v24H0z" fill="none"></path><path d="M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"></path></svg><!--!-->
|
||||
<!--!--><h6 class="mud-typography mud-typography-h6 font-weight-bold mb-2"><!--!-->원인 규명</h6><!--!-->
|
||||
<!--!--><p class="mud-typography mud-typography-body2 mb-4 flex-grow-1"><!--!-->
|
||||
<!--!--><div class="mud-grid-item mud-grid-item-xs-12 mud-grid-item-sm-6 mud-grid-item-md-4"><!--!--><div class="mud-paper mud-elevation-0 pa-4 dashboard-card" style="border: 1px solid var(--border-color); min-height: 200px; display: flex; flex-direction: column;;"><!--!--><svg class="mud-icon-root mud-svg-icon mud-warning-text mud-icon-size-large mb-3" focusable="false" viewBox="0 0 24 24" aria-hidden="true" role="img"><!--!--><path d="M0 0h24v24H0z" fill="none"></path><path d="M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"></path></svg><!--!-->
|
||||
<!--!--><!--!--><h6 class="mud-typography mud-typography-h6 font-weight-bold mb-2"><!--!-->원인 규명</h6><!--!-->
|
||||
<!--!--><!--!--><p class="mud-typography mud-typography-body2 mb-4 flex-grow-1"><!--!-->
|
||||
중복되는 오류는 최근 로그 요약에서 source와 route 기준으로 묶어 봅니다.
|
||||
</p><!--!-->
|
||||
<!--!--><a href="./client-logs?q=invoke" class="mud-typography mud-link mud-primary-text mud-link-underline-hover mud-typography-body1 font-weight-bold"><!--!-->
|
||||
<!--!--><a href="./client-logs?q=invoke" class="mud-typography mud-link mud-primary-text mud-link-underline-hover font-weight-bold"><!--!-->
|
||||
오류 검색 →
|
||||
</a></div></div><!--!-->
|
||||
|
||||
|
||||
<!--!--><div class="mud-grid-item mud-grid-item-xs-12 mud-grid-item-sm-6 mud-grid-item-md-4"><!--!--><div class="mud-paper mud-elevation-0 pa-4 dashboard-card" style="border: 1px solid var(--border-color); min-height: 200px; display: flex; flex-direction: column;;"><!--!--><svg class="mud-icon-root mud-svg-icon mud-secondary-text mud-icon-size-large mb-3" focusable="false" viewBox="0 0 24 24" aria-hidden="true"><!--!--><path d="M0 0h24v24H0z" fill="none"></path><path d="M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z"></path></svg><!--!-->
|
||||
<!--!--><h6 class="mud-typography mud-typography-h6 font-weight-bold mb-2"><!--!-->관측성</h6><!--!-->
|
||||
<!--!--><p class="mud-typography mud-typography-body2 mb-4 flex-grow-1"><!--!-->
|
||||
<!--!--><div class="mud-grid-item mud-grid-item-xs-12 mud-grid-item-sm-6 mud-grid-item-md-4"><!--!--><div class="mud-paper mud-elevation-0 pa-4 dashboard-card" style="border: 1px solid var(--border-color); min-height: 200px; display: flex; flex-direction: column;;"><!--!--><svg class="mud-icon-root mud-svg-icon mud-secondary-text mud-icon-size-large mb-3" focusable="false" viewBox="0 0 24 24" aria-hidden="true" role="img"><!--!--><path d="M0 0h24v24H0z" fill="none"></path><path d="M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z"></path></svg><!--!-->
|
||||
<!--!--><!--!--><h6 class="mud-typography mud-typography-h6 font-weight-bold mb-2"><!--!-->관측성</h6><!--!-->
|
||||
<!--!--><!--!--><p class="mud-typography mud-typography-body2 mb-4 flex-grow-1"><!--!-->
|
||||
Top sources / routes를 확인해서 어떤 모듈이 재발하는지 빠르게 좁힙니다.
|
||||
</p><!--!-->
|
||||
<!--!--><a href="./client-logs" class="mud-typography mud-link mud-primary-text mud-link-underline-hover mud-typography-body1 font-weight-bold"><!--!-->
|
||||
<!--!--><a href="./client-logs" class="mud-typography mud-link mud-primary-text mud-link-underline-hover font-weight-bold"><!--!-->
|
||||
요약 리포트 보기 →
|
||||
</a></div></div><!--!-->
|
||||
|
||||
|
||||
<!--!--><div class="mud-grid-item mud-grid-item-xs-12"><!--!--><div class="mud-paper mud-elevation-0 pa-4 admin-surface" style="border: 1px solid var(--border-color);;"><!--!--><h6 class="mud-typography mud-typography-h6 font-weight-bold mb-3"><!--!-->📊 빠른 통계</h6><!--!-->
|
||||
<!--!--><!--!--><div class="mud-grid mud-grid-spacing-xs-2 justify-start"><!--!--><div class="mud-grid-item mud-grid-item-xs-12 mud-grid-item-sm-6 mud-grid-item-md-3"><!--!--><p class="mud-typography mud-typography-body2"><!--!--><strong>전체 문의:</strong> API에서 조회
|
||||
<!--!--><div class="mud-grid-item mud-grid-item-xs-12"><!--!--><div class="mud-paper mud-elevation-0 pa-4 admin-surface" style="border: 1px solid var(--border-color);;"><!--!--><!--!--><h6 class="mud-typography mud-typography-h6 font-weight-bold mb-3"><!--!-->📊 빠른 통계</h6><!--!-->
|
||||
<!--!--><!--!--><div class="mud-grid mud-grid-spacing-xs-2 justify-start"><!--!--><div class="mud-grid-item mud-grid-item-xs-12 mud-grid-item-sm-6 mud-grid-item-md-3"><!--!--><!--!--><p class="mud-typography mud-typography-body2"><!--!--><strong>전체 문의:</strong> API에서 조회
|
||||
</p></div><!--!-->
|
||||
<!--!--><div class="mud-grid-item mud-grid-item-xs-12 mud-grid-item-sm-6 mud-grid-item-md-3"><!--!--><p class="mud-typography mud-typography-body2"><!--!--><strong>오류 건수:</strong> 클라이언트 로그 참조
|
||||
<!--!--><div class="mud-grid-item mud-grid-item-xs-12 mud-grid-item-sm-6 mud-grid-item-md-3"><!--!--><!--!--><p class="mud-typography mud-typography-body2"><!--!--><strong>오류 건수:</strong> 클라이언트 로그 참조
|
||||
</p></div><!--!-->
|
||||
<!--!--><div class="mud-grid-item mud-grid-item-xs-12 mud-grid-item-sm-6 mud-grid-item-md-3"><!--!--><p class="mud-typography mud-typography-body2"><!--!--><strong>배포 상태:</strong> 최신 버전 실행 중
|
||||
<!--!--><div class="mud-grid-item mud-grid-item-xs-12 mud-grid-item-sm-6 mud-grid-item-md-3"><!--!--><!--!--><p class="mud-typography mud-typography-body2"><!--!--><strong>배포 상태:</strong> 최신 버전 실행 중
|
||||
</p></div><!--!-->
|
||||
<!--!--><div class="mud-grid-item mud-grid-item-xs-12 mud-grid-item-sm-6 mud-grid-item-md-3"><!--!--><p class="mud-typography mud-typography-body2"><!--!--><strong>로그 범위:</strong> 최근 7일
|
||||
<!--!--><div class="mud-grid-item mud-grid-item-xs-12 mud-grid-item-sm-6 mud-grid-item-md-3"><!--!--><!--!--><p class="mud-typography mud-typography-body2"><!--!--><strong>로그 범위:</strong> 최근 7일
|
||||
</p></div></div></div></div></div><!--!-->
|
||||
|
||||
<!--!--><style>
|
||||
@@ -162,6 +162,7 @@
|
||||
}
|
||||
initSession();
|
||||
</script>
|
||||
<script defer="" src="https://static.cloudflareinsights.com/beacon.min.js/v4513226cdae34746b4dedf0b4dfa099e1781791509496" integrity="sha512-ZE9pZaUXND66v380QUtch/5sE9tPFh2zg45pR2PB0CVkCtOREv2AJKkSidISWkysEuQ0EH8faUU5du78bx87UQ==" data-cf-beacon="{"version":"2024.11.0","token":"4d6a08e3c884486d935929b0e27c27b0","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}" crossorigin="anonymous"></script>
|
||||
|
||||
|
||||
</body></html>
|
||||
BIN
Binary file not shown.
|
Before Width: | Height: | Size: 122 KiB After Width: | Height: | Size: 31 KiB |
+1
-1
@@ -1 +1 @@
|
||||
http://localhost:5001/admin/dashboard
|
||||
https://www.taxbaik.com/admin/dashboard
|
||||
@@ -184,3 +184,7 @@
|
||||
{"testFile":"C:\\Temp\\taxbaik\\tests\\e2e\\admin-smoke.spec.ts","title":"@smoke logs in and lands on dashboard without circuit errors","label":"admin-dashboard-smoke","url":"http://localhost:5001/admin/dashboard","screenshotPath":"C:\\Temp\\taxbaik\\evidence\\C_Temp_taxbaik_tests_e2e_admin-smoke.spec.ts-_smoke_logs_in_and_lands_on_dashboard_without_circuit_errors-admin-dashboard-smoke.png","domPath":"C:\\Temp\\taxbaik\\evidence\\C_Temp_taxbaik_tests_e2e_admin-smoke.spec.ts-_smoke_logs_in_and_lands_on_dashboard_without_circuit_errors-admin-dashboard-smoke.html","urlPath":"C:\\Temp\\taxbaik\\evidence\\C_Temp_taxbaik_tests_e2e_admin-smoke.spec.ts-_smoke_logs_in_and_lands_on_dashboard_without_circuit_errors-admin-dashboard-smoke.url.txt","timestamp":"2026-07-08T07:24:44.062Z"}
|
||||
{"testFile":"C:\\Temp\\taxbaik\\tests\\e2e\\admin-smoke.spec.ts","title":"@smoke logs in and lands on dashboard without circuit errors","label":"admin-dashboard-smoke","url":"http://localhost:5001/admin/dashboard","screenshotPath":"C:\\Temp\\taxbaik\\evidence\\C_Temp_taxbaik_tests_e2e_admin-smoke.spec.ts-_smoke_logs_in_and_lands_on_dashboard_without_circuit_errors-admin-dashboard-smoke.png","domPath":"C:\\Temp\\taxbaik\\evidence\\C_Temp_taxbaik_tests_e2e_admin-smoke.spec.ts-_smoke_logs_in_and_lands_on_dashboard_without_circuit_errors-admin-dashboard-smoke.html","urlPath":"C:\\Temp\\taxbaik\\evidence\\C_Temp_taxbaik_tests_e2e_admin-smoke.spec.ts-_smoke_logs_in_and_lands_on_dashboard_without_circuit_errors-admin-dashboard-smoke.url.txt","timestamp":"2026-07-08T07:24:44.694Z"}
|
||||
{"testFile":"C:\\Temp\\taxbaik\\tests\\e2e\\admin-smoke.spec.ts","title":"@smoke logs in and lands on dashboard without circuit errors","label":"admin-dashboard-smoke","url":"http://localhost:5001/admin/dashboard","screenshotPath":"C:\\Temp\\taxbaik\\evidence\\C_Temp_taxbaik_tests_e2e_admin-smoke.spec.ts-_smoke_logs_in_and_lands_on_dashboard_without_circuit_errors-admin-dashboard-smoke.png","domPath":"C:\\Temp\\taxbaik\\evidence\\C_Temp_taxbaik_tests_e2e_admin-smoke.spec.ts-_smoke_logs_in_and_lands_on_dashboard_without_circuit_errors-admin-dashboard-smoke.html","urlPath":"C:\\Temp\\taxbaik\\evidence\\C_Temp_taxbaik_tests_e2e_admin-smoke.spec.ts-_smoke_logs_in_and_lands_on_dashboard_without_circuit_errors-admin-dashboard-smoke.url.txt","timestamp":"2026-07-08T07:24:51.687Z"}
|
||||
{"testFile":"C:\\Temp\\taxbaik\\tests\\e2e\\admin-smoke.spec.ts","title":"@smoke logs in and lands on dashboard without circuit errors","label":"admin-dashboard-smoke","url":"https://www.taxbaik.com/admin/dashboard","screenshotPath":"C:\\Temp\\taxbaik\\evidence\\C_Temp_taxbaik_tests_e2e_admin-smoke.spec.ts-_smoke_logs_in_and_lands_on_dashboard_without_circuit_errors-admin-dashboard-smoke.png","domPath":"C:\\Temp\\taxbaik\\evidence\\C_Temp_taxbaik_tests_e2e_admin-smoke.spec.ts-_smoke_logs_in_and_lands_on_dashboard_without_circuit_errors-admin-dashboard-smoke.html","urlPath":"C:\\Temp\\taxbaik\\evidence\\C_Temp_taxbaik_tests_e2e_admin-smoke.spec.ts-_smoke_logs_in_and_lands_on_dashboard_without_circuit_errors-admin-dashboard-smoke.url.txt","timestamp":"2026-07-08T08:42:04.752Z"}
|
||||
{"testFile":"C:\\Temp\\taxbaik\\tests\\e2e\\admin-smoke.spec.ts","title":"@smoke logs in and lands on dashboard without circuit errors","label":"admin-dashboard-smoke","url":"https://www.taxbaik.com/admin/dashboard","screenshotPath":"C:\\Temp\\taxbaik\\evidence\\C_Temp_taxbaik_tests_e2e_admin-smoke.spec.ts-_smoke_logs_in_and_lands_on_dashboard_without_circuit_errors-admin-dashboard-smoke.png","domPath":"C:\\Temp\\taxbaik\\evidence\\C_Temp_taxbaik_tests_e2e_admin-smoke.spec.ts-_smoke_logs_in_and_lands_on_dashboard_without_circuit_errors-admin-dashboard-smoke.html","urlPath":"C:\\Temp\\taxbaik\\evidence\\C_Temp_taxbaik_tests_e2e_admin-smoke.spec.ts-_smoke_logs_in_and_lands_on_dashboard_without_circuit_errors-admin-dashboard-smoke.url.txt","timestamp":"2026-07-08T08:50:22.830Z"}
|
||||
{"testFile":"C:\\Temp\\taxbaik\\tests\\e2e\\admin-smoke.spec.ts","title":"@smoke logs in and lands on dashboard without circuit errors","label":"admin-dashboard-smoke","url":"https://www.taxbaik.com/admin/dashboard","screenshotPath":"C:\\Temp\\taxbaik\\evidence\\C_Temp_taxbaik_tests_e2e_admin-smoke.spec.ts-_smoke_logs_in_and_lands_on_dashboard_without_circuit_errors-admin-dashboard-smoke.png","domPath":"C:\\Temp\\taxbaik\\evidence\\C_Temp_taxbaik_tests_e2e_admin-smoke.spec.ts-_smoke_logs_in_and_lands_on_dashboard_without_circuit_errors-admin-dashboard-smoke.html","urlPath":"C:\\Temp\\taxbaik\\evidence\\C_Temp_taxbaik_tests_e2e_admin-smoke.spec.ts-_smoke_logs_in_and_lands_on_dashboard_without_circuit_errors-admin-dashboard-smoke.url.txt","timestamp":"2026-07-08T08:57:59.275Z"}
|
||||
{"testFile":"C:\\Temp\\taxbaik\\tests\\e2e\\admin-smoke.spec.ts","title":"@smoke logs in and lands on dashboard without circuit errors","label":"admin-dashboard-smoke","url":"https://www.taxbaik.com/admin/dashboard","screenshotPath":"C:\\Temp\\taxbaik\\evidence\\C_Temp_taxbaik_tests_e2e_admin-smoke.spec.ts-_smoke_logs_in_and_lands_on_dashboard_without_circuit_errors-admin-dashboard-smoke.png","domPath":"C:\\Temp\\taxbaik\\evidence\\C_Temp_taxbaik_tests_e2e_admin-smoke.spec.ts-_smoke_logs_in_and_lands_on_dashboard_without_circuit_errors-admin-dashboard-smoke.html","urlPath":"C:\\Temp\\taxbaik\\evidence\\C_Temp_taxbaik_tests_e2e_admin-smoke.spec.ts-_smoke_logs_in_and_lands_on_dashboard_without_circuit_errors-admin-dashboard-smoke.url.txt","timestamp":"2026-07-08T09:07:35.168Z"}
|
||||
|
||||
-937
@@ -1,937 +0,0 @@
|
||||
2026-07-04T12:49:21.1083596Z hz-prod-runner-3(version:v0.6.1) received task 1550 of job build-and-deploy, be triggered by event: push
|
||||
2026-07-04T12:49:21.1123461Z workflow prepared
|
||||
2026-07-04T12:49:21.1124291Z evaluating expression 'success()'
|
||||
2026-07-04T12:49:21.1125104Z expression 'success()' evaluated to 'true'
|
||||
2026-07-04T12:49:21.1125339Z 🚀 Start image=docker.gitea.com/runner-images:ubuntu-latest
|
||||
2026-07-04T12:49:21.1227263Z 🐳 docker pull image=docker.gitea.com/runner-images:ubuntu-latest platform= username= forcePull=false
|
||||
2026-07-04T12:49:21.1227465Z 🐳 docker pull docker.gitea.com/runner-images:ubuntu-latest
|
||||
2026-07-04T12:49:21.1502476Z Image exists? true
|
||||
2026-07-04T12:49:21.2087073Z 🐳 docker create image=docker.gitea.com/runner-images:ubuntu-latest platform= entrypoint=["/bin/sleep" "10800"] cmd=[] network="gitea_default"
|
||||
2026-07-04T12:49:21.3084981Z Created container name=GITEA-ACTIONS-TASK-1550-WORKFLOW-TaxBaik-CI-CD-JOB-build-and-de-d1b621a7a13ad682fe29533e6a28b6835590d0898313b1b9fc5be41b5870455c id=7fdc784e6b95f4a2f3a7139414bcbaeff9754c0efd147950d7f0357c1b99e6c6 from image docker.gitea.com/runner-images:ubuntu-latest (platform: )
|
||||
2026-07-04T12:49:21.3085729Z ENV ==> [RUNNER_TOOL_CACHE=/opt/hostedtoolcache RUNNER_OS=Linux RUNNER_ARCH=X64 RUNNER_TEMP=/tmp LANG=C.UTF-8]
|
||||
2026-07-04T12:49:21.3085886Z 🐳 docker run image=docker.gitea.com/runner-images:ubuntu-latest platform= entrypoint=["/bin/sleep" "10800"] cmd=[] network="gitea_default"
|
||||
2026-07-04T12:49:21.3086611Z Starting container: 7fdc784e6b95f4a2f3a7139414bcbaeff9754c0efd147950d7f0357c1b99e6c6
|
||||
2026-07-04T12:49:21.4654984Z Started container: 7fdc784e6b95f4a2f3a7139414bcbaeff9754c0efd147950d7f0357c1b99e6c6
|
||||
2026-07-04T12:49:21.5734362Z Writing entry to tarball workflow/event.json len:5621
|
||||
2026-07-04T12:49:21.5735278Z Writing entry to tarball workflow/envs.txt len:0
|
||||
2026-07-04T12:49:21.5735491Z Extracting content to '/var/run/act/'
|
||||
2026-07-04T12:49:21.5964245Z ☁ git clone 'https://github.com/actions/checkout' # ref=v4
|
||||
2026-07-04T12:49:21.5964651Z cloning https://github.com/actions/checkout to /root/.cache/act/c3fe249fe73091a17d6638fe1341e7bd0bcc3466ce52323c0688e83e2463a4ab
|
||||
2026-07-04T12:49:22.5232989Z Unable to pull refs/heads/v4: non-fast-forward update
|
||||
2026-07-04T12:49:22.5233439Z Cloned https://github.com/actions/checkout to /root/.cache/act/c3fe249fe73091a17d6638fe1341e7bd0bcc3466ce52323c0688e83e2463a4ab
|
||||
2026-07-04T12:49:22.5369401Z Checked out v4
|
||||
2026-07-04T12:49:22.5461867Z ☁ git clone 'https://github.com/actions/setup-dotnet' # ref=v4
|
||||
2026-07-04T12:49:22.5462260Z cloning https://github.com/actions/setup-dotnet to /root/.cache/act/2d637816dd86ec9ff59dad9ec3547bf90b88133b3029538a91ec96ac7f316336
|
||||
2026-07-04T12:49:23.1436838Z Unable to pull refs/heads/v4: worktree contains unstaged changes
|
||||
2026-07-04T12:49:23.1437339Z Cloned https://github.com/actions/setup-dotnet to /root/.cache/act/2d637816dd86ec9ff59dad9ec3547bf90b88133b3029538a91ec96ac7f316336
|
||||
2026-07-04T12:49:23.1569954Z Checked out v4
|
||||
2026-07-04T12:49:23.1781704Z evaluating expression ''
|
||||
2026-07-04T12:49:23.1782188Z expression '' evaluated to 'true'
|
||||
2026-07-04T12:49:23.1782304Z ⭐ Run Main Checkout code
|
||||
2026-07-04T12:49:23.1782488Z Writing entry to tarball workflow/outputcmd.txt len:0
|
||||
2026-07-04T12:49:23.1782639Z Writing entry to tarball workflow/statecmd.txt len:0
|
||||
2026-07-04T12:49:23.1782757Z Writing entry to tarball workflow/pathcmd.txt len:0
|
||||
2026-07-04T12:49:23.1782863Z Writing entry to tarball workflow/envs.txt len:0
|
||||
2026-07-04T12:49:23.1782956Z Writing entry to tarball workflow/SUMMARY.md len:0
|
||||
2026-07-04T12:49:23.1783048Z Extracting content to '/var/run/act'
|
||||
2026-07-04T12:49:23.1829051Z ::group::Run Checkout code
|
||||
2026-07-04T12:49:23.6519171Z ::add-matcher::/run/act/actions/c3fe249fe73091a17d6638fe1341e7bd0bcc3466ce52323c0688e83e2463a4ab/dist/problem-matcher.json
|
||||
2026-07-04T12:49:23.6522622Z Syncing repository: ***/taxbaik
|
||||
2026-07-04T12:49:23.6526573Z ::group::Getting Git version info
|
||||
2026-07-04T12:49:23.6527380Z Working directory is '/workspace/***/taxbaik'
|
||||
2026-07-04T12:49:23.6565904Z [command]/usr/bin/git version
|
||||
2026-07-04T12:49:23.6603817Z git version 2.54.0
|
||||
2026-07-04T12:49:23.6627189Z ::endgroup::
|
||||
2026-07-04T12:49:23.6642333Z Temporarily overriding HOME='/tmp/fee36d59-c0cf-4401-bc9a-d41af1fdbe1b' before making global git config changes
|
||||
2026-07-04T12:49:23.6644026Z Adding repository directory to the temporary git global config as a safe directory
|
||||
2026-07-04T12:49:23.6648194Z [command]/usr/bin/git config --global --add safe.directory /workspace/***/taxbaik
|
||||
2026-07-04T12:49:23.6681379Z Deleting the contents of '/workspace/***/taxbaik'
|
||||
2026-07-04T12:49:23.6686213Z ::group::Initializing the repository
|
||||
2026-07-04T12:49:23.6689751Z [command]/usr/bin/git init /workspace/***/taxbaik
|
||||
2026-07-04T12:49:23.6772415Z hint: Using 'master' as the name for the initial branch. This default branch name
|
||||
2026-07-04T12:49:23.6772830Z hint: will change to "main" in Git 3.0. To configure the initial branch name
|
||||
2026-07-04T12:49:23.6773287Z hint: to use in all of your new repositories, which will suppress this warning,
|
||||
2026-07-04T12:49:23.6773438Z hint: call:
|
||||
2026-07-04T12:49:23.6773518Z hint:
|
||||
2026-07-04T12:49:23.6773598Z hint: git config --global init.defaultBranch <name>
|
||||
2026-07-04T12:49:23.6773696Z hint:
|
||||
2026-07-04T12:49:23.6777666Z hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
|
||||
2026-07-04T12:49:23.6777914Z hint: 'development'. The just-created branch can be renamed via this command:
|
||||
2026-07-04T12:49:23.6778021Z hint:
|
||||
2026-07-04T12:49:23.6778115Z hint: git branch -m <name>
|
||||
2026-07-04T12:49:23.6778197Z hint:
|
||||
2026-07-04T12:49:23.6778269Z hint: Disable this message with "git config set advice.defaultBranchName false"
|
||||
2026-07-04T12:49:23.6779297Z Initialized empty Git repository in /workspace/***/taxbaik/.git/
|
||||
2026-07-04T12:49:23.6794841Z [command]/usr/bin/git remote add origin http://gitea:3000/***/taxbaik
|
||||
2026-07-04T12:49:23.6829189Z ::endgroup::
|
||||
2026-07-04T12:49:23.6829674Z ::group::Disabling automatic garbage collection
|
||||
2026-07-04T12:49:23.6835147Z [command]/usr/bin/git config --local gc.auto 0
|
||||
2026-07-04T12:49:23.6860980Z ::endgroup::
|
||||
2026-07-04T12:49:23.6861272Z ::group::Setting up auth
|
||||
2026-07-04T12:49:23.6870622Z [command]/usr/bin/git config --local --name-only --get-regexp core\.sshCommand
|
||||
2026-07-04T12:49:23.6913960Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'core\.sshCommand' && git config --local --unset-all 'core.sshCommand' || :"
|
||||
2026-07-04T12:49:23.7142806Z [command]/usr/bin/git config --local --name-only --get-regexp http\.http\:\/\/gitea\:3000\/\.extraheader
|
||||
2026-07-04T12:49:23.7169599Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'http\.http\:\/\/gitea\:3000\/\.extraheader' && git config --local --unset-all 'http.http://gitea:3000/.extraheader' || :"
|
||||
2026-07-04T12:49:23.7403942Z [command]/usr/bin/git config --local --name-only --get-regexp ^includeIf\.gitdir:
|
||||
2026-07-04T12:49:23.7444452Z [command]/usr/bin/git submodule foreach --recursive git config --local --show-origin --name-only --get-regexp remote.origin.url
|
||||
2026-07-04T12:49:23.7675767Z [command]/usr/bin/git config --local http.http://gitea:3000/.extraheader AUTHORIZATION: basic ***
|
||||
2026-07-04T12:49:23.7709656Z ::endgroup::
|
||||
2026-07-04T12:49:23.7709961Z ::group::Fetching the repository
|
||||
2026-07-04T12:49:23.7717271Z [command]/usr/bin/git -c protocol.version=2 fetch --no-tags --prune --no-recurse-submodules --depth=1 origin +dc86ccfe35d48fec886729841aaf77d2323ffb81:refs/remotes/origin/master
|
||||
2026-07-04T12:49:25.3253215Z From http://gitea:3000/***/taxbaik
|
||||
2026-07-04T12:49:25.3253890Z * [new ref] dc86ccfe35d48fec886729841aaf77d2323ffb81 -> origin/master
|
||||
2026-07-04T12:49:25.3282693Z ::endgroup::
|
||||
2026-07-04T12:49:25.3282925Z ::group::Determining the checkout info
|
||||
2026-07-04T12:49:25.3286679Z ::endgroup::
|
||||
2026-07-04T12:49:25.3292353Z [command]/usr/bin/git sparse-checkout disable
|
||||
2026-07-04T12:49:25.3338153Z [command]/usr/bin/git config --local --unset-all extensions.worktreeConfig
|
||||
2026-07-04T12:49:25.3366870Z ::group::Checking out the ref
|
||||
2026-07-04T12:49:25.3370429Z [command]/usr/bin/git checkout --progress --force -B master refs/remotes/origin/master
|
||||
2026-07-04T12:49:25.8277722Z Reset branch 'master'
|
||||
2026-07-04T12:49:25.8278332Z branch 'master' set up to track 'origin/master'.
|
||||
2026-07-04T12:49:25.8290141Z ::endgroup::
|
||||
2026-07-04T12:49:25.8321715Z [command]/usr/bin/git log -1 --format=%H
|
||||
2026-07-04T12:49:25.8341618Z dc86ccfe35d48fec886729841aaf77d2323ffb81
|
||||
2026-07-04T12:49:25.8359179Z ::remove-matcher owner=checkout-git::
|
||||
2026-07-04T12:49:25.8473361Z ::endgroup::
|
||||
2026-07-04T12:49:25.8925201Z ::group::Run Setup .NET
|
||||
2026-07-04T12:49:25.8925719Z with:
|
||||
2026-07-04T12:49:25.8925850Z dotnet-version: 10.0
|
||||
2026-07-04T12:49:26.4364417Z (node:142) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
|
||||
2026-07-04T12:49:26.4365135Z (Use `node --trace-deprecation ...` to show where the warning was created)
|
||||
2026-07-04T12:49:26.4415455Z [command]/run/act/actions/2d637816dd86ec9ff59dad9ec3547bf90b88133b3029538a91ec96ac7f316336/externals/install-dotnet.sh --skip-non-versioned-files --runtime dotnet --channel LTS
|
||||
2026-07-04T12:49:26.7591141Z dotnet-install: Attempting to download using aka.ms link https://builds.dotnet.microsoft.com/dotnet/Runtime/10.0.9/dotnet-runtime-10.0.9-linux-x64.tar.gz
|
||||
2026-07-04T12:49:26.9823877Z dotnet-install: Remote file https://builds.dotnet.microsoft.com/dotnet/Runtime/10.0.9/dotnet-runtime-10.0.9-linux-x64.tar.gz size is 36606251 bytes.
|
||||
2026-07-04T12:49:26.9830977Z dotnet-install: Extracting archive from https://builds.dotnet.microsoft.com/dotnet/Runtime/10.0.9/dotnet-runtime-10.0.9-linux-x64.tar.gz
|
||||
2026-07-04T12:49:27.7850437Z dotnet-install: Downloaded file size is 36606251 bytes.
|
||||
2026-07-04T12:49:27.7851130Z dotnet-install: The remote and local file sizes are equal.
|
||||
2026-07-04T12:49:27.8443797Z dotnet-install: Installed version is 10.0.9
|
||||
2026-07-04T12:49:27.8494627Z dotnet-install: Adding to current process PATH: `/usr/share/dotnet`. Note: This change will be visible only when sourcing script.
|
||||
2026-07-04T12:49:27.8495003Z dotnet-install: Note that the script does not resolve dependencies during installation.
|
||||
2026-07-04T12:49:27.8495163Z dotnet-install: To check the list of dependencies, go to https://learn.microsoft.com/dotnet/core/install, select your operating system and check the "Dependencies" section.
|
||||
2026-07-04T12:49:27.8495299Z dotnet-install: Installation finished successfully.
|
||||
2026-07-04T12:49:27.8526885Z [command]/run/act/actions/2d637816dd86ec9ff59dad9ec3547bf90b88133b3029538a91ec96ac7f316336/externals/install-dotnet.sh --skip-non-versioned-files --channel 10.0
|
||||
2026-07-04T12:49:28.1718954Z dotnet-install: Attempting to download using aka.ms link https://builds.dotnet.microsoft.com/dotnet/Sdk/10.0.301/dotnet-sdk-10.0.301-linux-x64.tar.gz
|
||||
2026-07-04T12:49:28.9847774Z dotnet-install: Remote file https://builds.dotnet.microsoft.com/dotnet/Sdk/10.0.301/dotnet-sdk-10.0.301-linux-x64.tar.gz size is 235086718 bytes.
|
||||
2026-07-04T12:49:28.9854648Z dotnet-install: Extracting archive from https://builds.dotnet.microsoft.com/dotnet/Sdk/10.0.301/dotnet-sdk-10.0.301-linux-x64.tar.gz
|
||||
2026-07-04T12:49:34.5345102Z dotnet-install: Downloaded file size is 235086718 bytes.
|
||||
2026-07-04T12:49:34.5347250Z dotnet-install: The remote and local file sizes are equal.
|
||||
2026-07-04T12:49:34.7378875Z dotnet-install: Installed version is 10.0.301
|
||||
2026-07-04T12:49:34.7438030Z dotnet-install: Adding to current process PATH: `/usr/share/dotnet`. Note: This change will be visible only when sourcing script.
|
||||
2026-07-04T12:49:34.7441902Z dotnet-install: Note that the script does not resolve dependencies during installation.
|
||||
2026-07-04T12:49:34.7442410Z dotnet-install: To check the list of dependencies, go to https://learn.microsoft.com/dotnet/core/install, select your operating system and check the "Dependencies" section.
|
||||
2026-07-04T12:49:34.7442569Z dotnet-install: Installation finished successfully.
|
||||
2026-07-04T12:49:34.7473572Z ##[add-matcher]/run/act/actions/2d637816dd86ec9ff59dad9ec3547bf90b88133b3029538a91ec96ac7f316336/.github/csc.json
|
||||
2026-07-04T12:49:34.7575673Z ::endgroup::
|
||||
2026-07-04T12:49:34.8690239Z ::group::Run dotnet restore src/TaxBaik.sln
|
||||
2026-07-04T12:49:34.8690735Z dotnet restore src/TaxBaik.sln
|
||||
2026-07-04T12:49:34.8691061Z shell: bash --noprofile --norc -e -o pipefail {0}
|
||||
2026-07-04T12:49:34.8691248Z ::endgroup::
|
||||
2026-07-04T12:49:35.0741950Z
|
||||
2026-07-04T12:49:35.0749035Z Welcome to .NET 10.0!
|
||||
2026-07-04T12:49:35.0749790Z ---------------------
|
||||
2026-07-04T12:49:35.0750163Z SDK Version: 10.0.301
|
||||
2026-07-04T12:49:35.0750267Z
|
||||
2026-07-04T12:49:35.0750367Z Telemetry
|
||||
2026-07-04T12:49:35.0750443Z ---------
|
||||
2026-07-04T12:49:35.0750707Z The .NET tools collect usage data in order to help us improve your experience. It is collected by Microsoft and shared with the community. You can opt-out of telemetry by setting the DOTNET_CLI_TELEMETRY_OPTOUT environment variable to '1' or 'true' using your favorite shell.
|
||||
2026-07-04T12:49:35.0751163Z
|
||||
2026-07-04T12:49:35.0751291Z Read more about .NET CLI Tools telemetry: https://aka.ms/dotnet-cli-telemetry
|
||||
2026-07-04T12:49:35.6068528Z
|
||||
2026-07-04T12:49:35.6070150Z ----------------
|
||||
2026-07-04T12:49:35.6070372Z Installed an ASP.NET Core HTTPS development certificate.
|
||||
2026-07-04T12:49:35.6072186Z To trust the certificate, run 'dotnet dev-certs https --trust'
|
||||
2026-07-04T12:49:35.6076372Z Learn about HTTPS: https://aka.ms/dotnet-https
|
||||
2026-07-04T12:49:35.6076628Z
|
||||
2026-07-04T12:49:35.6076758Z ----------------
|
||||
2026-07-04T12:49:35.6076846Z Write your first app: https://aka.ms/dotnet-hello-world
|
||||
2026-07-04T12:49:35.6076954Z Find out what's new: https://aka.ms/dotnet-whats-new
|
||||
2026-07-04T12:49:35.6077049Z Explore documentation: https://aka.ms/dotnet-docs
|
||||
2026-07-04T12:49:35.6077169Z Report issues and find source on GitHub: https://github.com/dotnet/core
|
||||
2026-07-04T12:49:35.6077278Z Use 'dotnet --help' to see available commands or visit: https://aka.ms/dotnet-cli
|
||||
2026-07-04T12:49:35.6077474Z --------------------------------------------------------------------------------------
|
||||
2026-07-04T12:49:36.5161335Z Determining projects to restore...
|
||||
2026-07-04T12:49:37.2639927Z Restored /workspace/***/taxbaik/src/TaxBaik.Domain/TaxBaik.Domain.csproj (in 114 ms).
|
||||
2026-07-04T12:49:38.6108539Z Restored /workspace/***/taxbaik/src/TaxBaik.Application/TaxBaik.Application.csproj (in 1.5 sec).
|
||||
2026-07-04T12:49:39.8969495Z Restored /workspace/***/taxbaik/src/TaxBaik.Web/TaxBaik.Web.csproj (in 1.27 sec).
|
||||
2026-07-04T12:49:41.1437758Z Restored /workspace/***/taxbaik/src/TaxBaik.Application.Tests/TaxBaik.Application.Tests.csproj (in 3.86 sec).
|
||||
2026-07-04T12:49:41.2503876Z Restored /workspace/***/taxbaik/src/TaxBaik.Infrastructure/TaxBaik.Infrastructure.csproj (in 30 ms).
|
||||
2026-07-04T12:49:41.8107150Z Restored /workspace/***/taxbaik/src/TaxBaik.Web.Client/TaxBaik.Web.Client.csproj (in 1.74 sec).
|
||||
2026-07-04T12:49:41.9707509Z ::group::Run dotnet build src/TaxBaik.sln -c Release --no-restore -p:ContinuousIntegrationBuild=true
|
||||
2026-07-04T12:49:41.9707880Z dotnet build src/TaxBaik.sln -c Release --no-restore -p:ContinuousIntegrationBuild=true
|
||||
2026-07-04T12:49:41.9708017Z shell: bash --noprofile --norc -e -o pipefail {0}
|
||||
2026-07-04T12:49:41.9708125Z ::endgroup::
|
||||
2026-07-04T12:49:45.3296980Z TaxBaik.Domain -> /workspace/***/taxbaik/src/TaxBaik.Domain/bin/Release/net10.0/TaxBaik.Domain.dll
|
||||
2026-07-04T12:49:47.7710543Z TaxBaik.Application -> /workspace/***/taxbaik/src/TaxBaik.Application/bin/Release/net10.0/TaxBaik.Application.dll
|
||||
2026-07-04T12:49:48.6747737Z TaxBaik.Infrastructure -> /workspace/***/taxbaik/src/TaxBaik.Infrastructure/bin/Release/net10.0/TaxBaik.Infrastructure.dll
|
||||
2026-07-04T12:50:08.6007977Z TaxBaik.Web.Client -> /workspace/***/taxbaik/src/TaxBaik.Web.Client/bin/Debug/net10.0/TaxBaik.Web.Client.dll
|
||||
2026-07-04T12:50:08.6107202Z TaxBaik.Web.Client (Blazor output) -> /workspace/***/taxbaik/src/TaxBaik.Web.Client/bin/Debug/net10.0/wwwroot
|
||||
2026-07-04T12:50:19.3402859Z TaxBaik.Web -> /workspace/***/taxbaik/src/TaxBaik.Web/bin/Release/net10.0/TaxBaik.Web.dll
|
||||
2026-07-04T12:50:20.2847876Z TaxBaik.Application.Tests -> /workspace/***/taxbaik/src/TaxBaik.Application.Tests/bin/Release/net10.0/TaxBaik.Application.Tests.dll
|
||||
2026-07-04T12:50:20.3269626Z
|
||||
2026-07-04T12:50:20.3279927Z Build succeeded.
|
||||
2026-07-04T12:50:20.3283223Z 0 Warning(s)
|
||||
2026-07-04T12:50:20.3284820Z 0 Error(s)
|
||||
2026-07-04T12:50:20.3287249Z
|
||||
2026-07-04T12:50:20.3288831Z Time Elapsed 00:00:38.09
|
||||
2026-07-04T12:50:20.4838413Z ::group::Run dotnet test src/TaxBaik.sln -c Release --no-build
|
||||
2026-07-04T12:50:20.4839066Z dotnet test src/TaxBaik.sln -c Release --no-build
|
||||
2026-07-04T12:50:20.4839241Z shell: bash --noprofile --norc -e -o pipefail {0}
|
||||
2026-07-04T12:50:20.4839359Z ::endgroup::
|
||||
2026-07-04T12:50:23.9713693Z Test run for /workspace/***/taxbaik/src/TaxBaik.Application.Tests/bin/Release/net10.0/TaxBaik.Application.Tests.dll (.NETCoreApp,Version=v10.0)
|
||||
2026-07-04T12:50:24.7096642Z A total of 1 test files matched the specified pattern.
|
||||
2026-07-04T12:50:30.0285340Z
|
||||
2026-07-04T12:50:30.0898162Z Passed! - Failed: 0, Passed: 26, Skipped: 0, Total: 26, Duration: 990 ms - TaxBaik.Application.Tests.dll (net10.0)
|
||||
2026-07-04T12:50:30.3809977Z ::group::Run set -e
|
||||
2026-07-04T12:50:30.3810322Z set -e
|
||||
2026-07-04T12:50:30.3810444Z mkdir -p ./publish-logs
|
||||
2026-07-04T12:50:30.3810532Z web_log="./publish-logs/publish-web.log"
|
||||
2026-07-04T12:50:30.3810628Z start=$(date +%s)
|
||||
2026-07-04T12:50:30.3810710Z # Web.Client needs a Release static-web-assets manifest for Web publish.
|
||||
2026-07-04T12:50:30.3810972Z # Build it explicitly so publish can reuse the prepared outputs.
|
||||
2026-07-04T12:50:30.3811068Z dotnet build src/TaxBaik.Web.Client/TaxBaik.Web.Client.csproj -c Release --no-restore -p:ContinuousIntegrationBuild=true
|
||||
2026-07-04T12:50:30.3811171Z # Build the Web host in Release as well so publish has the same inputs
|
||||
2026-07-04T12:50:30.3811261Z # the server uses in production.
|
||||
2026-07-04T12:50:30.3811343Z dotnet build src/TaxBaik.Web/TaxBaik.Web.csproj -c Release --no-restore -p:ContinuousIntegrationBuild=true
|
||||
2026-07-04T12:50:30.3811442Z echo "--- Web.Client Release artifacts ---"
|
||||
2026-07-04T12:50:30.3811529Z ls -la src/TaxBaik.Web.Client/bin/Release/net10.0 || true
|
||||
2026-07-04T12:50:30.3811622Z ls -la src/TaxBaik.Web.Client/obj/Release/net10.0 || true
|
||||
2026-07-04T12:50:30.3811701Z if ! dotnet publish src/TaxBaik.Web/ \
|
||||
2026-07-04T12:50:30.3811809Z -c Release \
|
||||
2026-07-04T12:50:30.3811886Z -o ./publish \
|
||||
2026-07-04T12:50:30.3811968Z --no-restore \
|
||||
2026-07-04T12:50:30.3812042Z -p:SelfContained=false \
|
||||
2026-07-04T12:50:30.3812116Z -p:PublishReadyToRun=false \
|
||||
2026-07-04T12:50:30.3812197Z -p:PerformanceSummary=true \
|
||||
2026-07-04T12:50:30.3812269Z -clp:Summary \
|
||||
2026-07-04T12:50:30.3812338Z -bl:"./publish-logs/publish-web.binlog" >"$web_log" 2>&1; then
|
||||
2026-07-04T12:50:30.3812451Z echo "=== Publish Web failed; tailing log ==="
|
||||
2026-07-04T12:50:30.3812603Z tail -n 120 "$web_log" || true
|
||||
2026-07-04T12:50:30.3812747Z exit 1
|
||||
2026-07-04T12:50:30.3812836Z fi
|
||||
2026-07-04T12:50:30.3812917Z end=$(date +%s)
|
||||
2026-07-04T12:50:30.3813009Z echo "✓ Publish Web elapsed: $((end - start))s"
|
||||
2026-07-04T12:50:30.3813102Z ls -lh ./publish-logs/publish-web.binlog
|
||||
2026-07-04T12:50:30.3813186Z shell: bash --noprofile --norc -e -o pipefail {0}
|
||||
2026-07-04T12:50:30.3813283Z ::endgroup::
|
||||
2026-07-04T12:50:32.0488223Z TaxBaik.Domain -> /workspace/***/taxbaik/src/TaxBaik.Domain/bin/Release/net10.0/TaxBaik.Domain.dll
|
||||
2026-07-04T12:50:32.3508048Z TaxBaik.Application -> /workspace/***/taxbaik/src/TaxBaik.Application/bin/Release/net10.0/TaxBaik.Application.dll
|
||||
2026-07-04T12:50:44.4958268Z TaxBaik.Web.Client -> /workspace/***/taxbaik/src/TaxBaik.Web.Client/bin/Release/net10.0/TaxBaik.Web.Client.dll
|
||||
2026-07-04T12:50:44.4978125Z TaxBaik.Web.Client (Blazor output) -> /workspace/***/taxbaik/src/TaxBaik.Web.Client/bin/Release/net10.0/wwwroot
|
||||
2026-07-04T12:50:44.5536984Z
|
||||
2026-07-04T12:50:44.5540603Z Build succeeded.
|
||||
2026-07-04T12:50:44.5541781Z 0 Warning(s)
|
||||
2026-07-04T12:50:44.5557450Z 0 Error(s)
|
||||
2026-07-04T12:50:44.5559019Z
|
||||
2026-07-04T12:50:44.5567098Z Time Elapsed 00:00:13.64
|
||||
2026-07-04T12:50:46.1657100Z TaxBaik.Domain -> /workspace/***/taxbaik/src/TaxBaik.Domain/bin/Release/net10.0/TaxBaik.Domain.dll
|
||||
2026-07-04T12:50:46.2447793Z TaxBaik.Infrastructure -> /workspace/***/taxbaik/src/TaxBaik.Infrastructure/bin/Release/net10.0/TaxBaik.Infrastructure.dll
|
||||
2026-07-04T12:50:46.5259148Z TaxBaik.Application -> /workspace/***/taxbaik/src/TaxBaik.Application/bin/Release/net10.0/TaxBaik.Application.dll
|
||||
2026-07-04T12:50:48.5388949Z TaxBaik.Web.Client -> /workspace/***/taxbaik/src/TaxBaik.Web.Client/bin/Release/net10.0/TaxBaik.Web.Client.dll
|
||||
2026-07-04T12:50:48.5397206Z TaxBaik.Web.Client (Blazor output) -> /workspace/***/taxbaik/src/TaxBaik.Web.Client/bin/Release/net10.0/wwwroot
|
||||
2026-07-04T12:50:51.6865226Z TaxBaik.Web -> /workspace/***/taxbaik/src/TaxBaik.Web/bin/Release/net10.0/TaxBaik.Web.dll
|
||||
2026-07-04T12:50:51.7325224Z
|
||||
2026-07-04T12:50:51.7335278Z Build succeeded.
|
||||
2026-07-04T12:50:51.7356860Z 0 Warning(s)
|
||||
2026-07-04T12:50:51.7360102Z 0 Error(s)
|
||||
2026-07-04T12:50:51.7364579Z
|
||||
2026-07-04T12:50:51.7376644Z Time Elapsed 00:00:06.73
|
||||
2026-07-04T12:50:51.7670469Z --- Web.Client Release artifacts ---
|
||||
2026-07-04T12:50:51.7699768Z total 42056
|
||||
2026-07-04T12:50:51.7700066Z drwxr-xr-x 3 root root 20480 Jul 4 12:50 .
|
||||
2026-07-04T12:50:51.7700191Z drwxr-xr-x 3 root root 4096 Jul 4 12:50 ..
|
||||
2026-07-04T12:50:51.7700291Z -rwxr--r-- 1 root root 55632 May 20 20:19 Microsoft.AspNetCore.Authorization.dll
|
||||
2026-07-04T12:50:51.7700420Z -rwxr--r-- 1 root root 34128 May 20 20:19 Microsoft.AspNetCore.Components.Authorization.dll
|
||||
2026-07-04T12:50:51.7700590Z -rwxr--r-- 1 root root 47952 May 20 20:19 Microsoft.AspNetCore.Components.Forms.dll
|
||||
2026-07-04T12:50:51.7700682Z -rwxr--r-- 1 root root 189264 May 20 20:19 Microsoft.AspNetCore.Components.Web.dll
|
||||
2026-07-04T12:50:51.7700950Z -rwxr--r-- 1 root root 166736 May 20 20:20 Microsoft.AspNetCore.Components.WebAssembly.dll
|
||||
2026-07-04T12:50:51.7701048Z -rwxr--r-- 1 root root 399184 May 20 20:19 Microsoft.AspNetCore.Components.dll
|
||||
2026-07-04T12:50:51.7701131Z -rwxr--r-- 1 root root 16208 May 20 20:18 Microsoft.AspNetCore.Metadata.dll
|
||||
2026-07-04T12:50:51.7701220Z -rwxr--r-- 1 root root 19248 Dec 12 2025 Microsoft.Bcl.Cryptography.dll
|
||||
2026-07-04T12:50:51.7701312Z -rwxr--r-- 1 root root 311632 May 20 18:30 Microsoft.CSharp.dll
|
||||
2026-07-04T12:50:51.7701416Z -rwxr--r-- 1 root root 38192 Oct 24 2025 Microsoft.Extensions.Caching.Abstractions.dll
|
||||
2026-07-04T12:50:51.7701508Z -rwxr--r-- 1 root root 28496 May 20 19:29 Microsoft.Extensions.Configuration.Abstractions.dll
|
||||
2026-07-04T12:50:51.7701618Z -rwxr--r-- 1 root root 43344 May 20 19:32 Microsoft.Extensions.Configuration.Binder.dll
|
||||
2026-07-04T12:50:51.7701708Z -rwxr--r-- 1 root root 28496 May 20 19:34 Microsoft.Extensions.Configuration.FileExtensions.dll
|
||||
2026-07-04T12:50:51.7701813Z -rwxr--r-- 1 root root 27984 May 20 19:36 Microsoft.Extensions.Configuration.Json.dll
|
||||
2026-07-04T12:50:51.7701918Z -rwxr--r-- 1 root root 44880 May 20 19:29 Microsoft.Extensions.Configuration.dll
|
||||
2026-07-04T12:50:51.7702004Z -rwxr--r-- 1 root root 65872 May 20 19:29 Microsoft.Extensions.DependencyInjection.Abstractions.dll
|
||||
2026-07-04T12:50:51.7702097Z -rwxr--r-- 1 root root 95568 May 20 19:30 Microsoft.Extensions.DependencyInjection.dll
|
||||
2026-07-04T12:50:51.7702194Z -rwxr--r-- 1 root root 31056 May 20 19:32 Microsoft.Extensions.Diagnostics.Abstractions.dll
|
||||
2026-07-04T12:50:51.7702288Z -rwxr--r-- 1 root root 36176 May 20 19:34 Microsoft.Extensions.Diagnostics.dll
|
||||
2026-07-04T12:50:51.7702374Z -rwxr--r-- 1 root root 23376 May 20 19:29 Microsoft.Extensions.FileProviders.Abstractions.dll
|
||||
2026-07-04T12:50:51.7702458Z -rwxr--r-- 1 root root 45392 May 20 19:33 Microsoft.Extensions.FileProviders.Physical.dll
|
||||
2026-07-04T12:50:51.7702562Z -rwxr--r-- 1 root root 47952 May 20 19:30 Microsoft.Extensions.FileSystemGlobbing.dll
|
||||
2026-07-04T12:50:51.7702655Z -rwxr--r-- 1 root root 93008 May 20 19:37 Microsoft.Extensions.Http.dll
|
||||
2026-07-04T12:50:51.7702760Z -rwxr--r-- 1 root root 19576 Mar 25 2023 Microsoft.Extensions.Localization.Abstractions.dll
|
||||
2026-07-04T12:50:51.7702853Z -rwxr--r-- 1 root root 31872 Mar 25 2023 Microsoft.Extensions.Localization.dll
|
||||
2026-07-04T12:50:51.7702942Z -rwxr--r-- 1 root root 66896 May 20 19:29 Microsoft.Extensions.Logging.Abstractions.dll
|
||||
2026-07-04T12:50:51.7703029Z -rwxr--r-- 1 root root 51536 May 20 19:33 Microsoft.Extensions.Logging.dll
|
||||
2026-07-04T12:50:51.7703111Z -rwxr--r-- 1 root root 21840 May 20 19:33 Microsoft.Extensions.Options.ConfigurationExtensions.dll
|
||||
2026-07-04T12:50:51.7703206Z -rwxr--r-- 1 root root 65360 May 20 19:30 Microsoft.Extensions.Options.dll
|
||||
2026-07-04T12:50:51.7703314Z -rwxr--r-- 1 root root 44880 May 20 19:29 Microsoft.Extensions.Primitives.dll
|
||||
2026-07-04T12:50:51.7703426Z -rwxr--r-- 1 root root 43344 May 20 20:19 Microsoft.Extensions.Validation.dll
|
||||
2026-07-04T12:50:51.7703510Z -rwxr--r-- 1 root root 19296 Jun 2 20:51 Microsoft.IdentityModel.Abstractions.dll
|
||||
2026-07-04T12:50:51.7703597Z -rwxr--r-- 1 root root 172856 Jun 2 20:52 Microsoft.IdentityModel.JsonWebTokens.dll
|
||||
2026-07-04T12:50:51.7703683Z -rwxr--r-- 1 root root 38200 Jun 2 20:51 Microsoft.IdentityModel.Logging.dll
|
||||
2026-07-04T12:50:51.7703764Z -rwxr--r-- 1 root root 407352 Jun 2 20:51 Microsoft.IdentityModel.Tokens.dll
|
||||
2026-07-04T12:50:51.7703844Z -rwxr--r-- 1 root root 24912 May 20 20:20 Microsoft.JSInterop.WebAssembly.dll
|
||||
2026-07-04T12:50:51.7703924Z -rwxr--r-- 1 root root 75088 May 20 20:19 Microsoft.JSInterop.dll
|
||||
2026-07-04T12:50:51.7704012Z -rwxr--r-- 1 root root 428880 May 20 18:30 Microsoft.VisualBasic.Core.dll
|
||||
2026-07-04T12:50:51.7704101Z -rwxr--r-- 1 root root 17232 May 20 18:31 Microsoft.VisualBasic.dll
|
||||
2026-07-04T12:50:51.7704182Z -rwxr--r-- 1 root root 15696 May 20 18:29 Microsoft.Win32.Primitives.dll
|
||||
2026-07-04T12:50:51.7704272Z -rwxr--r-- 1 root root 33104 May 20 18:29 Microsoft.Win32.Registry.dll
|
||||
2026-07-04T12:50:51.7704425Z -rwxr--r-- 1 root root 9108480 Sep 14 2023 MudBlazor.dll
|
||||
2026-07-04T12:50:51.7704514Z -rwxr--r-- 1 root root 15184 May 20 18:31 System.AppContext.dll
|
||||
2026-07-04T12:50:51.7704608Z -rwxr--r-- 1 root root 15184 May 20 18:30 System.Buffers.dll
|
||||
2026-07-04T12:50:51.7704698Z -rwxr--r-- 1 root root 88912 May 20 18:29 System.Collections.Concurrent.dll
|
||||
2026-07-04T12:50:51.7704789Z -rwxr--r-- 1 root root 251216 May 20 18:29 System.Collections.Immutable.dll
|
||||
2026-07-04T12:50:51.7704875Z -rwxr--r-- 1 root root 47952 May 20 18:29 System.Collections.NonGeneric.dll
|
||||
2026-07-04T12:50:51.7704966Z -rwxr--r-- 1 root root 47952 May 20 18:29 System.Collections.Specialized.dll
|
||||
2026-07-04T12:50:51.7707333Z -rwxr--r-- 1 root root 112976 May 20 18:28 System.Collections.dll
|
||||
2026-07-04T12:50:51.7707687Z -rwxr--r-- 1 root root 102736 May 20 18:31 System.ComponentModel.Annotations.dll
|
||||
2026-07-04T12:50:51.7708035Z -rwxr--r-- 1 root root 16720 May 20 18:31 System.ComponentModel.DataAnnotations.dll
|
||||
2026-07-04T12:50:51.7708335Z -rwxr--r-- 1 root root 26448 May 20 18:29 System.ComponentModel.EventBasedAsync.dll
|
||||
2026-07-04T12:50:51.7708514Z -rwxr--r-- 1 root root 42320 May 20 18:29 System.ComponentModel.Primitives.dll
|
||||
2026-07-04T12:50:51.7708690Z -rwxr--r-- 1 root root 316752 May 20 18:31 System.ComponentModel.TypeConverter.dll
|
||||
2026-07-04T12:50:51.7708912Z -rwxr--r-- 1 root root 16208 May 20 18:29 System.ComponentModel.dll
|
||||
2026-07-04T12:50:51.7709087Z -rwxr--r-- 1 root root 19280 May 20 18:31 System.Configuration.dll
|
||||
2026-07-04T12:50:51.7709258Z -rwxr--r-- 1 root root 54096 May 20 18:31 System.Console.dll
|
||||
2026-07-04T12:50:51.7709460Z -rwxr--r-- 1 root root 23376 May 20 18:31 System.Core.dll
|
||||
2026-07-04T12:50:51.7709630Z -rwxr--r-- 1 root root 1018192 May 20 18:31 System.Data.Common.dll
|
||||
2026-07-04T12:50:51.7709804Z -rwxr--r-- 1 root root 15696 May 20 18:31 System.Data.DataSetExtensions.dll
|
||||
2026-07-04T12:50:51.7709982Z -rwxr--r-- 1 root root 25424 May 20 18:31 System.Data.dll
|
||||
2026-07-04T12:50:51.7710183Z -rwxr--r-- 1 root root 16208 May 20 18:31 System.Diagnostics.Contracts.dll
|
||||
2026-07-04T12:50:51.7710361Z -rwxr--r-- 1 root root 15696 May 20 18:30 System.Diagnostics.Debug.dll
|
||||
2026-07-04T12:50:51.7710524Z -rwxr--r-- 1 root root 202576 May 20 18:29 System.Diagnostics.DiagnosticSource.dll
|
||||
2026-07-04T12:50:51.7710895Z -rwxr--r-- 1 root root 22864 May 20 18:29 System.Diagnostics.FileVersionInfo.dll
|
||||
2026-07-04T12:50:51.7711109Z -rwxr--r-- 1 root root 56656 May 20 18:29 System.Diagnostics.Process.dll
|
||||
2026-07-04T12:50:51.7711275Z -rwxr--r-- 1 root root 25936 May 20 18:29 System.Diagnostics.StackTrace.dll
|
||||
2026-07-04T12:50:51.7711461Z -rwxr--r-- 1 root root 31568 May 20 18:31 System.Diagnostics.TextWriterTraceListener.dll
|
||||
2026-07-04T12:50:51.7711697Z -rwxr--r-- 1 root root 15184 May 20 18:30 System.Diagnostics.Tools.dll
|
||||
2026-07-04T12:50:51.7711883Z -rwxr--r-- 1 root root 58704 May 20 18:29 System.Diagnostics.TraceSource.dll
|
||||
2026-07-04T12:50:51.7712056Z -rwxr--r-- 1 root root 16208 May 20 18:28 System.Diagnostics.Tracing.dll
|
||||
2026-07-04T12:50:51.7712283Z -rwxr--r-- 1 root root 64848 May 20 18:29 System.Drawing.Primitives.dll
|
||||
2026-07-04T12:50:51.7712465Z -rwxr--r-- 1 root root 20304 May 20 18:31 System.Drawing.dll
|
||||
2026-07-04T12:50:51.7712648Z -rwxr--r-- 1 root root 16208 May 20 18:30 System.Dynamic.Runtime.dll
|
||||
2026-07-04T12:50:51.7712825Z -rwxr--r-- 1 root root 97104 May 20 18:29 System.Formats.Asn1.dll
|
||||
2026-07-04T12:50:51.7713000Z -rwxr--r-- 1 root root 38736 May 20 18:29 System.Formats.Tar.dll
|
||||
2026-07-04T12:50:51.7713087Z -rwxr--r-- 1 root root 15696 May 20 18:30 System.Globalization.Calendars.dll
|
||||
2026-07-04T12:50:51.7713176Z -rwxr--r-- 1 root root 15184 May 20 18:30 System.Globalization.Extensions.dll
|
||||
2026-07-04T12:50:51.7713291Z -rwxr--r-- 1 root root 15696 May 20 18:30 System.Globalization.dll
|
||||
2026-07-04T12:50:51.7713387Z -rwxr--r-- 1 root root 28496 May 20 18:29 System.IO.Compression.Brotli.dll
|
||||
2026-07-04T12:50:51.7713486Z -rwxr--r-- 1 root root 15184 May 20 18:31 System.IO.Compression.FileSystem.dll
|
||||
2026-07-04T12:50:51.7713573Z -rwxr--r-- 1 root root 53584 May 20 18:29 System.IO.Compression.ZipFile.dll
|
||||
2026-07-04T12:50:51.7713654Z -rwxr--r-- 1 root root 167760 May 20 18:31 System.IO.Compression.dll
|
||||
2026-07-04T12:50:51.7713736Z -rwxr--r-- 1 root root 32080 May 20 18:29 System.IO.FileSystem.AccessControl.dll
|
||||
2026-07-04T12:50:51.7713827Z -rwxr--r-- 1 root root 23888 May 20 18:29 System.IO.FileSystem.DriveInfo.dll
|
||||
2026-07-04T12:50:51.7713926Z -rwxr--r-- 1 root root 15184 May 20 18:30 System.IO.FileSystem.Primitives.dll
|
||||
2026-07-04T12:50:51.7714013Z -rwxr--r-- 1 root root 33104 May 20 18:29 System.IO.FileSystem.Watcher.dll
|
||||
2026-07-04T12:50:51.7714096Z -rwxr--r-- 1 root root 15696 May 20 18:30 System.IO.FileSystem.dll
|
||||
2026-07-04T12:50:51.7714178Z -rwxr--r-- 1 root root 35152 May 20 18:30 System.IO.IsolatedStorage.dll
|
||||
2026-07-04T12:50:51.7714259Z -rwxr--r-- 1 root root 50000 May 20 18:31 System.IO.MemoryMappedFiles.dll
|
||||
2026-07-04T12:50:51.7714344Z -rwxr--r-- 1 root root 78160 May 20 18:29 System.IO.Pipelines.dll
|
||||
2026-07-04T12:50:51.7714423Z -rwxr--r-- 1 root root 23376 May 20 18:29 System.IO.Pipes.AccessControl.dll
|
||||
2026-07-04T12:50:51.7714513Z -rwxr--r-- 1 root root 42320 May 20 18:29 System.IO.Pipes.dll
|
||||
2026-07-04T12:50:51.7714598Z -rwxr--r-- 1 root root 15696 May 20 18:30 System.IO.UnmanagedMemoryStream.dll
|
||||
2026-07-04T12:50:51.7714682Z -rwxr--r-- 1 root root 15696 May 20 18:30 System.IO.dll
|
||||
2026-07-04T12:50:51.7714764Z -rwxr--r-- 1 root root 92000 Jun 2 20:51 System.IdentityModel.Tokens.Jwt.dll
|
||||
2026-07-04T12:50:51.7714848Z -rwxr--r-- 1 root root 456528 May 20 18:29 System.Linq.AsyncEnumerable.dll
|
||||
2026-07-04T12:50:51.7714934Z -rwxr--r-- 1 root root 575312 May 20 18:29 System.Linq.Expressions.dll
|
||||
2026-07-04T12:50:51.7715013Z -rwxr--r-- 1 root root 223056 May 20 18:31 System.Linq.Parallel.dll
|
||||
2026-07-04T12:50:51.7715099Z -rwxr--r-- 1 root root 78672 May 20 18:31 System.Linq.Queryable.dll
|
||||
2026-07-04T12:50:51.7715179Z -rwxr--r-- 1 root root 201040 May 20 18:29 System.Linq.dll
|
||||
2026-07-04T12:50:51.7715280Z -rwxr--r-- 1 root root 55632 May 20 18:28 System.Memory.dll
|
||||
2026-07-04T12:50:51.7715363Z -rwxr--r-- 1 root root 56144 May 20 18:30 System.Net.Http.Json.dll
|
||||
2026-07-04T12:50:51.7715443Z -rwxr--r-- 1 root root 296272 May 20 18:31 System.Net.Http.dll
|
||||
2026-07-04T12:50:51.7724789Z -rwxr--r-- 1 root root 56144 May 20 18:30 System.Net.HttpListener.dll
|
||||
2026-07-04T12:50:51.7725003Z -rwxr--r-- 1 root root 105296 May 20 18:31 System.Net.Mail.dll
|
||||
2026-07-04T12:50:51.7725118Z -rwxr--r-- 1 root root 24400 May 20 18:31 System.Net.NameResolution.dll
|
||||
2026-07-04T12:50:51.7725378Z -rwxr--r-- 1 root root 42320 May 20 18:29 System.Net.NetworkInformation.dll
|
||||
2026-07-04T12:50:51.7725485Z -rwxr--r-- 1 root root 27984 May 20 18:29 System.Net.Ping.dll
|
||||
2026-07-04T12:50:51.7725575Z -rwxr--r-- 1 root root 107344 May 20 18:31 System.Net.Primitives.dll
|
||||
2026-07-04T12:50:51.7725659Z -rwxr--r-- 1 root root 39248 May 20 18:30 System.Net.Quic.dll
|
||||
2026-07-04T12:50:51.7725741Z -rwxr--r-- 1 root root 65872 May 20 18:30 System.Net.Requests.dll
|
||||
2026-07-04T12:50:51.7725821Z -rwxr--r-- 1 root root 114512 May 20 18:30 System.Net.Security.dll
|
||||
2026-07-04T12:50:51.7725899Z -rwxr--r-- 1 root root 40784 May 20 18:29 System.Net.ServerSentEvents.dll
|
||||
2026-07-04T12:50:51.7725997Z -rwxr--r-- 1 root root 15184 May 20 18:31 System.Net.ServicePoint.dll
|
||||
2026-07-04T12:50:51.7726207Z -rwxr--r-- 1 root root 74576 May 20 18:29 System.Net.Sockets.dll
|
||||
2026-07-04T12:50:51.7726297Z -rwxr--r-- 1 root root 56144 May 20 18:31 System.Net.WebClient.dll
|
||||
2026-07-04T12:50:51.7726382Z -rwxr--r-- 1 root root 33104 May 20 18:29 System.Net.WebHeaderCollection.dll
|
||||
2026-07-04T12:50:51.7726473Z -rwxr--r-- 1 root root 21840 May 20 18:31 System.Net.WebProxy.dll
|
||||
2026-07-04T12:50:51.7726565Z -rwxr--r-- 1 root root 52560 May 20 18:31 System.Net.WebSockets.Client.dll
|
||||
2026-07-04T12:50:51.7726651Z -rwxr--r-- 1 root root 108880 May 20 18:31 System.Net.WebSockets.dll
|
||||
2026-07-04T12:50:51.7726745Z -rwxr--r-- 1 root root 17232 May 20 18:31 System.Net.dll
|
||||
2026-07-04T12:50:51.7726828Z -rwxr--r-- 1 root root 15696 May 20 18:28 System.Numerics.Vectors.dll
|
||||
2026-07-04T12:50:51.7726973Z -rwxr--r-- 1 root root 15184 May 20 18:31 System.Numerics.dll
|
||||
2026-07-04T12:50:51.7727145Z -rwxr--r-- 1 root root 41296 May 20 18:29 System.ObjectModel.dll
|
||||
2026-07-04T12:50:51.7727300Z -rwxr--r-- 1 root root 4880208 May 20 18:19 System.Private.CoreLib.dll
|
||||
2026-07-04T12:50:51.7727457Z -rwxr--r-- 1 root root 859472 May 20 18:31 System.Private.DataContractSerialization.dll
|
||||
2026-07-04T12:50:51.7727613Z -rwxr--r-- 1 root root 105808 May 20 18:28 System.Private.Uri.dll
|
||||
2026-07-04T12:50:51.7727769Z -rwxr--r-- 1 root root 153936 May 20 18:30 System.Private.Xml.Linq.dll
|
||||
2026-07-04T12:50:51.7727929Z -rwxr--r-- 1 root root 3106128 May 20 18:30 System.Private.Xml.dll
|
||||
2026-07-04T12:50:51.7728079Z -rwxr--r-- 1 root root 38224 May 20 18:31 System.Reflection.DispatchProxy.dll
|
||||
2026-07-04T12:50:51.7728248Z -rwxr--r-- 1 root root 15696 May 20 18:29 System.Reflection.Emit.ILGeneration.dll
|
||||
2026-07-04T12:50:51.7728406Z -rwxr--r-- 1 root root 15696 May 20 18:29 System.Reflection.Emit.Lightweight.dll
|
||||
2026-07-04T12:50:51.7728565Z -rwxr--r-- 1 root root 133456 May 20 18:29 System.Reflection.Emit.dll
|
||||
2026-07-04T12:50:51.7728728Z -rwxr--r-- 1 root root 15184 May 20 18:30 System.Reflection.Extensions.dll
|
||||
2026-07-04T12:50:51.7728907Z -rwxr--r-- 1 root root 503632 May 20 18:29 System.Reflection.Metadata.dll
|
||||
2026-07-04T12:50:51.7729052Z -rwxr--r-- 1 root root 15696 May 20 18:28 System.Reflection.Primitives.dll
|
||||
2026-07-04T12:50:51.7729143Z -rwxr--r-- 1 root root 24400 May 20 18:31 System.Reflection.TypeExtensions.dll
|
||||
2026-07-04T12:50:51.7729244Z -rwxr--r-- 1 root root 16208 May 20 18:31 System.Reflection.dll
|
||||
2026-07-04T12:50:51.7729337Z -rwxr--r-- 1 root root 15184 May 20 18:31 System.Resources.Reader.dll
|
||||
2026-07-04T12:50:51.7729450Z -rwxr--r-- 1 root root 15696 May 20 18:30 System.Resources.ResourceManager.dll
|
||||
2026-07-04T12:50:51.7729588Z -rwxr--r-- 1 root root 26960 May 20 18:31 System.Resources.Writer.dll
|
||||
2026-07-04T12:50:51.7729711Z -rwxr--r-- 1 root root 15184 May 20 18:30 System.Runtime.CompilerServices.Unsafe.dll
|
||||
2026-07-04T12:50:51.7729802Z -rwxr--r-- 1 root root 17232 May 20 18:30 System.Runtime.CompilerServices.VisualC.dll
|
||||
2026-07-04T12:50:51.7729888Z -rwxr--r-- 1 root root 17744 May 20 18:30 System.Runtime.Extensions.dll
|
||||
2026-07-04T12:50:51.7729981Z -rwxr--r-- 1 root root 15696 May 20 18:30 System.Runtime.Handles.dll
|
||||
2026-07-04T12:50:51.7730089Z -rwxr--r-- 1 root root 89936 May 20 18:31 System.Runtime.InteropServices.JavaScript.dll
|
||||
2026-07-04T12:50:51.7730186Z -rwxr--r-- 1 root root 15184 May 20 18:31 System.Runtime.InteropServices.RuntimeInformation.dll
|
||||
2026-07-04T12:50:51.7730278Z -rwxr--r-- 1 root root 64848 May 20 18:29 System.Runtime.InteropServices.dll
|
||||
2026-07-04T12:50:51.7730393Z -rwxr--r-- 1 root root 17232 May 20 18:29 System.Runtime.Intrinsics.dll
|
||||
2026-07-04T12:50:51.7730536Z -rwxr--r-- 1 root root 15696 May 20 18:29 System.Runtime.Loader.dll
|
||||
2026-07-04T12:50:51.7730680Z -rwxr--r-- 1 root root 145232 May 20 18:29 System.Runtime.Numerics.dll
|
||||
2026-07-04T12:50:51.7730916Z -rwxr--r-- 1 root root 65872 May 20 18:29 System.Runtime.Serialization.Formatters.dll
|
||||
2026-07-04T12:50:51.7731009Z -rwxr--r-- 1 root root 15696 May 20 18:31 System.Runtime.Serialization.Json.dll
|
||||
2026-07-04T12:50:51.7731092Z -rwxr--r-- 1 root root 23376 May 20 18:30 System.Runtime.Serialization.Primitives.dll
|
||||
2026-07-04T12:50:51.7731180Z -rwxr--r-- 1 root root 16720 May 20 18:31 System.Runtime.Serialization.Xml.dll
|
||||
2026-07-04T12:50:51.7731381Z -rwxr--r-- 1 root root 17232 May 20 18:31 System.Runtime.Serialization.dll
|
||||
2026-07-04T12:50:51.7731472Z -rwxr--r-- 1 root root 44880 May 20 18:28 System.Runtime.dll
|
||||
2026-07-04T12:50:51.7731568Z -rwxr--r-- 1 root root 58192 May 20 18:29 System.Security.AccessControl.dll
|
||||
2026-07-04T12:50:51.7731659Z -rwxr--r-- 1 root root 55120 May 20 18:29 System.Security.Claims.dll
|
||||
2026-07-04T12:50:51.7731742Z -rwxr--r-- 1 root root 17232 May 20 18:31 System.Security.Cryptography.Algorithms.dll
|
||||
2026-07-04T12:50:51.7731846Z -rwxr--r-- 1 root root 16208 May 20 18:31 System.Security.Cryptography.Cng.dll
|
||||
2026-07-04T12:50:51.7731929Z -rwxr--r-- 1 root root 16208 May 20 18:31 System.Security.Cryptography.Csp.dll
|
||||
2026-07-04T12:50:51.7732017Z -rwxr--r-- 1 root root 15696 May 20 18:31 System.Security.Cryptography.Encoding.dll
|
||||
2026-07-04T12:50:51.7732102Z -rwxr--r-- 1 root root 15696 May 20 18:31 System.Security.Cryptography.OpenSsl.dll
|
||||
2026-07-04T12:50:51.7732185Z -rwxr--r-- 1 root root 15696 May 20 18:31 System.Security.Cryptography.Primitives.dll
|
||||
2026-07-04T12:50:51.7732267Z -rwxr--r-- 1 root root 16720 May 20 18:31 System.Security.Cryptography.X509Certificates.dll
|
||||
2026-07-04T12:50:51.7732350Z -rwxr--r-- 1 root root 654160 May 20 18:31 System.Security.Cryptography.dll
|
||||
2026-07-04T12:50:51.7732431Z -rwxr--r-- 1 root root 37712 May 20 18:29 System.Security.Principal.Windows.dll
|
||||
2026-07-04T12:50:51.7732517Z -rwxr--r-- 1 root root 15184 May 20 18:31 System.Security.Principal.dll
|
||||
2026-07-04T12:50:51.7732604Z -rwxr--r-- 1 root root 15696 May 20 18:30 System.Security.SecureString.dll
|
||||
2026-07-04T12:50:51.7732693Z -rwxr--r-- 1 root root 18256 May 20 18:31 System.Security.dll
|
||||
2026-07-04T12:50:51.7732776Z -rwxr--r-- 1 root root 16720 May 20 18:31 System.ServiceModel.Web.dll
|
||||
2026-07-04T12:50:51.7732919Z -rwxr--r-- 1 root root 15696 May 20 18:31 System.ServiceProcess.dll
|
||||
2026-07-04T12:50:51.7733005Z -rwxr--r-- 1 root root 742736 May 20 18:29 System.Text.Encoding.CodePages.dll
|
||||
2026-07-04T12:50:51.7733087Z -rwxr--r-- 1 root root 15696 May 20 18:28 System.Text.Encoding.Extensions.dll
|
||||
2026-07-04T12:50:51.7733169Z -rwxr--r-- 1 root root 15696 May 20 18:30 System.Text.Encoding.dll
|
||||
2026-07-04T12:50:51.7733257Z -rwxr--r-- 1 root root 65872 May 20 18:32 System.Text.Encodings.Web.dll
|
||||
2026-07-04T12:50:51.7733337Z -rwxr--r-- 1 root root 649040 May 20 18:30 System.Text.Json.dll
|
||||
2026-07-04T12:50:51.7733484Z -rwxr--r-- 1 root root 384848 May 20 18:30 System.Text.RegularExpressions.dll
|
||||
2026-07-04T12:50:51.7733633Z -rwxr--r-- 1 root root 33616 May 20 18:29 System.Threading.AccessControl.dll
|
||||
2026-07-04T12:50:51.7733786Z -rwxr--r-- 1 root root 66384 May 20 18:29 System.Threading.Channels.dll
|
||||
2026-07-04T12:50:51.7733944Z -rwxr--r-- 1 root root 15696 May 20 18:28 System.Threading.Overlapped.dll
|
||||
2026-07-04T12:50:51.7734092Z -rwxr--r-- 1 root root 185680 May 20 18:29 System.Threading.Tasks.Dataflow.dll
|
||||
2026-07-04T12:50:51.7734257Z -rwxr--r-- 1 root root 15696 May 20 18:30 System.Threading.Tasks.Extensions.dll
|
||||
2026-07-04T12:50:51.7734393Z -rwxr--r-- 1 root root 61264 May 20 18:31 System.Threading.Tasks.Parallel.dll
|
||||
2026-07-04T12:50:51.7734482Z -rwxr--r-- 1 root root 16720 May 20 18:31 System.Threading.Tasks.dll
|
||||
2026-07-04T12:50:51.7734567Z -rwxr--r-- 1 root root 15696 May 20 18:28 System.Threading.Thread.dll
|
||||
2026-07-04T12:50:51.7734649Z -rwxr--r-- 1 root root 15696 May 20 18:28 System.Threading.ThreadPool.dll
|
||||
2026-07-04T12:50:51.7734728Z -rwxr--r-- 1 root root 15184 May 20 18:30 System.Threading.Timer.dll
|
||||
2026-07-04T12:50:51.7734807Z -rwxr--r-- 1 root root 44880 May 20 18:28 System.Threading.dll
|
||||
2026-07-04T12:50:51.7734908Z -rwxr--r-- 1 root root 175952 May 20 18:30 System.Transactions.Local.dll
|
||||
2026-07-04T12:50:51.7734993Z -rwxr--r-- 1 root root 16720 May 20 18:31 System.Transactions.dll
|
||||
2026-07-04T12:50:51.7735073Z -rwxr--r-- 1 root root 15696 May 20 18:30 System.ValueTuple.dll
|
||||
2026-07-04T12:50:51.7735153Z -rwxr--r-- 1 root root 30032 May 20 18:31 System.Web.HttpUtility.dll
|
||||
2026-07-04T12:50:51.7735268Z -rwxr--r-- 1 root root 15184 May 20 18:31 System.Web.dll
|
||||
2026-07-04T12:50:51.7735365Z -rwxr--r-- 1 root root 15696 May 20 18:31 System.Windows.dll
|
||||
2026-07-04T12:50:51.7735446Z -rwxr--r-- 1 root root 15696 May 20 18:31 System.Xml.Linq.dll
|
||||
2026-07-04T12:50:51.7735534Z -rwxr--r-- 1 root root 21840 May 20 18:30 System.Xml.ReaderWriter.dll
|
||||
2026-07-04T12:50:51.7735652Z -rwxr--r-- 1 root root 16208 May 20 18:31 System.Xml.Serialization.dll
|
||||
2026-07-04T12:50:51.7735784Z -rwxr--r-- 1 root root 15696 May 20 18:31 System.Xml.XDocument.dll
|
||||
2026-07-04T12:50:51.7735871Z -rwxr--r-- 1 root root 15696 May 20 18:31 System.Xml.XPath.XDocument.dll
|
||||
2026-07-04T12:50:51.7735952Z -rwxr--r-- 1 root root 15696 May 20 18:30 System.Xml.XPath.dll
|
||||
2026-07-04T12:50:51.7736041Z -rwxr--r-- 1 root root 15696 May 20 18:31 System.Xml.XmlDocument.dll
|
||||
2026-07-04T12:50:51.7736341Z -rwxr--r-- 1 root root 17744 May 20 18:31 System.Xml.XmlSerializer.dll
|
||||
2026-07-04T12:50:51.7736447Z -rwxr--r-- 1 root root 23376 May 20 18:31 System.Xml.dll
|
||||
2026-07-04T12:50:51.7736537Z -rwxr--r-- 1 root root 50000 May 20 18:32 System.dll
|
||||
2026-07-04T12:50:51.7736621Z -rw-r--r-- 1 root root 156672 Jul 4 12:49 TaxBaik.Application.dll
|
||||
2026-07-04T12:50:51.7736707Z -rw-r--r-- 1 root root 38468 Jul 4 12:49 TaxBaik.Application.pdb
|
||||
2026-07-04T12:50:51.7736794Z -rw-r--r-- 1 root root 37888 Jul 4 12:49 TaxBaik.Domain.dll
|
||||
2026-07-04T12:50:51.7736873Z -rw-r--r-- 1 root root 24100 Jul 4 12:49 TaxBaik.Domain.pdb
|
||||
2026-07-04T12:50:51.7736955Z -rw-r--r-- 1 root root 713216 Jul 4 12:50 TaxBaik.Web.Client.dll
|
||||
2026-07-04T12:50:51.7737039Z -rw-r--r-- 1 root root 373136 Jul 4 12:50 TaxBaik.Web.Client.pdb
|
||||
2026-07-04T12:50:51.7737139Z -rw-r--r-- 1 root root 2546 Jul 4 12:50 TaxBaik.Web.Client.runtimeconfig.json
|
||||
2026-07-04T12:50:51.7737338Z -rw-r--r-- 1 root root 1007340 Jul 4 12:50 TaxBaik.Web.Client.staticwebassets.endpoints.json
|
||||
2026-07-04T12:50:51.7737432Z -rw-r--r-- 1 root root 78064 Jul 4 12:50 TaxBaik.Web.Client.staticwebassets.runtime.json
|
||||
2026-07-04T12:50:51.7737525Z -rwxr--r-- 1 root root 16208 May 20 18:31 WindowsBase.dll
|
||||
2026-07-04T12:50:51.7737609Z -rwxr--r-- 1 root root 37898 May 20 18:42 dotnet.js
|
||||
2026-07-04T12:50:51.7737687Z -rwxr--r-- 1 root root 51818 May 20 18:42 dotnet.js.map
|
||||
2026-07-04T12:50:51.7737778Z -rwxr--r-- 1 root root 145050 May 20 18:43 dotnet.native.js
|
||||
2026-07-04T12:50:51.7737860Z -rwxr--r-- 1 root root 3002101 May 20 18:43 dotnet.native.wasm
|
||||
2026-07-04T12:50:51.7737942Z -rwxr--r-- 1 root root 198479 May 20 18:42 dotnet.runtime.js
|
||||
2026-07-04T12:50:51.7738024Z -rwxr--r-- 1 root root 276757 May 20 18:42 dotnet.runtime.js.map
|
||||
2026-07-04T12:50:51.7738104Z -rwxr--r-- 1 root root 956416 Apr 2 19:04 icudt_CJK.dat
|
||||
2026-07-04T12:50:51.7738182Z -rwxr--r-- 1 root root 550832 Apr 2 19:04 icudt_EFIGS.dat
|
||||
2026-07-04T12:50:51.7738259Z -rwxr--r-- 1 root root 1107168 Apr 2 19:04 icudt_no_CJK.dat
|
||||
2026-07-04T12:50:51.7738341Z -rwxr--r-- 1 root root 59728 May 20 18:31 mscorlib.dll
|
||||
2026-07-04T12:50:51.7738417Z -rwxr--r-- 1 root root 100688 May 20 18:32 netstandard.dll
|
||||
2026-07-04T12:50:51.7738496Z drwxr-xr-x 3 root root 4096 Jul 4 12:50 wwwroot
|
||||
2026-07-04T12:50:51.7740611Z total 4352
|
||||
2026-07-04T12:50:51.7740967Z drwxr-xr-x 8 root root 4096 Jul 4 12:50 .
|
||||
2026-07-04T12:50:51.7741083Z drwxr-xr-x 3 root root 4096 Jul 4 12:50 ..
|
||||
2026-07-04T12:50:51.7741169Z -rw-r--r-- 1 root root 196 Jul 4 12:50 .NETCoreApp,Version=v10.0.AssemblyAttributes.cs
|
||||
2026-07-04T12:50:51.7741346Z -rw-r--r-- 1 root root 137 Jul 4 12:50 EmbeddedAttribute.cs
|
||||
2026-07-04T12:50:51.7741437Z -rw-r--r-- 1 root root 0 Jul 4 12:50 TaxBaik..C36EE7CA.Up2Date
|
||||
2026-07-04T12:50:51.7741531Z -rw-r--r-- 1 root root 1008 Jul 4 12:50 TaxBaik.Web.Client.AssemblyInfo.cs
|
||||
2026-07-04T12:50:51.7741630Z -rw-r--r-- 1 root root 65 Jul 4 12:50 TaxBaik.Web.Client.AssemblyInfoInputs.cache
|
||||
2026-07-04T12:50:51.7741744Z -rw-r--r-- 1 root root 16355 Jul 4 12:50 TaxBaik.Web.Client.GeneratedMSBuildEditorConfig.editorconfig
|
||||
2026-07-04T12:50:51.7741848Z -rw-r--r-- 1 root root 433 Jul 4 12:50 TaxBaik.Web.Client.GlobalUsings.g.cs
|
||||
2026-07-04T12:50:51.7741978Z -rw-r--r-- 1 root root 0 Jul 4 12:50 TaxBaik.Web.Client.MvcApplicationPartsAssemblyInfo.cache
|
||||
2026-07-04T12:50:51.7742164Z -rw-r--r-- 1 root root 27329 Jul 4 12:50 TaxBaik.Web.Client.assets.cache
|
||||
2026-07-04T12:50:51.7742340Z -rw-r--r-- 1 root root 20456 Jul 4 12:50 TaxBaik.Web.Client.csproj.AssemblyReference.cache
|
||||
2026-07-04T12:50:51.7742497Z -rw-r--r-- 1 root root 65 Jul 4 12:50 TaxBaik.Web.Client.csproj.CoreCompileInputs.cache
|
||||
2026-07-04T12:50:51.7742654Z -rw-r--r-- 1 root root 136894 Jul 4 12:50 TaxBaik.Web.Client.csproj.FileListAbsolute.txt
|
||||
2026-07-04T12:50:51.7742893Z -rw-r--r-- 1 root root 713216 Jul 4 12:50 TaxBaik.Web.Client.dll
|
||||
2026-07-04T12:50:51.7743120Z -rw-r--r-- 1 root root 65 Jul 4 12:50 TaxBaik.Web.Client.genruntimeconfig.cache
|
||||
2026-07-04T12:50:51.7743334Z -rw-r--r-- 1 root root 373136 Jul 4 12:50 TaxBaik.Web.Client.pdb
|
||||
2026-07-04T12:50:51.7743742Z -rw-r--r-- 1 root root 276 Jul 4 12:50 ValidatableTypeAttribute.cs
|
||||
2026-07-04T12:50:51.7743930Z -rw-r--r-- 1 root root 3 Jul 4 12:50 blazor.build.boot-extension.json
|
||||
2026-07-04T12:50:51.7744151Z drwxr-xr-x 2 root root 20480 Jul 4 12:50 compressed
|
||||
2026-07-04T12:50:51.7744319Z -rw-r--r-- 1 root root 93392 Jul 4 12:50 dotnet.js
|
||||
2026-07-04T12:50:51.7744459Z -rw-r--r-- 1 root root 276706 Jul 4 12:50 rbcswa.dswa.cache.json
|
||||
2026-07-04T12:50:51.7744599Z drwxr-xr-x 2 root root 4096 Jul 4 12:50 ref
|
||||
2026-07-04T12:50:51.7744731Z drwxr-xr-x 2 root root 4096 Jul 4 12:50 refint
|
||||
2026-07-04T12:50:51.7744901Z -rw-r--r-- 1 root root 322 Jul 4 12:50 rjimswa.dswa.cache.json
|
||||
2026-07-04T12:50:51.7745034Z -rw-r--r-- 1 root root 3404 Jul 4 12:50 rjsmcshtml.dswa.cache.json
|
||||
2026-07-04T12:50:51.7745177Z -rw-r--r-- 1 root root 3404 Jul 4 12:50 rjsmrazor.dswa.cache.json
|
||||
2026-07-04T12:50:51.7745357Z -rw-r--r-- 1 root root 4173 Jul 4 12:50 rpswa.dswa.cache.json
|
||||
2026-07-04T12:50:51.7745511Z drwxr-xr-x 2 root root 4096 Jul 4 12:50 staticwebassets
|
||||
2026-07-04T12:50:51.7745658Z -rw-r--r-- 1 root root 1007340 Jul 4 12:50 staticwebassets.build.endpoints.json
|
||||
2026-07-04T12:50:51.7745816Z -rw-r--r-- 1 root root 1564906 Jul 4 12:50 staticwebassets.build.json
|
||||
2026-07-04T12:50:51.7746022Z -rw-r--r-- 1 root root 44 Jul 4 12:50 staticwebassets.build.json.cache
|
||||
2026-07-04T12:50:51.7804929Z -rw-r--r-- 1 root root 78064 Jul 4 12:50 staticwebassets.development.json
|
||||
2026-07-04T12:50:51.7805097Z -rw-r--r-- 1 root root 0 Jul 4 12:50 swae.build.ex.cache
|
||||
2026-07-04T12:50:51.7805385Z drwxr-xr-x 2 root root 4096 Jul 4 12:50 tmp-webcil
|
||||
2026-07-04T12:50:51.7805479Z drwxr-xr-x 2 root root 20480 Jul 4 12:50 webcil
|
||||
2026-07-04T12:51:56.0836642Z ✓ Publish Web elapsed: 86s
|
||||
2026-07-04T12:51:56.0856804Z -rw-r--r-- 1 root root 2.2M Jul 4 12:51 ./publish-logs/publish-web.binlog
|
||||
2026-07-04T12:51:56.1993997Z ::group::Run set -e
|
||||
2026-07-04T12:51:56.1994446Z set -e
|
||||
2026-07-04T12:51:56.1994570Z mkdir -p ./publish-logs
|
||||
2026-07-04T12:51:56.1994674Z # Proxy is not part of the solution restore graph, so restore it once
|
||||
2026-07-04T12:51:56.1994784Z # here before publishing to avoid NETSDK1004 in CI.
|
||||
2026-07-04T12:51:56.1994877Z dotnet restore src/TaxBaik.Proxy/
|
||||
2026-07-04T12:51:56.1994953Z dotnet build src/TaxBaik.Proxy/TaxBaik.Proxy.csproj -c Release --no-restore
|
||||
2026-07-04T12:51:56.1995040Z start=$(date +%s)
|
||||
2026-07-04T12:51:56.1995115Z dotnet publish src/TaxBaik.Proxy/ \
|
||||
2026-07-04T12:51:56.1995200Z -c Release \
|
||||
2026-07-04T12:51:56.1995275Z -o ./publish/proxy \
|
||||
2026-07-04T12:51:56.1995345Z --no-restore \
|
||||
2026-07-04T12:51:56.1995433Z --no-build \
|
||||
2026-07-04T12:51:56.1995766Z -p:PublishReadyToRun=false \
|
||||
2026-07-04T12:51:56.1995969Z -p:PerformanceSummary=true \
|
||||
2026-07-04T12:51:56.1996302Z -clp:Summary \
|
||||
2026-07-04T12:51:56.1996496Z -bl:./publish-logs/publish-proxy.binlog
|
||||
2026-07-04T12:51:56.1996597Z end=$(date +%s)
|
||||
2026-07-04T12:51:56.1996672Z echo "✓ Publish Proxy elapsed: $((end - start))s"
|
||||
2026-07-04T12:51:56.1996955Z ls -lh ./publish-logs/publish-proxy.binlog
|
||||
2026-07-04T12:51:56.1997163Z shell: bash --noprofile --norc -e -o pipefail {0}
|
||||
2026-07-04T12:51:56.1997314Z ::endgroup::
|
||||
2026-07-04T12:51:57.1407533Z Determining projects to restore...
|
||||
2026-07-04T12:51:57.6632131Z Restored /workspace/***/taxbaik/src/TaxBaik.Proxy/TaxBaik.Proxy.csproj (in 125 ms).
|
||||
2026-07-04T12:51:58.9747864Z TaxBaik.Proxy -> /workspace/***/taxbaik/src/TaxBaik.Proxy/bin/Release/net10.0/TaxBaik.Proxy.dll
|
||||
2026-07-04T12:51:58.9938437Z
|
||||
2026-07-04T12:51:58.9947013Z Build succeeded.
|
||||
2026-07-04T12:51:58.9949917Z 0 Warning(s)
|
||||
2026-07-04T12:51:58.9951624Z 0 Error(s)
|
||||
2026-07-04T12:51:58.9954373Z
|
||||
2026-07-04T12:51:58.9954554Z Time Elapsed 00:00:01.05
|
||||
2026-07-04T12:52:00.0446907Z TaxBaik.Proxy -> /workspace/***/taxbaik/publish/proxy/
|
||||
2026-07-04T12:52:00.0565606Z
|
||||
2026-07-04T12:52:00.0583909Z Build succeeded.
|
||||
2026-07-04T12:52:00.0584436Z 0 Warning(s)
|
||||
2026-07-04T12:52:00.0584681Z 0 Error(s)
|
||||
2026-07-04T12:52:00.0584764Z
|
||||
2026-07-04T12:52:00.0584841Z Time Elapsed 00:00:00.64
|
||||
2026-07-04T12:52:00.0903373Z ✓ Publish Proxy elapsed: 1s
|
||||
2026-07-04T12:52:00.0915796Z -rw-r--r-- 1 root root 335K Jul 4 12:52 ./publish-logs/publish-proxy.binlog
|
||||
2026-07-04T12:52:00.2477651Z ::group::Run set -e
|
||||
2026-07-04T12:52:00.2478168Z set -e
|
||||
2026-07-04T12:52:00.2478625Z JWT_SECRET_KEY="***"
|
||||
2026-07-04T12:52:00.2478852Z TELEGRAM_BOT_TOKEN="***"
|
||||
2026-07-04T12:52:00.2478963Z TELEGRAM_CHAT_ID="***"
|
||||
2026-07-04T12:52:00.2479117Z TELEGRAM_INQUIRY_CHAT_ID=""
|
||||
2026-07-04T12:52:00.2479461Z TELEGRAM_SYSTEM_CHAT_ID=""
|
||||
2026-07-04T12:52:00.2479762Z [ -z "$JWT_SECRET_KEY" ] && { echo "Missing TAXBAIK_JWT_SECRET_KEY" >&2; exit 1; }
|
||||
2026-07-04T12:52:00.2479916Z [ -z "$TELEGRAM_BOT_TOKEN" ] && { echo "Missing TAXBAIK_TELEGRAM_BOT_TOKEN" >&2; exit 1; }
|
||||
2026-07-04T12:52:00.2480078Z [ -z "$TELEGRAM_CHAT_ID" ] && { echo "Missing TAXBAIK_TELEGRAM_CHAT_ID" >&2; exit 1; }
|
||||
2026-07-04T12:52:00.2480551Z [ -z "$TELEGRAM_INQUIRY_CHAT_ID" ] && TELEGRAM_INQUIRY_CHAT_ID="$TELEGRAM_CHAT_ID"
|
||||
2026-07-04T12:52:00.2480669Z [ -z "$TELEGRAM_SYSTEM_CHAT_ID" ] && TELEGRAM_SYSTEM_CHAT_ID="-5585148480"
|
||||
2026-07-04T12:52:00.2481140Z JWT_SECRET_KEY="$JWT_SECRET_KEY" \
|
||||
2026-07-04T12:52:00.2481420Z TELEGRAM_BOT_TOKEN="$TELEGRAM_BOT_TOKEN" \
|
||||
2026-07-04T12:52:00.2481513Z TELEGRAM_CHAT_ID="$TELEGRAM_CHAT_ID" \
|
||||
2026-07-04T12:52:00.2481588Z TELEGRAM_INQUIRY_CHAT_ID="$TELEGRAM_INQUIRY_CHAT_ID" \
|
||||
2026-07-04T12:52:00.2482377Z TELEGRAM_SYSTEM_CHAT_ID="$TELEGRAM_SYSTEM_CHAT_ID" \
|
||||
2026-07-04T12:52:00.2482488Z python3 -c '
|
||||
2026-07-04T12:52:00.2482577Z import json, os, pathlib
|
||||
2026-07-04T12:52:00.2482665Z pathlib.Path("./publish/appsettings.Production.json").write_text(
|
||||
2026-07-04T12:52:00.2483035Z json.dumps({
|
||||
2026-07-04T12:52:00.2483310Z "Jwt": {"SecretKey": os.environ["JWT_SECRET_KEY"]},
|
||||
2026-07-04T12:52:00.2483405Z "Telegram": {
|
||||
2026-07-04T12:52:00.2483477Z "BotToken": os.environ["TELEGRAM_BOT_TOKEN"],
|
||||
2026-07-04T12:52:00.2483559Z "ChatId": os.environ["TELEGRAM_CHAT_ID"],
|
||||
2026-07-04T12:52:00.2483634Z "InquiryChatId": os.environ["TELEGRAM_INQUIRY_CHAT_ID"],
|
||||
2026-07-04T12:52:00.2483960Z "SystemChatId": os.environ["TELEGRAM_SYSTEM_CHAT_ID"]
|
||||
2026-07-04T12:52:00.2484230Z }
|
||||
2026-07-04T12:52:00.2484311Z }, ensure_ascii=False, indent=2),
|
||||
2026-07-04T12:52:00.2484386Z encoding="utf-8"
|
||||
2026-07-04T12:52:00.2484471Z )'
|
||||
2026-07-04T12:52:00.2484543Z test -s ./publish/appsettings.Production.json || { echo "appsettings.Production.json is empty" >&2; exit 1; }
|
||||
2026-07-04T12:52:00.2484866Z shell: bash --noprofile --norc -e -o pipefail {0}
|
||||
2026-07-04T12:52:00.2485155Z ::endgroup::
|
||||
2026-07-04T12:52:00.5025133Z ::group::Run test -s ./publish/proxy/TaxBaik.Proxy.dll || { echo "TaxBaik.Proxy.dll missing" >&2; exit 1; }
|
||||
2026-07-04T12:52:00.5025722Z test -s ./publish/proxy/TaxBaik.Proxy.dll || { echo "TaxBaik.Proxy.dll missing" >&2; exit 1; }
|
||||
2026-07-04T12:52:00.5025922Z test -s ./publish/proxy/TaxBaik.Proxy.runtimeconfig.json || { echo "TaxBaik.Proxy.runtimeconfig.json missing" >&2; exit 1; }
|
||||
2026-07-04T12:52:00.5026227Z shell: bash --noprofile --norc -e -o pipefail {0}
|
||||
2026-07-04T12:52:00.5026398Z ::endgroup::
|
||||
2026-07-04T12:52:00.6764369Z ::group::Run mkdir -p ./publish/db && cp -r db/migrations ./publish/db/ || true
|
||||
2026-07-04T12:52:00.6764765Z mkdir -p ./publish/db && cp -r db/migrations ./publish/db/ || true
|
||||
2026-07-04T12:52:00.6764895Z shell: bash --noprofile --norc -e -o pipefail {0}
|
||||
2026-07-04T12:52:00.6765004Z ::endgroup::
|
||||
2026-07-04T12:52:00.8728261Z ::group::Run bash scripts/validate_migrations.sh db/migrations
|
||||
2026-07-04T12:52:00.8728660Z bash scripts/validate_migrations.sh db/migrations
|
||||
2026-07-04T12:52:00.8728905Z shell: bash --noprofile --norc -e -o pipefail {0}
|
||||
2026-07-04T12:52:00.8729177Z ::endgroup::
|
||||
2026-07-04T12:52:00.9538985Z Duplicate version check passed.
|
||||
2026-07-04T12:52:01.0855583Z ::group::Run bash scripts/validate_kst_timestamps.sh
|
||||
2026-07-04T12:52:01.0856340Z bash scripts/validate_kst_timestamps.sh
|
||||
2026-07-04T12:52:01.0856747Z shell: bash --noprofile --norc -e -o pipefail {0}
|
||||
2026-07-04T12:52:01.0856924Z ::endgroup::
|
||||
2026-07-04T12:52:01.1537519Z KST timestamp harness passed.
|
||||
2026-07-04T12:52:01.3082211Z ::group::Run COMMIT_HASH=$(git rev-parse --short HEAD)
|
||||
2026-07-04T12:52:01.3082595Z COMMIT_HASH=$(git rev-parse --short HEAD)
|
||||
2026-07-04T12:52:01.3082713Z BUILD_TIME=$(TZ=Asia/Seoul date +'%Y-%m-%d %H:%M:%S KST')
|
||||
2026-07-04T12:52:01.3082807Z mkdir -p ./publish/wwwroot
|
||||
2026-07-04T12:52:01.3082952Z printf '{\n "version": "%s",\n "built": "%s"\n}\n' "$COMMIT_HASH" "$BUILD_TIME" > ./publish/wwwroot/version.json
|
||||
2026-07-04T12:52:01.3083148Z echo "✓ Build: $COMMIT_HASH @ $BUILD_TIME"
|
||||
2026-07-04T12:52:01.3083277Z shell: bash --noprofile --norc -e -o pipefail {0}
|
||||
2026-07-04T12:52:01.3083386Z ::endgroup::
|
||||
2026-07-04T12:52:01.3712948Z ✓ Build: dc86ccf @ 2026-07-04 21:52:01 KST
|
||||
2026-07-04T12:52:01.4848269Z ::group::Run mkdir -p ~/.ssh
|
||||
2026-07-04T12:52:01.4849031Z mkdir -p ~/.ssh
|
||||
2026-07-04T12:52:01.4849211Z SSH_KEY_B64="***"
|
||||
2026-07-04T12:52:01.4849414Z SSH_KEY_RAW="***"
|
||||
2026-07-04T12:52:01.4849576Z if [ -n "$SSH_KEY_B64" ]; then
|
||||
2026-07-04T12:52:01.4850063Z printf '%s' "$SSH_KEY_B64" | base64 -d > ~/.ssh/id_ed25519
|
||||
2026-07-04T12:52:01.4850225Z elif [ -n "$SSH_KEY_RAW" ]; then
|
||||
2026-07-04T12:52:01.4850362Z if printf '%s' "$SSH_KEY_RAW" | grep -q 'BEGIN .*PRIVATE KEY'; then
|
||||
2026-07-04T12:52:01.4850943Z printf '%b\n' "$SSH_KEY_RAW" > ~/.ssh/id_ed25519
|
||||
2026-07-04T12:52:01.4851190Z else
|
||||
2026-07-04T12:52:01.4851357Z printf '%s' "$SSH_KEY_RAW" | base64 -d > ~/.ssh/id_ed25519
|
||||
2026-07-04T12:52:01.4851809Z fi
|
||||
2026-07-04T12:52:01.4851949Z else
|
||||
2026-07-04T12:52:01.4852141Z echo "Missing DEPLOY_SSH_KEY_B64 or DEPLOY_SSH_KEY" >&2; exit 1
|
||||
2026-07-04T12:52:01.4852495Z fi
|
||||
2026-07-04T12:52:01.4852617Z sed -i 's/\r$//' ~/.ssh/id_ed25519
|
||||
2026-07-04T12:52:01.4852755Z chmod 600 ~/.ssh/id_ed25519
|
||||
2026-07-04T12:52:01.4852886Z ssh-keyscan -H "***" >> ~/.ssh/known_hosts 2>/dev/null || true
|
||||
2026-07-04T12:52:01.4853093Z shell: bash --noprofile --norc -e -o pipefail {0}
|
||||
2026-07-04T12:52:01.4853480Z ::endgroup::
|
||||
2026-07-04T12:52:01.9503887Z ::group::Run cp deploy_gb.sh ./publish/deploy_gb.sh
|
||||
2026-07-04T12:52:01.9504389Z cp deploy_gb.sh ./publish/deploy_gb.sh
|
||||
2026-07-04T12:52:01.9504506Z mkdir -p ./publish/scripts
|
||||
2026-07-04T12:52:01.9504591Z cp scripts/validate_migrations.sh ./publish/scripts/validate_migrations.sh
|
||||
2026-07-04T12:52:01.9504690Z chmod +x ./publish/scripts/validate_migrations.sh
|
||||
2026-07-04T12:52:01.9504769Z tar -czf taxbaik_deploy.tgz -C ./publish .
|
||||
2026-07-04T12:52:01.9504850Z echo "✓ Package: $(du -sh taxbaik_deploy.tgz | cut -f1)"
|
||||
2026-07-04T12:52:01.9504949Z shell: bash --noprofile --norc -e -o pipefail {0}
|
||||
2026-07-04T12:52:01.9505044Z ::endgroup::
|
||||
2026-07-04T12:52:04.4650255Z ✓ Package: 23M
|
||||
2026-07-04T12:52:04.5749245Z ::group::Run set -e
|
||||
2026-07-04T12:52:04.5749613Z set -e
|
||||
2026-07-04T12:52:04.5749749Z export TAXBAIK_DEPLOY_FROM_CI=1
|
||||
2026-07-04T12:52:04.5749842Z TIMESTAMP=$(TZ=Asia/Seoul date +%Y%m%d_%H%M%S)
|
||||
2026-07-04T12:52:04.5749941Z COMMIT=$(git rev-parse --short HEAD)
|
||||
2026-07-04T12:52:04.5750025Z DEPLOY_HOST="***"
|
||||
2026-07-04T12:52:04.5750112Z DEPLOY_USER="***"
|
||||
2026-07-04T12:52:04.5750193Z TELEGRAM_BOT_TOKEN="***"
|
||||
2026-07-04T12:52:04.5750278Z TELEGRAM_SYSTEM_CHAT_ID=""
|
||||
2026-07-04T12:52:04.5750351Z TELEGRAM_CHAT_ID="${TELEGRAM_SYSTEM_CHAT_ID:--5585148480}"
|
||||
2026-07-04T12:52:04.5750434Z
|
||||
2026-07-04T12:52:04.5750499Z send_telegram() {
|
||||
2026-07-04T12:52:04.5750573Z local text="$1"
|
||||
2026-07-04T12:52:04.5750651Z if [ -z "$TELEGRAM_BOT_TOKEN" ]; then
|
||||
2026-07-04T12:52:04.5750957Z echo "Skipping Telegram notification: missing TAXBAIK_TELEGRAM_BOT_TOKEN" >&2
|
||||
2026-07-04T12:52:04.5751063Z return 0
|
||||
2026-07-04T12:52:04.5751137Z fi
|
||||
2026-07-04T12:52:04.5751205Z
|
||||
2026-07-04T12:52:04.5751268Z curl -fsS -X POST "https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/sendMessage" \
|
||||
2026-07-04T12:52:04.5751359Z -d "chat_id=${TELEGRAM_CHAT_ID}" \
|
||||
2026-07-04T12:52:04.5751470Z --data-urlencode "text=${text}" \
|
||||
2026-07-04T12:52:04.5751545Z -d "parse_mode=HTML" >/dev/null || true
|
||||
2026-07-04T12:52:04.5751619Z }
|
||||
2026-07-04T12:52:04.5751687Z
|
||||
2026-07-04T12:52:04.5751744Z notify_failure() {
|
||||
2026-07-04T12:52:04.5751817Z local exit_code=$?
|
||||
2026-07-04T12:52:04.5751888Z send_telegram "❌ <b>TaxBaik 배포 실패</b>
|
||||
2026-07-04T12:52:04.5751985Z
|
||||
2026-07-04T12:52:04.5752046Z 커밋: <code>${COMMIT}</code>
|
||||
2026-07-04T12:52:04.5752122Z 시간: <code>${TIMESTAMP}</code>
|
||||
2026-07-04T12:52:04.5752192Z 단계: CI/CD deploy"
|
||||
2026-07-04T12:52:04.5752262Z exit "$exit_code"
|
||||
2026-07-04T12:52:04.5752330Z }
|
||||
2026-07-04T12:52:04.5752395Z
|
||||
2026-07-04T12:52:04.5752476Z trap notify_failure ERR
|
||||
2026-07-04T12:52:04.5752547Z
|
||||
2026-07-04T12:52:04.5752607Z echo "=== Deploying TaxBaik $COMMIT ($TIMESTAMP) ==="
|
||||
2026-07-04T12:52:04.5752682Z
|
||||
2026-07-04T12:52:04.5752745Z # 1. 아티팩트 업로드
|
||||
2026-07-04T12:52:04.5752819Z scp -i ~/.ssh/id_ed25519 -o StrictHostKeyChecking=yes \
|
||||
2026-07-04T12:52:04.5752898Z taxbaik_deploy.tgz "$DEPLOY_USER@$DEPLOY_HOST:/tmp/taxbaik_${TIMESTAMP}.tgz"
|
||||
2026-07-04T12:52:04.5752988Z
|
||||
2026-07-04T12:52:04.5753051Z # 2. 서버에서 배포 + 헬스 체크 (SSH 1회 연결로 처리, Green-Blue 지원)
|
||||
2026-07-04T12:52:04.5753136Z ssh -i ~/.ssh/id_ed25519 -o StrictHostKeyChecking=yes \
|
||||
2026-07-04T12:52:04.5753543Z -o ServerAliveInterval=10 \
|
||||
2026-07-04T12:52:04.5753625Z "$DEPLOY_USER@$DEPLOY_HOST" TAXBAIK_DEPLOY_FROM_CI=1 bash << REMOTE
|
||||
2026-07-04T12:52:04.5753709Z set -e
|
||||
2026-07-04T12:52:04.5753788Z DEPLOY_HOME="/home/***"
|
||||
2026-07-04T12:52:04.5753873Z DEPLOY_DIR="\$DEPLOY_HOME/deployments/taxbaik_${TIMESTAMP}"
|
||||
2026-07-04T12:52:04.5753953Z TIMESTAMP="${TIMESTAMP}"
|
||||
2026-07-04T12:52:04.5754024Z COMMIT="${COMMIT}"
|
||||
2026-07-04T12:52:04.5754093Z
|
||||
2026-07-04T12:52:04.5754169Z echo "--- [1/5] 압축 해제 ---"
|
||||
2026-07-04T12:52:04.5754243Z mkdir -p "\$DEPLOY_DIR"
|
||||
2026-07-04T12:52:04.5754318Z tar -xzf "/tmp/taxbaik_\${TIMESTAMP}.tgz" -C "\$DEPLOY_DIR"
|
||||
2026-07-04T12:52:04.5754407Z rm -f "/tmp/taxbaik_\${TIMESTAMP}.tgz"
|
||||
2026-07-04T12:52:04.5754475Z
|
||||
2026-07-04T12:52:04.5754537Z echo "--- [2/5] 운영 설정 검증 ---"
|
||||
2026-07-04T12:52:04.5754611Z test -s "\$DEPLOY_DIR/appsettings.Production.json" \
|
||||
2026-07-04T12:52:04.5754687Z || { echo "FATAL: appsettings.Production.json 없음" >&2; exit 1; }
|
||||
2026-07-04T12:52:04.5754769Z test -s "\$DEPLOY_DIR/proxy/TaxBaik.Proxy.dll" \
|
||||
2026-07-04T12:52:04.5754845Z || { echo "FATAL: TaxBaik.Proxy.dll 없음" >&2; exit 1; }
|
||||
2026-07-04T12:52:04.5754928Z
|
||||
2026-07-04T12:52:04.5754989Z echo "--- [3/5] 마이그레이션 사전 검증 ---"
|
||||
2026-07-04T12:52:04.5755073Z test -x "\$DEPLOY_DIR/scripts/validate_migrations.sh" \
|
||||
2026-07-04T12:52:04.5755143Z || { echo "FATAL: validate_migrations.sh 없음" >&2; exit 1; }
|
||||
2026-07-04T12:52:04.5755220Z "\$DEPLOY_DIR/scripts/validate_migrations.sh" "\$DEPLOY_DIR/db/migrations" "postgresql://taxbaik:taxbaik123@localhost:5432/taxbaikdb"
|
||||
2026-07-04T12:52:04.5755316Z
|
||||
2026-07-04T12:52:04.5755383Z echo "--- [4/5] Green-Blue 배포 실행 ---"
|
||||
2026-07-04T12:52:04.5755479Z chmod +x "\$DEPLOY_DIR/deploy_gb.sh"
|
||||
2026-07-04T12:52:04.5755550Z "\$DEPLOY_DIR/deploy_gb.sh" "\$DEPLOY_DIR"
|
||||
2026-07-04T12:52:04.5755622Z
|
||||
2026-07-04T12:52:04.5755686Z echo "--- [4.5/5] Nginx 설정 검증 ---"
|
||||
2026-07-04T12:52:04.5755768Z # 실제 로드되는 파일은 sites-enabled/의 심볼릭 링크 대상만이다.
|
||||
2026-07-04T12:52:04.5755850Z # sites-available/에 다른 파일(예: default)이 있어도 sites-enabled에
|
||||
2026-07-04T12:52:04.5755945Z # 링크되어 있지 않으면 nginx는 그 내용을 절대 읽지 않는다.
|
||||
2026-07-04T12:52:04.5756036Z NGINX_CONF=""
|
||||
2026-07-04T12:52:04.5756277Z for f in /etc/nginx/sites-enabled/*; do
|
||||
2026-07-04T12:52:04.5756361Z if [ -e "\$f" ] && grep -q "location /taxbaik" "\$f" 2>/dev/null; then
|
||||
2026-07-04T12:52:04.5756482Z NGINX_CONF=\$(readlink -f "\$f")
|
||||
2026-07-04T12:52:04.5756667Z break
|
||||
2026-07-04T12:52:04.5756846Z fi
|
||||
2026-07-04T12:52:04.5756964Z done
|
||||
2026-07-04T12:52:04.5757108Z
|
||||
2026-07-04T12:52:04.5757224Z if [ -z "\$NGINX_CONF" ]; then
|
||||
2026-07-04T12:52:04.5757368Z echo "❌ FATAL: sites-enabled/ 안에서 'location /taxbaik'를 정의한 파일을 찾을 수 없음" >&2
|
||||
2026-07-04T12:52:04.5757523Z echo " sites-available/에 파일을 수정해도 sites-enabled에 심볼릭 링크되어 있지 않으면 반영되지 않는다." >&2
|
||||
2026-07-04T12:52:04.5757636Z exit 1
|
||||
2026-07-04T12:52:04.5757715Z fi
|
||||
2026-07-04T12:52:04.5757781Z echo "실제 로드되는 설정 파일: \$NGINX_CONF"
|
||||
2026-07-04T12:52:04.5757891Z
|
||||
2026-07-04T12:52:04.5758224Z # 불변식: '/'와 '/taxbaik' location 모두 반드시 127.0.0.1:5001 (TaxBaik.Proxy)을
|
||||
2026-07-04T12:52:04.5758411Z # 가리켜야 한다. 5003/5004를 직접 하드코딩하면 Green-Blue 포트 전환 시
|
||||
2026-07-04T12:52:04.5758502Z # 죽은 포트를 가리키게 되어 502/404가 발생한다 (실제 발생했던 장애).
|
||||
2026-07-04T12:52:04.5758585Z if grep -E "proxy_pass\s+http://127\.0\.0\.1:500[34]" "\$NGINX_CONF" > /dev/null 2>&1; then
|
||||
2026-07-04T12:52:04.5758688Z echo "❌ FATAL: \$NGINX_CONF 가 포트 5003/5004를 직접 참조함 (Green-Blue 전환 시 502 발생)" >&2
|
||||
2026-07-04T12:52:04.5758790Z echo " 수정: sudo sed -i 's|127.0.0.1:500[34]|127.0.0.1:5001|g' \$NGINX_CONF && sudo nginx -t && sudo systemctl reload nginx" >&2
|
||||
2026-07-04T12:52:04.5758903Z exit 1
|
||||
2026-07-04T12:52:04.5758978Z fi
|
||||
2026-07-04T12:52:04.5759041Z
|
||||
2026-07-04T12:52:04.5759104Z # proxy_pass에 URI(끝 슬래시)가 있으면 nginx가 요청 경로를 재작성하며,
|
||||
2026-07-04T12:52:04.5759451Z # location 접두사와 슬래시 개수가 안 맞으면 백엔드로 이중 슬래시(//)가
|
||||
2026-07-04T12:52:04.5759539Z # 전달되어 404가 발생한다 (실제 발생했던 장애). 접두사 location에서는
|
||||
2026-07-04T12:52:04.5759631Z # proxy_pass에 URI를 붙이지 않는다.
|
||||
2026-07-04T12:52:04.5759730Z if grep -E "location\s+/taxbaik\s*\{" -A 1 "\$NGINX_CONF" | grep -qE "proxy_pass\s+http://127\.0\.0\.1:5001/;"; then
|
||||
2026-07-04T12:52:04.5759822Z echo "❌ FATAL: location /taxbaik 의 proxy_pass 에 불필요한 trailing slash가 있음 (이중 슬래시로 인한 404 위험)" >&2
|
||||
2026-07-04T12:52:04.5759913Z exit 1
|
||||
2026-07-04T12:52:04.5759981Z fi
|
||||
2026-07-04T12:52:04.5760047Z
|
||||
2026-07-04T12:52:04.5760121Z echo "✓ Nginx 설정 검증 통과 (실제 로드 파일 확인 + 포트 5001 고정 + trailing slash 없음)"
|
||||
2026-07-04T12:52:04.5760214Z
|
||||
2026-07-04T12:52:04.5760285Z echo "--- [5/5] 헬스 체크 (최대 60초) ---"
|
||||
2026-07-04T12:52:04.5760366Z ATTEMPTS=20
|
||||
2026-07-04T12:52:04.5760433Z for i in \$(seq 1 \$ATTEMPTS); do
|
||||
2026-07-04T12:52:04.5760506Z STATUS=\$(curl -sf -o /dev/null -w '%{http_code}' http://127.0.0.1:5001/taxbaik/healthz 2>/dev/null || echo "000")
|
||||
2026-07-04T12:52:04.5760596Z if [ "\$STATUS" = "200" ]; then
|
||||
2026-07-04T12:52:04.5760678Z echo "✓ [1/6] 헬스 체크 완료"
|
||||
2026-07-04T12:52:04.5760917Z
|
||||
2026-07-04T12:52:04.5760986Z # 검증 1: 메인 페이지 로드. curl -L + -w 는 리다이렉트 체인의 상태코드를
|
||||
2026-07-04T12:52:04.5761079Z # 이어붙이므로, 첫 응답 코드만 받아 200/3xx를 허용한다.
|
||||
2026-07-04T12:52:04.5761159Z MAIN_STATUS=\$(curl -fsS -o /dev/null -w '%{http_code}' http://127.0.0.1:5001/taxbaik/ 2>/dev/null || echo "000")
|
||||
2026-07-04T12:52:04.5761249Z if ! printf '%s' "\$MAIN_STATUS" | grep -Eq '^(200|301|302|307|308)$'; then
|
||||
2026-07-04T12:52:04.5761333Z echo "❌ 메인 페이지 로드 실패 (상태: \$MAIN_STATUS)" >&2
|
||||
2026-07-04T12:52:04.5761415Z exit 1
|
||||
2026-07-04T12:52:04.5761482Z fi
|
||||
2026-07-04T12:52:04.5761561Z echo "✓ [2/6] 메인 페이지 로드 완료"
|
||||
2026-07-04T12:52:04.5761647Z
|
||||
2026-07-04T12:52:04.5761724Z # 검증 2: CSS 파일 로드
|
||||
2026-07-04T12:52:04.5761804Z CSS_STATUS=\$(curl -sf -o /dev/null -w '%{http_code}' http://127.0.0.1:5001/taxbaik/css/admin.css 2>/dev/null || echo "000")
|
||||
2026-07-04T12:52:04.5761955Z if [ "\$CSS_STATUS" != "200" ]; then
|
||||
2026-07-04T12:52:04.5762120Z echo "❌ CSS 파일 로드 실패 (상태: \$CSS_STATUS)" >&2
|
||||
2026-07-04T12:52:04.5762317Z exit 1
|
||||
2026-07-04T12:52:04.5762451Z fi
|
||||
2026-07-04T12:52:04.5762570Z echo "✓ [3/6] CSS 파일 로드 완료"
|
||||
2026-07-04T12:52:04.5762691Z
|
||||
2026-07-04T12:52:04.5762793Z # 검증 3: 버전 정보. 파일 존재만 보면 5001이 잘못된 구 프로세스를
|
||||
2026-07-04T12:52:04.5762940Z # 가리키는 장애를 놓치므로, HTTP 응답이 이번 커밋인지 확인한다.
|
||||
2026-07-04T12:52:04.5763096Z if [ ! -s "\$DEPLOY_DIR/wwwroot/version.json" ]; then
|
||||
2026-07-04T12:52:04.5763233Z echo "❌ version.json 누락" >&2
|
||||
2026-07-04T12:52:04.5763398Z exit 1
|
||||
2026-07-04T12:52:04.5763528Z fi
|
||||
2026-07-04T12:52:04.5763654Z VERSION_JSON=\$(curl -fsS http://127.0.0.1:5001/taxbaik/version.json 2>/dev/null || true)
|
||||
2026-07-04T12:52:04.5763823Z if ! printf '%s' "\$VERSION_JSON" | grep -q "\"version\": \"\$COMMIT\""; then
|
||||
2026-07-04T12:52:04.5763977Z echo "❌ 5001 프록시가 이번 배포 버전을 제공하지 않음" >&2
|
||||
2026-07-04T12:52:04.5764122Z echo " expected: \$COMMIT" >&2
|
||||
2026-07-04T12:52:04.5764261Z echo " actual: \$VERSION_JSON" >&2
|
||||
2026-07-04T12:52:04.5764401Z echo " 확인: 5001 포트가 TaxBaik.Proxy.dll인지, /home/***/taxbaik_port가 새 포트인지 점검" >&2
|
||||
2026-07-04T12:52:04.5764575Z exit 1
|
||||
2026-07-04T12:52:04.5764708Z fi
|
||||
2026-07-04T12:52:04.5764827Z echo "✓ [4/6] 버전 정보 확인 완료"
|
||||
2026-07-04T12:52:04.5764961Z
|
||||
2026-07-04T12:52:04.5765061Z # 검증 4: 5001 프록시 확인
|
||||
2026-07-04T12:52:04.5765196Z if ! ss -tlnp | grep -q ':5001 '; then
|
||||
2026-07-04T12:52:04.5765343Z echo "❌ 5001 프록시가 실행 중이 아님" >&2
|
||||
2026-07-04T12:52:04.5765486Z exit 1
|
||||
2026-07-04T12:52:04.5765610Z fi
|
||||
2026-07-04T12:52:04.5765730Z echo "✓ [5/6] 5001 프록시 확인 완료"
|
||||
2026-07-04T12:52:04.5765870Z
|
||||
2026-07-04T12:52:04.5765986Z # 검증 5: 관리자 로그인 페이지
|
||||
2026-07-04T12:52:04.5766315Z LOGIN_STATUS=\$(curl -fsSL -o /dev/null -w '%{http_code}' http://127.0.0.1:5001/taxbaik/admin/login 2>/dev/null || echo "000")
|
||||
2026-07-04T12:52:04.5766510Z if [ "\$LOGIN_STATUS" != "200" ]; then
|
||||
2026-07-04T12:52:04.5766652Z echo "❌ 관리자 로그인 페이지 로드 실패 (상태: \$LOGIN_STATUS)" >&2
|
||||
2026-07-04T12:52:04.5766809Z exit 1
|
||||
2026-07-04T12:52:04.5766928Z fi
|
||||
2026-07-04T12:52:04.5767049Z echo "✓ [6/6] 관리자 페이지 로드 완료"
|
||||
2026-07-04T12:52:04.5767172Z
|
||||
2026-07-04T12:52:04.5767291Z echo "✓ 서비스 정상 (시도 \$i/\$ATTEMPTS)"
|
||||
2026-07-04T12:52:04.5767439Z # 구 배포 디렉토리 정리 (최근 5개 보존)
|
||||
2026-07-04T12:52:04.5767591Z ls -1dt \$DEPLOY_HOME/deployments/taxbaik_* 2>/dev/null \
|
||||
2026-07-04T12:52:04.5767740Z | tail -n +6 | xargs rm -rf 2>/dev/null || true
|
||||
2026-07-04T12:52:04.5767880Z exit 0
|
||||
2026-07-04T12:52:04.5768010Z fi
|
||||
2026-07-04T12:52:04.5768129Z if [ "\$i" -eq "\$ATTEMPTS" ]; then
|
||||
2026-07-04T12:52:04.5768263Z echo "=== FATAL: 서비스가 \$ATTEMPTS회 시도 후에도 응답하지 않음 ===" >&2
|
||||
2026-07-04T12:52:04.5768450Z echo "--- 5001 listener ---" >&2
|
||||
2026-07-04T12:52:04.5768587Z ss -tlnp 2>/dev/null | grep ':5001 ' >&2 || true
|
||||
2026-07-04T12:52:04.5768666Z echo "--- active port file ---" >&2
|
||||
2026-07-04T12:52:04.5768786Z cat "\$DEPLOY_HOME/taxbaik_port" >&2 || true
|
||||
2026-07-04T12:52:04.5768919Z echo "--- 신규 앱 로그 ---" >&2
|
||||
2026-07-04T12:52:04.5769051Z ACTIVE_PORT=\$(cat "\$DEPLOY_HOME/taxbaik_port" 2>/dev/null | tr -d '[:space:]' || true)
|
||||
2026-07-04T12:52:04.5769205Z if [ -n "\$ACTIVE_PORT" ] && [ -s "\$DEPLOY_DIR/web_\${ACTIVE_PORT}.log" ]; then
|
||||
2026-07-04T12:52:04.5769305Z tail -n 80 "\$DEPLOY_DIR/web_\${ACTIVE_PORT}.log" >&2
|
||||
2026-07-04T12:52:04.5769387Z else
|
||||
2026-07-04T12:52:04.5769507Z ls -la "\$DEPLOY_DIR" >&2 || true
|
||||
2026-07-04T12:52:04.5769640Z fi
|
||||
2026-07-04T12:52:04.5769755Z echo "--- proxy 로그 ---" >&2
|
||||
2026-07-04T12:52:04.5769889Z tail -n 80 "\$DEPLOY_HOME/taxbaik_proxy.log" >&2 || true
|
||||
2026-07-04T12:52:04.5770030Z exit 1
|
||||
2026-07-04T12:52:04.5770436Z fi
|
||||
2026-07-04T12:52:04.5770573Z echo " 대기 중... (\$i/\$ATTEMPTS, HTTP \$STATUS)"
|
||||
2026-07-04T12:52:04.5770874Z sleep 3
|
||||
2026-07-04T12:52:04.5771010Z done
|
||||
2026-07-04T12:52:04.5771127Z REMOTE
|
||||
2026-07-04T12:52:04.5771246Z
|
||||
2026-07-04T12:52:04.5771356Z echo "✓ 배포 완료: taxbaik_${TIMESTAMP} @ $DEPLOY_HOST"
|
||||
2026-07-04T12:52:04.5771479Z
|
||||
2026-07-04T12:52:04.5771545Z echo "--- 실제 공개 도메인 종단 간 검증 (Nginx/Cloudflare 경유, 최대 3회 재시도) ---"
|
||||
2026-07-04T12:52:04.5771637Z ROOT_URL="https://www.taxbaik.com/" \
|
||||
2026-07-04T12:52:04.5771759Z ADMIN_URL="https://www.taxbaik.com/taxbaik/admin/login" \
|
||||
2026-07-04T12:52:04.5771883Z PUBLIC_MARKER="백원숙 세무회계" \
|
||||
2026-07-04T12:52:04.5771959Z PUBLIC_FORBIDDEN="관리자" \
|
||||
2026-07-04T12:52:04.5772036Z ADMIN_MARKER="관리자 로그인" \
|
||||
2026-07-04T12:52:04.5772120Z MAX_RETRIES=3 \
|
||||
2026-07-04T12:52:04.5772189Z RETRY_SLEEP_SECONDS=5 \
|
||||
2026-07-04T12:52:04.5772309Z bash ./scripts/taxbaik-smoke.sh
|
||||
2026-07-04T12:52:04.5772408Z echo "✓ 실제 공개 도메인 전체 정상"
|
||||
2026-07-04T12:52:04.5772486Z
|
||||
2026-07-04T12:52:04.5772551Z send_telegram "✅ <b>TaxBaik 배포 완료</b>
|
||||
2026-07-04T12:52:04.5772628Z
|
||||
2026-07-04T12:52:04.5772713Z 커밋: <code>${COMMIT}</code>
|
||||
2026-07-04T12:52:04.5772791Z 시간: <code>${TIMESTAMP}</code>
|
||||
2026-07-04T12:52:04.5772868Z 대상: <code>${DEPLOY_HOST}</code>
|
||||
2026-07-04T12:52:04.5772944Z 채널: <code>${TELEGRAM_CHAT_ID}</code>"
|
||||
2026-07-04T12:52:04.5773021Z shell: bash --noprofile --norc -e -o pipefail {0}
|
||||
2026-07-04T12:52:04.5773130Z ::endgroup::
|
||||
2026-07-04T12:52:04.6332316Z === Deploying TaxBaik dc86ccf (20260704_215204) ===
|
||||
2026-07-04T12:52:05.3820913Z --- [1/5] 압축 해제 ---
|
||||
2026-07-04T12:52:05.6284914Z --- [2/5] 운영 설정 검증 ---
|
||||
2026-07-04T12:52:05.6285418Z --- [3/5] 마이그레이션 사전 검증 ---
|
||||
2026-07-04T12:52:05.8433051Z Migration dry-run validation passed.
|
||||
2026-07-04T12:52:05.8438859Z --- [4/5] Green-Blue 배포 실행 ---
|
||||
2026-07-04T12:52:05.8509623Z ===== 🚀 TaxBaik Green/Blue Deployment Script =====
|
||||
2026-07-04T12:52:05.8541302Z Active Port: 5003
|
||||
2026-07-04T12:52:05.8541658Z Target Port: 5004
|
||||
2026-07-04T12:52:05.8542047Z Deploy Directory: /home/***/deployments/taxbaik_20260704_215204
|
||||
2026-07-04T12:52:05.9049695Z === Starting New App on Port 5004 ===
|
||||
2026-07-04T12:52:07.9185792Z === Health Checking Port 5004 ===
|
||||
2026-07-04T12:52:08.2035208Z ✓ Health check passed on port 5004 (Attempt 1/20)
|
||||
2026-07-04T12:52:08.2035939Z === Switching Traffic to Port 5004 ===
|
||||
2026-07-04T12:52:08.2039084Z ✓ Traffic routed to 5004 (via TaxBaik.Proxy on 5001)
|
||||
2026-07-04T12:52:08.2041337Z === Stopping Old App on Port 5003 ===
|
||||
2026-07-04T12:52:08.2181936Z Killing old process PID: 4117859
|
||||
2026-07-04T12:52:08.2184795Z ✓ Old process terminated
|
||||
2026-07-04T12:52:08.2192076Z === Cleaning Up Old Deployments ===
|
||||
2026-07-04T12:52:08.2379074Z ✓ Cleanup completed
|
||||
2026-07-04T12:52:08.2379676Z ===== ✅ Green/Blue Deployment Completed Successfully =====
|
||||
2026-07-04T12:52:08.2385094Z --- [4.5/5] Nginx 설정 검증 ---
|
||||
2026-07-04T12:52:08.2436700Z 실제 로드되는 설정 파일: /etc/nginx/sites-available/taxbaik-domains.conf
|
||||
2026-07-04T12:52:08.2509737Z ✓ Nginx 설정 검증 통과 (실제 로드 파일 확인 + 포트 5001 고정 + trailing slash 없음)
|
||||
2026-07-04T12:52:08.2510207Z --- [5/5] 헬스 체크 (최대 60초) ---
|
||||
2026-07-04T12:52:08.2933338Z ✓ [1/6] 헬스 체크 완료
|
||||
2026-07-04T12:52:08.3102145Z ✓ [2/6] 메인 페이지 로드 완료
|
||||
2026-07-04T12:52:08.3324117Z ✓ [3/6] CSS 파일 로드 완료
|
||||
2026-07-04T12:52:08.3445763Z ✓ [4/6] 버전 정보 확인 완료
|
||||
2026-07-04T12:52:08.3544241Z ✓ [5/6] 5001 프록시 확인 완료
|
||||
2026-07-04T12:52:08.3650602Z ✓ [6/6] 관리자 페이지 로드 완료
|
||||
2026-07-04T12:52:08.3651465Z ✓ 서비스 정상 (시도 1/20)
|
||||
2026-07-04T12:52:08.3716219Z ✓ 배포 완료: taxbaik_20260704_215204 @ ***
|
||||
2026-07-04T12:52:08.3716849Z --- 실제 공개 도메인 종단 간 검증 (Nginx/Cloudflare 경유, 최대 3회 재시도) ---
|
||||
2026-07-04T12:52:10.5585268Z retrying... (1/3)
|
||||
2026-07-04T12:52:10.5585809Z ✗ https://www.taxbaik.com/ -> body missing required marker: 백원숙 세무회계
|
||||
2026-07-04T12:52:17.6149854Z ✗ https://www.taxbaik.com/ -> body missing required marker: 백원숙 세무회계
|
||||
2026-07-04T12:52:17.6152469Z retrying... (2/3)
|
||||
2026-07-04T12:52:24.5668073Z ✗ https://www.taxbaik.com/ -> body missing required marker: 백원숙 세무회계
|
||||
2026-07-04T12:52:24.5668594Z ✗ smoke verification failed
|
||||
2026-07-04T12:52:24.8198071Z ❌ Failure - Main Deploy & verify on server
|
||||
2026-07-04T12:52:24.8336834Z exitcode '1': failure
|
||||
2026-07-04T12:52:24.8630234Z evaluating expression 'success()'
|
||||
2026-07-04T12:52:24.8631375Z expression 'success()' evaluated to 'false'
|
||||
2026-07-04T12:52:24.8631585Z Skipping step 'Setup .NET' due to 'success()'
|
||||
2026-07-04T12:52:24.8839000Z evaluating expression 'always()'
|
||||
2026-07-04T12:52:24.8839624Z expression 'always()' evaluated to 'true'
|
||||
2026-07-04T12:52:24.8839784Z ⭐ Run Post Checkout code
|
||||
2026-07-04T12:52:24.8839977Z Writing entry to tarball workflow/outputcmd.txt len:0
|
||||
2026-07-04T12:52:24.8840143Z Writing entry to tarball workflow/statecmd.txt len:0
|
||||
2026-07-04T12:52:24.8840244Z Writing entry to tarball workflow/pathcmd.txt len:0
|
||||
2026-07-04T12:52:24.8840333Z Writing entry to tarball workflow/envs.txt len:0
|
||||
2026-07-04T12:52:24.8840411Z Writing entry to tarball workflow/SUMMARY.md len:0
|
||||
2026-07-04T12:52:24.8840523Z Extracting content to '/var/run/act'
|
||||
2026-07-04T12:52:24.8865590Z run post step for 'Checkout code'
|
||||
2026-07-04T12:52:24.8866457Z executing remote job container: [node /var/run/act/actions/c3fe249fe73091a17d6638fe1341e7bd0bcc3466ce52323c0688e83e2463a4ab/dist/index.js]
|
||||
2026-07-04T12:52:24.9112212Z 🐳 docker exec cmd=[node /var/run/act/actions/c3fe249fe73091a17d6638fe1341e7bd0bcc3466ce52323c0688e83e2463a4ab/dist/index.js] user= workdir=
|
||||
2026-07-04T12:52:24.9112610Z Exec command '[node /var/run/act/actions/c3fe249fe73091a17d6638fe1341e7bd0bcc3466ce52323c0688e83e2463a4ab/dist/index.js]'
|
||||
2026-07-04T12:52:24.9113018Z Working directory '/workspace/***/taxbaik'
|
||||
2026-07-04T12:52:25.1573902Z [command]/usr/bin/git version
|
||||
2026-07-04T12:52:25.1613809Z git version 2.54.0
|
||||
2026-07-04T12:52:25.1650128Z ***
|
||||
2026-07-04T12:52:25.1677928Z Temporarily overriding HOME='/tmp/daa4130a-b951-44ca-9bf6-2a832ad8d592' before making global git config changes
|
||||
2026-07-04T12:52:25.1678247Z Adding repository directory to the temporary git global config as a safe directory
|
||||
2026-07-04T12:52:25.1680429Z [command]/usr/bin/git config --global --add safe.directory /workspace/***/taxbaik
|
||||
2026-07-04T12:52:25.1715854Z [command]/usr/bin/git config --local --name-only --get-regexp core\.sshCommand
|
||||
2026-07-04T12:52:25.1760614Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'core\.sshCommand' && git config --local --unset-all 'core.sshCommand' || :"
|
||||
2026-07-04T12:52:25.1997273Z [command]/usr/bin/git config --local --name-only --get-regexp http\.http\:\/\/gitea\:3000\/\.extraheader
|
||||
2026-07-04T12:52:25.2020534Z http.http://gitea:3000/.extraheader
|
||||
2026-07-04T12:52:25.2034486Z [command]/usr/bin/git config --local --unset-all http.http://gitea:3000/.extraheader
|
||||
2026-07-04T12:52:25.2067074Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'http\.http\:\/\/gitea\:3000\/\.extraheader' && git config --local --unset-all 'http.http://gitea:3000/.extraheader' || :"
|
||||
2026-07-04T12:52:25.2313893Z [command]/usr/bin/git config --local --name-only --get-regexp ^includeIf\.gitdir:
|
||||
2026-07-04T12:52:25.2344461Z [command]/usr/bin/git submodule foreach --recursive git config --local --show-origin --name-only --get-regexp remote.origin.url
|
||||
2026-07-04T12:52:25.2706764Z ✅ Success - Post Checkout code
|
||||
2026-07-04T12:52:25.2810331Z Cleaning up container for job build-and-deploy
|
||||
2026-07-04T12:52:25.6754704Z Removed container: 7fdc784e6b95f4a2f3a7139414bcbaeff9754c0efd147950d7f0357c1b99e6c6
|
||||
2026-07-04T12:52:25.6765166Z 🐳 docker volume rm GITEA-ACTIONS-TASK-1550-WORKFLOW-TaxBaik-CI-CD-JOB-build-and-de-d1b621a7a13ad682fe29533e6a28b6835590d0898313b1b9fc5be41b5870455c
|
||||
2026-07-04T12:52:25.7686731Z 🐳 docker volume rm GITEA-ACTIONS-TASK-1550-WORKFLOW-TaxBaik-CI-CD-JOB-build-and-de-d1b621a7a13ad682fe29533e6a28b6835590d0898313b1b9fc5be41b5870455c-env
|
||||
2026-07-04T12:52:25.8187706Z 🏁 Job failed
|
||||
2026-07-04T12:52:25.8314043Z Job 'build-and-deploy' failed
|
||||
-944
@@ -1,944 +0,0 @@
|
||||
2026-07-04T12:55:56.4615511Z hz-prod-runner-2(version:v0.6.1) received task 1552 of job build-and-deploy, be triggered by event: push
|
||||
2026-07-04T12:55:56.4637712Z workflow prepared
|
||||
2026-07-04T12:55:56.4638531Z evaluating expression 'success()'
|
||||
2026-07-04T12:55:56.4639250Z expression 'success()' evaluated to 'true'
|
||||
2026-07-04T12:55:56.4639410Z 🚀 Start image=docker.gitea.com/runner-images:ubuntu-latest
|
||||
2026-07-04T12:55:56.4717320Z 🐳 docker pull image=docker.gitea.com/runner-images:ubuntu-latest platform= username= forcePull=false
|
||||
2026-07-04T12:55:56.4717578Z 🐳 docker pull docker.gitea.com/runner-images:ubuntu-latest
|
||||
2026-07-04T12:55:56.4972676Z Image exists? true
|
||||
2026-07-04T12:55:56.5450519Z 🐳 docker create image=docker.gitea.com/runner-images:ubuntu-latest platform= entrypoint=["/bin/sleep" "10800"] cmd=[] network="gitea_default"
|
||||
2026-07-04T12:55:56.6404647Z Created container name=GITEA-ACTIONS-TASK-1552-WORKFLOW-TaxBaik-CI-CD-JOB-build-and-de-ab2d1e70739a3063f448d1e9d12be855fbd02428b801ec092546b895bdf5c88d id=545d203ee9994ebf9eca9357f948b418a29c0a80f13c2d69e6b64ca3d86d4b5b from image docker.gitea.com/runner-images:ubuntu-latest (platform: )
|
||||
2026-07-04T12:55:56.6405073Z ENV ==> [RUNNER_TOOL_CACHE=/opt/hostedtoolcache RUNNER_OS=Linux RUNNER_ARCH=X64 RUNNER_TEMP=/tmp LANG=C.UTF-8]
|
||||
2026-07-04T12:55:56.6405231Z 🐳 docker run image=docker.gitea.com/runner-images:ubuntu-latest platform= entrypoint=["/bin/sleep" "10800"] cmd=[] network="gitea_default"
|
||||
2026-07-04T12:55:56.6405352Z Starting container: 545d203ee9994ebf9eca9357f948b418a29c0a80f13c2d69e6b64ca3d86d4b5b
|
||||
2026-07-04T12:55:56.8160318Z Started container: 545d203ee9994ebf9eca9357f948b418a29c0a80f13c2d69e6b64ca3d86d4b5b
|
||||
2026-07-04T12:55:56.9278346Z Writing entry to tarball workflow/event.json len:4744
|
||||
2026-07-04T12:55:56.9278912Z Writing entry to tarball workflow/envs.txt len:0
|
||||
2026-07-04T12:55:56.9279089Z Extracting content to '/var/run/act/'
|
||||
2026-07-04T12:55:56.9554266Z ☁ git clone 'https://github.com/actions/checkout' # ref=v4
|
||||
2026-07-04T12:55:56.9554640Z cloning https://github.com/actions/checkout to /root/.cache/act/c3fe249fe73091a17d6638fe1341e7bd0bcc3466ce52323c0688e83e2463a4ab
|
||||
2026-07-04T12:55:57.7778122Z Unable to pull refs/heads/v4: non-fast-forward update
|
||||
2026-07-04T12:55:57.7778594Z Cloned https://github.com/actions/checkout to /root/.cache/act/c3fe249fe73091a17d6638fe1341e7bd0bcc3466ce52323c0688e83e2463a4ab
|
||||
2026-07-04T12:55:57.7935665Z Checked out v4
|
||||
2026-07-04T12:55:57.8047363Z ☁ git clone 'https://github.com/actions/setup-dotnet' # ref=v4
|
||||
2026-07-04T12:55:57.8048149Z cloning https://github.com/actions/setup-dotnet to /root/.cache/act/2d637816dd86ec9ff59dad9ec3547bf90b88133b3029538a91ec96ac7f316336
|
||||
2026-07-04T12:55:58.3258730Z Unable to pull refs/heads/v4: worktree contains unstaged changes
|
||||
2026-07-04T12:55:58.3259204Z Cloned https://github.com/actions/setup-dotnet to /root/.cache/act/2d637816dd86ec9ff59dad9ec3547bf90b88133b3029538a91ec96ac7f316336
|
||||
2026-07-04T12:55:58.3442763Z Checked out v4
|
||||
2026-07-04T12:55:58.3705741Z evaluating expression ''
|
||||
2026-07-04T12:55:58.3706586Z expression '' evaluated to 'true'
|
||||
2026-07-04T12:55:58.3706713Z ⭐ Run Main Checkout code
|
||||
2026-07-04T12:55:58.3706901Z Writing entry to tarball workflow/outputcmd.txt len:0
|
||||
2026-07-04T12:55:58.3707051Z Writing entry to tarball workflow/statecmd.txt len:0
|
||||
2026-07-04T12:55:58.3707153Z Writing entry to tarball workflow/pathcmd.txt len:0
|
||||
2026-07-04T12:55:58.3707264Z Writing entry to tarball workflow/envs.txt len:0
|
||||
2026-07-04T12:55:58.3707351Z Writing entry to tarball workflow/SUMMARY.md len:0
|
||||
2026-07-04T12:55:58.3707451Z Extracting content to '/var/run/act'
|
||||
2026-07-04T12:55:58.3748068Z ::group::Run Checkout code
|
||||
2026-07-04T12:55:58.9258868Z ::add-matcher::/run/act/actions/c3fe249fe73091a17d6638fe1341e7bd0bcc3466ce52323c0688e83e2463a4ab/dist/problem-matcher.json
|
||||
2026-07-04T12:55:58.9264682Z Syncing repository: ***/taxbaik
|
||||
2026-07-04T12:55:58.9272267Z ::group::Getting Git version info
|
||||
2026-07-04T12:55:58.9272441Z Working directory is '/workspace/***/taxbaik'
|
||||
2026-07-04T12:55:58.9311321Z [command]/usr/bin/git version
|
||||
2026-07-04T12:55:58.9387081Z git version 2.54.0
|
||||
2026-07-04T12:55:58.9458330Z ::endgroup::
|
||||
2026-07-04T12:55:58.9480820Z Temporarily overriding HOME='/tmp/2e7b254c-3300-4ed7-b3ac-5e0628723e83' before making global git config changes
|
||||
2026-07-04T12:55:58.9482460Z Adding repository directory to the temporary git global config as a safe directory
|
||||
2026-07-04T12:55:58.9497103Z [command]/usr/bin/git config --global --add safe.directory /workspace/***/taxbaik
|
||||
2026-07-04T12:55:58.9544269Z Deleting the contents of '/workspace/***/taxbaik'
|
||||
2026-07-04T12:55:58.9576838Z ::group::Initializing the repository
|
||||
2026-07-04T12:55:58.9588388Z [command]/usr/bin/git init /workspace/***/taxbaik
|
||||
2026-07-04T12:55:58.9715154Z hint: Using 'master' as the name for the initial branch. This default branch name
|
||||
2026-07-04T12:55:58.9728629Z hint: will change to "main" in Git 3.0. To configure the initial branch name
|
||||
2026-07-04T12:55:58.9729225Z hint: to use in all of your new repositories, which will suppress this warning,
|
||||
2026-07-04T12:55:58.9729399Z hint: call:
|
||||
2026-07-04T12:55:58.9729772Z hint:
|
||||
2026-07-04T12:55:58.9729859Z hint: git config --global init.defaultBranch <name>
|
||||
2026-07-04T12:55:58.9729946Z hint:
|
||||
2026-07-04T12:55:58.9730097Z hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
|
||||
2026-07-04T12:55:58.9730184Z hint: 'development'. The just-created branch can be renamed via this command:
|
||||
2026-07-04T12:55:58.9730499Z hint:
|
||||
2026-07-04T12:55:58.9730665Z hint: git branch -m <name>
|
||||
2026-07-04T12:55:58.9730770Z hint:
|
||||
2026-07-04T12:55:58.9730838Z hint: Disable this message with "git config set advice.defaultBranchName false"
|
||||
2026-07-04T12:55:58.9730925Z Initialized empty Git repository in /workspace/***/taxbaik/.git/
|
||||
2026-07-04T12:55:58.9834190Z [command]/usr/bin/git remote add origin http://gitea:3000/***/taxbaik
|
||||
2026-07-04T12:55:58.9916667Z ::endgroup::
|
||||
2026-07-04T12:55:58.9917174Z ::group::Disabling automatic garbage collection
|
||||
2026-07-04T12:55:58.9928398Z [command]/usr/bin/git config --local gc.auto 0
|
||||
2026-07-04T12:55:58.9992137Z ::endgroup::
|
||||
2026-07-04T12:55:58.9992625Z ::group::Setting up auth
|
||||
2026-07-04T12:55:58.9992804Z [command]/usr/bin/git config --local --name-only --get-regexp core\.sshCommand
|
||||
2026-07-04T12:55:59.0031077Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'core\.sshCommand' && git config --local --unset-all 'core.sshCommand' || :"
|
||||
2026-07-04T12:55:59.0510927Z [command]/usr/bin/git config --local --name-only --get-regexp http\.http\:\/\/gitea\:3000\/\.extraheader
|
||||
2026-07-04T12:55:59.0554440Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'http\.http\:\/\/gitea\:3000\/\.extraheader' && git config --local --unset-all 'http.http://gitea:3000/.extraheader' || :"
|
||||
2026-07-04T12:55:59.0907354Z [command]/usr/bin/git config --local --name-only --get-regexp ^includeIf\.gitdir:
|
||||
2026-07-04T12:55:59.0920983Z [command]/usr/bin/git submodule foreach --recursive git config --local --show-origin --name-only --get-regexp remote.origin.url
|
||||
2026-07-04T12:55:59.1162021Z [command]/usr/bin/git config --local http.http://gitea:3000/.extraheader AUTHORIZATION: basic ***
|
||||
2026-07-04T12:55:59.1196020Z ::endgroup::
|
||||
2026-07-04T12:55:59.1196454Z ::group::Fetching the repository
|
||||
2026-07-04T12:55:59.1210231Z [command]/usr/bin/git -c protocol.version=2 fetch --no-tags --prune --no-recurse-submodules --depth=1 origin +c00d237a4d2716bc22cf06f053a807cd7a45f200:refs/remotes/origin/master
|
||||
2026-07-04T12:56:01.5767577Z From http://gitea:3000/***/taxbaik
|
||||
2026-07-04T12:56:01.5768075Z * [new ref] c00d237a4d2716bc22cf06f053a807cd7a45f200 -> origin/master
|
||||
2026-07-04T12:56:01.5798239Z ::endgroup::
|
||||
2026-07-04T12:56:01.5798671Z ::group::Determining the checkout info
|
||||
2026-07-04T12:56:01.5801467Z ::endgroup::
|
||||
2026-07-04T12:56:01.5808449Z [command]/usr/bin/git sparse-checkout disable
|
||||
2026-07-04T12:56:01.5862591Z [command]/usr/bin/git config --local --unset-all extensions.worktreeConfig
|
||||
2026-07-04T12:56:01.5900860Z ::group::Checking out the ref
|
||||
2026-07-04T12:56:01.5907120Z [command]/usr/bin/git checkout --progress --force -B master refs/remotes/origin/master
|
||||
2026-07-04T12:56:02.4699566Z Reset branch 'master'
|
||||
2026-07-04T12:56:02.4847933Z branch 'master' set up to track 'origin/master'.
|
||||
2026-07-04T12:56:02.4849782Z ::endgroup::
|
||||
2026-07-04T12:56:02.4886004Z [command]/usr/bin/git log -1 --format=%H
|
||||
2026-07-04T12:56:02.4952462Z c00d237a4d2716bc22cf06f053a807cd7a45f200
|
||||
2026-07-04T12:56:02.4994673Z ::remove-matcher owner=checkout-git::
|
||||
2026-07-04T12:56:02.5182273Z ::endgroup::
|
||||
2026-07-04T12:56:02.5668549Z ::group::Run Setup .NET
|
||||
2026-07-04T12:56:02.5669115Z with:
|
||||
2026-07-04T12:56:02.5669224Z dotnet-version: 10.0
|
||||
2026-07-04T12:56:03.6548348Z (node:141) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
|
||||
2026-07-04T12:56:03.6548980Z (Use `node --trace-deprecation ...` to show where the warning was created)
|
||||
2026-07-04T12:56:03.6690381Z [command]/run/act/actions/2d637816dd86ec9ff59dad9ec3547bf90b88133b3029538a91ec96ac7f316336/externals/install-dotnet.sh --skip-non-versioned-files --runtime dotnet --channel LTS
|
||||
2026-07-04T12:56:04.3566016Z dotnet-install: Attempting to download using aka.ms link https://builds.dotnet.microsoft.com/dotnet/Runtime/10.0.9/dotnet-runtime-10.0.9-linux-x64.tar.gz
|
||||
2026-07-04T12:56:04.7466768Z dotnet-install: Remote file https://builds.dotnet.microsoft.com/dotnet/Runtime/10.0.9/dotnet-runtime-10.0.9-linux-x64.tar.gz size is 36606251 bytes.
|
||||
2026-07-04T12:56:04.7467352Z dotnet-install: Extracting archive from https://builds.dotnet.microsoft.com/dotnet/Runtime/10.0.9/dotnet-runtime-10.0.9-linux-x64.tar.gz
|
||||
2026-07-04T12:56:06.0871997Z dotnet-install: Downloaded file size is 36606251 bytes.
|
||||
2026-07-04T12:56:06.0872663Z dotnet-install: The remote and local file sizes are equal.
|
||||
2026-07-04T12:56:06.1077477Z dotnet-install: Installed version is 10.0.9
|
||||
2026-07-04T12:56:06.1177302Z dotnet-install: Adding to current process PATH: `/usr/share/dotnet`. Note: This change will be visible only when sourcing script.
|
||||
2026-07-04T12:56:06.1177905Z dotnet-install: Note that the script does not resolve dependencies during installation.
|
||||
2026-07-04T12:56:06.1178042Z dotnet-install: To check the list of dependencies, go to https://learn.microsoft.com/dotnet/core/install, select your operating system and check the "Dependencies" section.
|
||||
2026-07-04T12:56:06.1178186Z dotnet-install: Installation finished successfully.
|
||||
2026-07-04T12:56:06.1212465Z [command]/run/act/actions/2d637816dd86ec9ff59dad9ec3547bf90b88133b3029538a91ec96ac7f316336/externals/install-dotnet.sh --skip-non-versioned-files --channel 10.0
|
||||
2026-07-04T12:56:06.5612026Z dotnet-install: Attempting to download using aka.ms link https://builds.dotnet.microsoft.com/dotnet/Sdk/10.0.301/dotnet-sdk-10.0.301-linux-x64.tar.gz
|
||||
2026-07-04T12:56:07.8777550Z dotnet-install: Remote file https://builds.dotnet.microsoft.com/dotnet/Sdk/10.0.301/dotnet-sdk-10.0.301-linux-x64.tar.gz size is 235086718 bytes.
|
||||
2026-07-04T12:56:07.8778105Z dotnet-install: Extracting archive from https://builds.dotnet.microsoft.com/dotnet/Sdk/10.0.301/dotnet-sdk-10.0.301-linux-x64.tar.gz
|
||||
2026-07-04T12:56:15.9574962Z dotnet-install: Downloaded file size is 235086718 bytes.
|
||||
2026-07-04T12:56:15.9575450Z dotnet-install: The remote and local file sizes are equal.
|
||||
2026-07-04T12:56:16.4216427Z dotnet-install: Installed version is 10.0.301
|
||||
2026-07-04T12:56:16.4608895Z dotnet-install: Adding to current process PATH: `/usr/share/dotnet`. Note: This change will be visible only when sourcing script.
|
||||
2026-07-04T12:56:16.4609480Z dotnet-install: Note that the script does not resolve dependencies during installation.
|
||||
2026-07-04T12:56:16.4609633Z dotnet-install: To check the list of dependencies, go to https://learn.microsoft.com/dotnet/core/install, select your operating system and check the "Dependencies" section.
|
||||
2026-07-04T12:56:16.4609773Z dotnet-install: Installation finished successfully.
|
||||
2026-07-04T12:56:16.4610111Z ##[add-matcher]/run/act/actions/2d637816dd86ec9ff59dad9ec3547bf90b88133b3029538a91ec96ac7f316336/.github/csc.json
|
||||
2026-07-04T12:56:16.4838195Z ::endgroup::
|
||||
2026-07-04T12:56:16.6836471Z ::group::Run dotnet restore src/TaxBaik.sln
|
||||
2026-07-04T12:56:16.6836809Z dotnet restore src/TaxBaik.sln
|
||||
2026-07-04T12:56:16.6836915Z shell: bash --noprofile --norc -e -o pipefail {0}
|
||||
2026-07-04T12:56:16.6837057Z ::endgroup::
|
||||
2026-07-04T12:56:17.1062566Z
|
||||
2026-07-04T12:56:17.1063187Z Welcome to .NET 10.0!
|
||||
2026-07-04T12:56:17.1063335Z ---------------------
|
||||
2026-07-04T12:56:17.1063423Z SDK Version: 10.0.301
|
||||
2026-07-04T12:56:17.1063509Z
|
||||
2026-07-04T12:56:17.1063586Z Telemetry
|
||||
2026-07-04T12:56:17.1063723Z ---------
|
||||
2026-07-04T12:56:17.1063814Z The .NET tools collect usage data in order to help us improve your experience. It is collected by Microsoft and shared with the community. You can opt-out of telemetry by setting the DOTNET_CLI_TELEMETRY_OPTOUT environment variable to '1' or 'true' using your favorite shell.
|
||||
2026-07-04T12:56:17.1063988Z
|
||||
2026-07-04T12:56:17.1064082Z Read more about .NET CLI Tools telemetry: https://aka.ms/dotnet-cli-telemetry
|
||||
2026-07-04T12:56:17.7956740Z
|
||||
2026-07-04T12:56:17.7957774Z ----------------
|
||||
2026-07-04T12:56:17.7958124Z Installed an ASP.NET Core HTTPS development certificate.
|
||||
2026-07-04T12:56:17.7958509Z To trust the certificate, run 'dotnet dev-certs https --trust'
|
||||
2026-07-04T12:56:17.7958698Z Learn about HTTPS: https://aka.ms/dotnet-https
|
||||
2026-07-04T12:56:17.7958830Z
|
||||
2026-07-04T12:56:17.7959148Z ----------------
|
||||
2026-07-04T12:56:17.7959321Z Write your first app: https://aka.ms/dotnet-hello-world
|
||||
2026-07-04T12:56:17.7959481Z Find out what's new: https://aka.ms/dotnet-whats-new
|
||||
2026-07-04T12:56:17.7959628Z Explore documentation: https://aka.ms/dotnet-docs
|
||||
2026-07-04T12:56:17.7959926Z Report issues and find source on GitHub: https://github.com/dotnet/core
|
||||
2026-07-04T12:56:17.7960053Z Use 'dotnet --help' to see available commands or visit: https://aka.ms/dotnet-cli
|
||||
2026-07-04T12:56:17.7962047Z --------------------------------------------------------------------------------------
|
||||
2026-07-04T12:56:20.9087685Z Determining projects to restore...
|
||||
2026-07-04T12:56:30.8926957Z Restored /workspace/***/taxbaik/src/TaxBaik.Infrastructure/TaxBaik.Infrastructure.csproj (in 6.9 sec).
|
||||
2026-07-04T12:56:30.9025803Z Restored /workspace/***/taxbaik/src/TaxBaik.Web/TaxBaik.Web.csproj (in 6.89 sec).
|
||||
2026-07-04T12:56:30.9698454Z Restored /workspace/***/taxbaik/src/TaxBaik.Domain/TaxBaik.Domain.csproj (in 2 ms).
|
||||
2026-07-04T12:56:31.4466553Z Restored /workspace/***/taxbaik/src/TaxBaik.Application/TaxBaik.Application.csproj (in 444 ms).
|
||||
2026-07-04T12:56:37.8960870Z Restored /workspace/***/taxbaik/src/TaxBaik.Application.Tests/TaxBaik.Application.Tests.csproj (in 6.43 sec).
|
||||
2026-07-04T12:56:38.1253187Z Restored /workspace/***/taxbaik/src/TaxBaik.Web.Client/TaxBaik.Web.Client.csproj (in 7.21 sec).
|
||||
2026-07-04T12:56:38.3047389Z ::group::Run dotnet build src/TaxBaik.sln -c Release --no-restore -p:ContinuousIntegrationBuild=true
|
||||
2026-07-04T12:56:38.3047747Z dotnet build src/TaxBaik.sln -c Release --no-restore -p:ContinuousIntegrationBuild=true
|
||||
2026-07-04T12:56:38.3047878Z shell: bash --noprofile --norc -e -o pipefail {0}
|
||||
2026-07-04T12:56:38.3047984Z ::endgroup::
|
||||
2026-07-04T12:56:47.5523499Z TaxBaik.Domain -> /workspace/***/taxbaik/src/TaxBaik.Domain/bin/Release/net10.0/TaxBaik.Domain.dll
|
||||
2026-07-04T12:56:53.8139393Z TaxBaik.Application -> /workspace/***/taxbaik/src/TaxBaik.Application/bin/Release/net10.0/TaxBaik.Application.dll
|
||||
2026-07-04T12:56:56.3263776Z TaxBaik.Infrastructure -> /workspace/***/taxbaik/src/TaxBaik.Infrastructure/bin/Release/net10.0/TaxBaik.Infrastructure.dll
|
||||
2026-07-04T12:57:41.2956856Z TaxBaik.Web.Client -> /workspace/***/taxbaik/src/TaxBaik.Web.Client/bin/Debug/net10.0/TaxBaik.Web.Client.dll
|
||||
2026-07-04T12:57:41.2957970Z TaxBaik.Web.Client (Blazor output) -> /workspace/***/taxbaik/src/TaxBaik.Web.Client/bin/Debug/net10.0/wwwroot
|
||||
2026-07-04T12:57:54.4727116Z TaxBaik.Web -> /workspace/***/taxbaik/src/TaxBaik.Web/bin/Release/net10.0/TaxBaik.Web.dll
|
||||
2026-07-04T12:57:56.1020240Z TaxBaik.Application.Tests -> /workspace/***/taxbaik/src/TaxBaik.Application.Tests/bin/Release/net10.0/TaxBaik.Application.Tests.dll
|
||||
2026-07-04T12:57:56.1185508Z
|
||||
2026-07-04T12:57:56.1186502Z Build succeeded.
|
||||
2026-07-04T12:57:56.1187397Z 0 Warning(s)
|
||||
2026-07-04T12:57:56.1187565Z 0 Error(s)
|
||||
2026-07-04T12:57:56.1187859Z
|
||||
2026-07-04T12:57:56.1187992Z Time Elapsed 00:01:17.28
|
||||
2026-07-04T12:57:56.3442702Z ::group::Run dotnet test src/TaxBaik.sln -c Release --no-build
|
||||
2026-07-04T12:57:56.3443052Z dotnet test src/TaxBaik.sln -c Release --no-build
|
||||
2026-07-04T12:57:56.3443177Z shell: bash --noprofile --norc -e -o pipefail {0}
|
||||
2026-07-04T12:57:56.3443278Z ::endgroup::
|
||||
2026-07-04T12:58:00.2708385Z Test run for /workspace/***/taxbaik/src/TaxBaik.Application.Tests/bin/Release/net10.0/TaxBaik.Application.Tests.dll (.NETCoreApp,Version=v10.0)
|
||||
2026-07-04T12:58:01.4967596Z A total of 1 test files matched the specified pattern.
|
||||
2026-07-04T12:58:08.9229118Z
|
||||
2026-07-04T12:58:08.9419846Z Passed! - Failed: 0, Passed: 26, Skipped: 0, Total: 26, Duration: 547 ms - TaxBaik.Application.Tests.dll (net10.0)
|
||||
2026-07-04T12:58:09.4829427Z ::group::Run set -e
|
||||
2026-07-04T12:58:09.4829769Z set -e
|
||||
2026-07-04T12:58:09.4829932Z mkdir -p ./publish-logs
|
||||
2026-07-04T12:58:09.4830025Z web_log="./publish-logs/publish-web.log"
|
||||
2026-07-04T12:58:09.4830116Z start=$(date +%s)
|
||||
2026-07-04T12:58:09.4830216Z # Web.Client needs a Release static-web-assets manifest for Web publish.
|
||||
2026-07-04T12:58:09.4830322Z # Build it explicitly so publish can reuse the prepared outputs.
|
||||
2026-07-04T12:58:09.4830419Z dotnet build src/TaxBaik.Web.Client/TaxBaik.Web.Client.csproj -c Release --no-restore -p:ContinuousIntegrationBuild=true
|
||||
2026-07-04T12:58:09.4830524Z # Build the Web host in Release as well so publish has the same inputs
|
||||
2026-07-04T12:58:09.4830643Z # the server uses in production.
|
||||
2026-07-04T12:58:09.4830726Z dotnet build src/TaxBaik.Web/TaxBaik.Web.csproj -c Release --no-restore -p:ContinuousIntegrationBuild=true
|
||||
2026-07-04T12:58:09.4830819Z echo "--- Web.Client Release artifacts ---"
|
||||
2026-07-04T12:58:09.4830932Z ls -la src/TaxBaik.Web.Client/bin/Release/net10.0 || true
|
||||
2026-07-04T12:58:09.4831022Z ls -la src/TaxBaik.Web.Client/obj/Release/net10.0 || true
|
||||
2026-07-04T12:58:09.4831103Z if ! dotnet publish src/TaxBaik.Web/ \
|
||||
2026-07-04T12:58:09.4831188Z -c Release \
|
||||
2026-07-04T12:58:09.4831285Z -o ./publish \
|
||||
2026-07-04T12:58:09.4831373Z --no-restore \
|
||||
2026-07-04T12:58:09.4831449Z -p:SelfContained=false \
|
||||
2026-07-04T12:58:09.4831732Z -p:PublishReadyToRun=false \
|
||||
2026-07-04T12:58:09.4831866Z -p:PerformanceSummary=true \
|
||||
2026-07-04T12:58:09.4831988Z -clp:Summary \
|
||||
2026-07-04T12:58:09.4832113Z -bl:"./publish-logs/publish-web.binlog" >"$web_log" 2>&1; then
|
||||
2026-07-04T12:58:09.4832289Z echo "=== Publish Web failed; tailing log ==="
|
||||
2026-07-04T12:58:09.4832414Z tail -n 120 "$web_log" || true
|
||||
2026-07-04T12:58:09.4832535Z exit 1
|
||||
2026-07-04T12:58:09.4832795Z fi
|
||||
2026-07-04T12:58:09.4832909Z end=$(date +%s)
|
||||
2026-07-04T12:58:09.4833051Z echo "✓ Publish Web elapsed: $((end - start))s"
|
||||
2026-07-04T12:58:09.4833195Z ls -lh ./publish-logs/publish-web.binlog
|
||||
2026-07-04T12:58:09.4833380Z shell: bash --noprofile --norc -e -o pipefail {0}
|
||||
2026-07-04T12:58:09.4833512Z ::endgroup::
|
||||
2026-07-04T12:58:15.0626337Z TaxBaik.Domain -> /workspace/***/taxbaik/src/TaxBaik.Domain/bin/Release/net10.0/TaxBaik.Domain.dll
|
||||
2026-07-04T12:58:16.0646936Z TaxBaik.Application -> /workspace/***/taxbaik/src/TaxBaik.Application/bin/Release/net10.0/TaxBaik.Application.dll
|
||||
2026-07-04T12:58:43.1637915Z TaxBaik.Web.Client -> /workspace/***/taxbaik/src/TaxBaik.Web.Client/bin/Release/net10.0/TaxBaik.Web.Client.dll
|
||||
2026-07-04T12:58:43.1638555Z TaxBaik.Web.Client (Blazor output) -> /workspace/***/taxbaik/src/TaxBaik.Web.Client/bin/Release/net10.0/wwwroot
|
||||
2026-07-04T12:58:43.2125386Z
|
||||
2026-07-04T12:58:43.2137113Z Build succeeded.
|
||||
2026-07-04T12:58:43.2137638Z 0 Warning(s)
|
||||
2026-07-04T12:58:43.2137752Z 0 Error(s)
|
||||
2026-07-04T12:58:43.2137837Z
|
||||
2026-07-04T12:58:43.2137937Z Time Elapsed 00:00:31.72
|
||||
2026-07-04T12:58:46.1821154Z TaxBaik.Domain -> /workspace/***/taxbaik/src/TaxBaik.Domain/bin/Release/net10.0/TaxBaik.Domain.dll
|
||||
2026-07-04T12:58:46.3588108Z TaxBaik.Infrastructure -> /workspace/***/taxbaik/src/TaxBaik.Infrastructure/bin/Release/net10.0/TaxBaik.Infrastructure.dll
|
||||
2026-07-04T12:58:47.0759678Z TaxBaik.Application -> /workspace/***/taxbaik/src/TaxBaik.Application/bin/Release/net10.0/TaxBaik.Application.dll
|
||||
2026-07-04T12:58:51.7209180Z TaxBaik.Web.Client -> /workspace/***/taxbaik/src/TaxBaik.Web.Client/bin/Release/net10.0/TaxBaik.Web.Client.dll
|
||||
2026-07-04T12:58:51.7249991Z TaxBaik.Web.Client (Blazor output) -> /workspace/***/taxbaik/src/TaxBaik.Web.Client/bin/Release/net10.0/wwwroot
|
||||
2026-07-04T12:59:06.8811243Z TaxBaik.Web -> /workspace/***/taxbaik/src/TaxBaik.Web/bin/Release/net10.0/TaxBaik.Web.dll
|
||||
2026-07-04T12:59:06.9584686Z
|
||||
2026-07-04T12:59:06.9595915Z Build succeeded.
|
||||
2026-07-04T12:59:06.9663358Z 0 Warning(s)
|
||||
2026-07-04T12:59:06.9664940Z 0 Error(s)
|
||||
2026-07-04T12:59:06.9667639Z
|
||||
2026-07-04T12:59:06.9727168Z Time Elapsed 00:00:23.15
|
||||
2026-07-04T12:59:07.2928672Z --- Web.Client Release artifacts ---
|
||||
2026-07-04T12:59:07.2995244Z total 42056
|
||||
2026-07-04T12:59:07.2995608Z drwxr-xr-x 3 root root 20480 Jul 4 12:58 .
|
||||
2026-07-04T12:59:07.2995883Z drwxr-xr-x 3 root root 4096 Jul 4 12:58 ..
|
||||
2026-07-04T12:59:07.2996012Z -rwxr--r-- 1 root root 55632 May 20 20:19 Microsoft.AspNetCore.Authorization.dll
|
||||
2026-07-04T12:59:07.2996353Z -rwxr--r-- 1 root root 34128 May 20 20:19 Microsoft.AspNetCore.Components.Authorization.dll
|
||||
2026-07-04T12:59:07.2996466Z -rwxr--r-- 1 root root 47952 May 20 20:19 Microsoft.AspNetCore.Components.Forms.dll
|
||||
2026-07-04T12:59:07.2996556Z -rwxr--r-- 1 root root 189264 May 20 20:19 Microsoft.AspNetCore.Components.Web.dll
|
||||
2026-07-04T12:59:07.2996643Z -rwxr--r-- 1 root root 166736 May 20 20:20 Microsoft.AspNetCore.Components.WebAssembly.dll
|
||||
2026-07-04T12:59:07.2996769Z -rwxr--r-- 1 root root 399184 May 20 20:19 Microsoft.AspNetCore.Components.dll
|
||||
2026-07-04T12:59:07.2996860Z -rwxr--r-- 1 root root 16208 May 20 20:18 Microsoft.AspNetCore.Metadata.dll
|
||||
2026-07-04T12:59:07.2997106Z -rwxr--r-- 1 root root 19248 Dec 12 2025 Microsoft.Bcl.Cryptography.dll
|
||||
2026-07-04T12:59:07.2997201Z -rwxr--r-- 1 root root 311632 May 20 18:30 Microsoft.CSharp.dll
|
||||
2026-07-04T12:59:07.2997298Z -rwxr--r-- 1 root root 38192 Oct 24 2025 Microsoft.Extensions.Caching.Abstractions.dll
|
||||
2026-07-04T12:59:07.2997390Z -rwxr--r-- 1 root root 28496 May 20 19:29 Microsoft.Extensions.Configuration.Abstractions.dll
|
||||
2026-07-04T12:59:07.2997500Z -rwxr--r-- 1 root root 43344 May 20 19:32 Microsoft.Extensions.Configuration.Binder.dll
|
||||
2026-07-04T12:59:07.2997593Z -rwxr--r-- 1 root root 28496 May 20 19:34 Microsoft.Extensions.Configuration.FileExtensions.dll
|
||||
2026-07-04T12:59:07.2997681Z -rwxr--r-- 1 root root 27984 May 20 19:36 Microsoft.Extensions.Configuration.Json.dll
|
||||
2026-07-04T12:59:07.2997903Z -rwxr--r-- 1 root root 44880 May 20 19:29 Microsoft.Extensions.Configuration.dll
|
||||
2026-07-04T12:59:07.2997993Z -rwxr--r-- 1 root root 65872 May 20 19:29 Microsoft.Extensions.DependencyInjection.Abstractions.dll
|
||||
2026-07-04T12:59:07.2998083Z -rwxr--r-- 1 root root 95568 May 20 19:30 Microsoft.Extensions.DependencyInjection.dll
|
||||
2026-07-04T12:59:07.2998186Z -rwxr--r-- 1 root root 31056 May 20 19:32 Microsoft.Extensions.Diagnostics.Abstractions.dll
|
||||
2026-07-04T12:59:07.2998272Z -rwxr--r-- 1 root root 36176 May 20 19:34 Microsoft.Extensions.Diagnostics.dll
|
||||
2026-07-04T12:59:07.2998461Z -rwxr--r-- 1 root root 23376 May 20 19:29 Microsoft.Extensions.FileProviders.Abstractions.dll
|
||||
2026-07-04T12:59:07.2998731Z -rwxr--r-- 1 root root 45392 May 20 19:33 Microsoft.Extensions.FileProviders.Physical.dll
|
||||
2026-07-04T12:59:07.2998823Z -rwxr--r-- 1 root root 47952 May 20 19:30 Microsoft.Extensions.FileSystemGlobbing.dll
|
||||
2026-07-04T12:59:07.2998932Z -rwxr--r-- 1 root root 93008 May 20 19:37 Microsoft.Extensions.Http.dll
|
||||
2026-07-04T12:59:07.2999016Z -rwxr--r-- 1 root root 19576 Mar 25 2023 Microsoft.Extensions.Localization.Abstractions.dll
|
||||
2026-07-04T12:59:07.2999099Z -rwxr--r-- 1 root root 31872 Mar 25 2023 Microsoft.Extensions.Localization.dll
|
||||
2026-07-04T12:59:07.2999184Z -rwxr--r-- 1 root root 66896 May 20 19:29 Microsoft.Extensions.Logging.Abstractions.dll
|
||||
2026-07-04T12:59:07.2999292Z -rwxr--r-- 1 root root 51536 May 20 19:33 Microsoft.Extensions.Logging.dll
|
||||
2026-07-04T12:59:07.2999529Z -rwxr--r-- 1 root root 21840 May 20 19:33 Microsoft.Extensions.Options.ConfigurationExtensions.dll
|
||||
2026-07-04T12:59:07.2999620Z -rwxr--r-- 1 root root 65360 May 20 19:30 Microsoft.Extensions.Options.dll
|
||||
2026-07-04T12:59:07.2999737Z -rwxr--r-- 1 root root 44880 May 20 19:29 Microsoft.Extensions.Primitives.dll
|
||||
2026-07-04T12:59:07.2999839Z -rwxr--r-- 1 root root 43344 May 20 20:19 Microsoft.Extensions.Validation.dll
|
||||
2026-07-04T12:59:07.2999920Z -rwxr--r-- 1 root root 19296 Jun 2 20:51 Microsoft.IdentityModel.Abstractions.dll
|
||||
2026-07-04T12:59:07.3000007Z -rwxr--r-- 1 root root 172856 Jun 2 20:52 Microsoft.IdentityModel.JsonWebTokens.dll
|
||||
2026-07-04T12:59:07.3000449Z -rwxr--r-- 1 root root 38200 Jun 2 20:51 Microsoft.IdentityModel.Logging.dll
|
||||
2026-07-04T12:59:07.3000602Z -rwxr--r-- 1 root root 407352 Jun 2 20:51 Microsoft.IdentityModel.Tokens.dll
|
||||
2026-07-04T12:59:07.3000692Z -rwxr--r-- 1 root root 24912 May 20 20:20 Microsoft.JSInterop.WebAssembly.dll
|
||||
2026-07-04T12:59:07.3000807Z -rwxr--r-- 1 root root 75088 May 20 20:19 Microsoft.JSInterop.dll
|
||||
2026-07-04T12:59:07.3000896Z -rwxr--r-- 1 root root 428880 May 20 18:30 Microsoft.VisualBasic.Core.dll
|
||||
2026-07-04T12:59:07.3000979Z -rwxr--r-- 1 root root 17232 May 20 18:31 Microsoft.VisualBasic.dll
|
||||
2026-07-04T12:59:07.3001230Z -rwxr--r-- 1 root root 15696 May 20 18:29 Microsoft.Win32.Primitives.dll
|
||||
2026-07-04T12:59:07.3001364Z -rwxr--r-- 1 root root 33104 May 20 18:29 Microsoft.Win32.Registry.dll
|
||||
2026-07-04T12:59:07.3001452Z -rwxr--r-- 1 root root 9108480 Sep 14 2023 MudBlazor.dll
|
||||
2026-07-04T12:59:07.3001536Z -rwxr--r-- 1 root root 15184 May 20 18:31 System.AppContext.dll
|
||||
2026-07-04T12:59:07.3001639Z -rwxr--r-- 1 root root 15184 May 20 18:30 System.Buffers.dll
|
||||
2026-07-04T12:59:07.3001876Z -rwxr--r-- 1 root root 88912 May 20 18:29 System.Collections.Concurrent.dll
|
||||
2026-07-04T12:59:07.3002141Z -rwxr--r-- 1 root root 251216 May 20 18:29 System.Collections.Immutable.dll
|
||||
2026-07-04T12:59:07.3002230Z -rwxr--r-- 1 root root 47952 May 20 18:29 System.Collections.NonGeneric.dll
|
||||
2026-07-04T12:59:07.3002356Z -rwxr--r-- 1 root root 47952 May 20 18:29 System.Collections.Specialized.dll
|
||||
2026-07-04T12:59:07.3011962Z -rwxr--r-- 1 root root 112976 May 20 18:28 System.Collections.dll
|
||||
2026-07-04T12:59:07.3012179Z -rwxr--r-- 1 root root 102736 May 20 18:31 System.ComponentModel.Annotations.dll
|
||||
2026-07-04T12:59:07.3012338Z -rwxr--r-- 1 root root 16720 May 20 18:31 System.ComponentModel.DataAnnotations.dll
|
||||
2026-07-04T12:59:07.3012446Z -rwxr--r-- 1 root root 26448 May 20 18:29 System.ComponentModel.EventBasedAsync.dll
|
||||
2026-07-04T12:59:07.3012536Z -rwxr--r-- 1 root root 42320 May 20 18:29 System.ComponentModel.Primitives.dll
|
||||
2026-07-04T12:59:07.3012797Z -rwxr--r-- 1 root root 316752 May 20 18:31 System.ComponentModel.TypeConverter.dll
|
||||
2026-07-04T12:59:07.3012938Z -rwxr--r-- 1 root root 16208 May 20 18:29 System.ComponentModel.dll
|
||||
2026-07-04T12:59:07.3013028Z -rwxr--r-- 1 root root 19280 May 20 18:31 System.Configuration.dll
|
||||
2026-07-04T12:59:07.3013114Z -rwxr--r-- 1 root root 54096 May 20 18:31 System.Console.dll
|
||||
2026-07-04T12:59:07.3013209Z -rwxr--r-- 1 root root 23376 May 20 18:31 System.Core.dll
|
||||
2026-07-04T12:59:07.3013292Z -rwxr--r-- 1 root root 1018192 May 20 18:31 System.Data.Common.dll
|
||||
2026-07-04T12:59:07.3013385Z -rwxr--r-- 1 root root 15696 May 20 18:31 System.Data.DataSetExtensions.dll
|
||||
2026-07-04T12:59:07.3013632Z -rwxr--r-- 1 root root 25424 May 20 18:31 System.Data.dll
|
||||
2026-07-04T12:59:07.3013742Z -rwxr--r-- 1 root root 16208 May 20 18:31 System.Diagnostics.Contracts.dll
|
||||
2026-07-04T12:59:07.3013844Z -rwxr--r-- 1 root root 15696 May 20 18:30 System.Diagnostics.Debug.dll
|
||||
2026-07-04T12:59:07.3013934Z -rwxr--r-- 1 root root 202576 May 20 18:29 System.Diagnostics.DiagnosticSource.dll
|
||||
2026-07-04T12:59:07.3014028Z -rwxr--r-- 1 root root 22864 May 20 18:29 System.Diagnostics.FileVersionInfo.dll
|
||||
2026-07-04T12:59:07.3014112Z -rwxr--r-- 1 root root 56656 May 20 18:29 System.Diagnostics.Process.dll
|
||||
2026-07-04T12:59:07.3014195Z -rwxr--r-- 1 root root 25936 May 20 18:29 System.Diagnostics.StackTrace.dll
|
||||
2026-07-04T12:59:07.3014435Z -rwxr--r-- 1 root root 31568 May 20 18:31 System.Diagnostics.TextWriterTraceListener.dll
|
||||
2026-07-04T12:59:07.3014564Z -rwxr--r-- 1 root root 15184 May 20 18:30 System.Diagnostics.Tools.dll
|
||||
2026-07-04T12:59:07.3014656Z -rwxr--r-- 1 root root 58704 May 20 18:29 System.Diagnostics.TraceSource.dll
|
||||
2026-07-04T12:59:07.3014763Z -rwxr--r-- 1 root root 16208 May 20 18:28 System.Diagnostics.Tracing.dll
|
||||
2026-07-04T12:59:07.3014864Z -rwxr--r-- 1 root root 64848 May 20 18:29 System.Drawing.Primitives.dll
|
||||
2026-07-04T12:59:07.3014949Z -rwxr--r-- 1 root root 20304 May 20 18:31 System.Drawing.dll
|
||||
2026-07-04T12:59:07.3015044Z -rwxr--r-- 1 root root 16208 May 20 18:30 System.Dynamic.Runtime.dll
|
||||
2026-07-04T12:59:07.3015280Z -rwxr--r-- 1 root root 97104 May 20 18:29 System.Formats.Asn1.dll
|
||||
2026-07-04T12:59:07.3015397Z -rwxr--r-- 1 root root 38736 May 20 18:29 System.Formats.Tar.dll
|
||||
2026-07-04T12:59:07.3015481Z -rwxr--r-- 1 root root 15696 May 20 18:30 System.Globalization.Calendars.dll
|
||||
2026-07-04T12:59:07.3015567Z -rwxr--r-- 1 root root 15184 May 20 18:30 System.Globalization.Extensions.dll
|
||||
2026-07-04T12:59:07.3015663Z -rwxr--r-- 1 root root 15696 May 20 18:30 System.Globalization.dll
|
||||
2026-07-04T12:59:07.3015747Z -rwxr--r-- 1 root root 28496 May 20 18:29 System.IO.Compression.Brotli.dll
|
||||
2026-07-04T12:59:07.3015831Z -rwxr--r-- 1 root root 15184 May 20 18:31 System.IO.Compression.FileSystem.dll
|
||||
2026-07-04T12:59:07.3016040Z -rwxr--r-- 1 root root 53584 May 20 18:29 System.IO.Compression.ZipFile.dll
|
||||
2026-07-04T12:59:07.3016293Z -rwxr--r-- 1 root root 167760 May 20 18:31 System.IO.Compression.dll
|
||||
2026-07-04T12:59:07.3016382Z -rwxr--r-- 1 root root 32080 May 20 18:29 System.IO.FileSystem.AccessControl.dll
|
||||
2026-07-04T12:59:07.3016467Z -rwxr--r-- 1 root root 23888 May 20 18:29 System.IO.FileSystem.DriveInfo.dll
|
||||
2026-07-04T12:59:07.3016562Z -rwxr--r-- 1 root root 15184 May 20 18:30 System.IO.FileSystem.Primitives.dll
|
||||
2026-07-04T12:59:07.3016652Z -rwxr--r-- 1 root root 33104 May 20 18:29 System.IO.FileSystem.Watcher.dll
|
||||
2026-07-04T12:59:07.3016895Z -rwxr--r-- 1 root root 15696 May 20 18:30 System.IO.FileSystem.dll
|
||||
2026-07-04T12:59:07.3016989Z -rwxr--r-- 1 root root 35152 May 20 18:30 System.IO.IsolatedStorage.dll
|
||||
2026-07-04T12:59:07.3017098Z -rwxr--r-- 1 root root 50000 May 20 18:31 System.IO.MemoryMappedFiles.dll
|
||||
2026-07-04T12:59:07.3017197Z -rwxr--r-- 1 root root 78160 May 20 18:29 System.IO.Pipelines.dll
|
||||
2026-07-04T12:59:07.3017283Z -rwxr--r-- 1 root root 23376 May 20 18:29 System.IO.Pipes.AccessControl.dll
|
||||
2026-07-04T12:59:07.3017385Z -rwxr--r-- 1 root root 42320 May 20 18:29 System.IO.Pipes.dll
|
||||
2026-07-04T12:59:07.3017475Z -rwxr--r-- 1 root root 15696 May 20 18:30 System.IO.UnmanagedMemoryStream.dll
|
||||
2026-07-04T12:59:07.3017708Z -rwxr--r-- 1 root root 15696 May 20 18:30 System.IO.dll
|
||||
2026-07-04T12:59:07.3017795Z -rwxr--r-- 1 root root 92000 Jun 2 20:51 System.IdentityModel.Tokens.Jwt.dll
|
||||
2026-07-04T12:59:07.3017911Z -rwxr--r-- 1 root root 456528 May 20 18:29 System.Linq.AsyncEnumerable.dll
|
||||
2026-07-04T12:59:07.3018007Z -rwxr--r-- 1 root root 575312 May 20 18:29 System.Linq.Expressions.dll
|
||||
2026-07-04T12:59:07.3018088Z -rwxr--r-- 1 root root 223056 May 20 18:31 System.Linq.Parallel.dll
|
||||
2026-07-04T12:59:07.3018173Z -rwxr--r-- 1 root root 78672 May 20 18:31 System.Linq.Queryable.dll
|
||||
2026-07-04T12:59:07.3018253Z -rwxr--r-- 1 root root 201040 May 20 18:29 System.Linq.dll
|
||||
2026-07-04T12:59:07.3018473Z -rwxr--r-- 1 root root 55632 May 20 18:28 System.Memory.dll
|
||||
2026-07-04T12:59:07.3018562Z -rwxr--r-- 1 root root 56144 May 20 18:30 System.Net.Http.Json.dll
|
||||
2026-07-04T12:59:07.3018718Z -rwxr--r-- 1 root root 296272 May 20 18:31 System.Net.Http.dll
|
||||
2026-07-04T12:59:07.3018879Z -rwxr--r-- 1 root root 56144 May 20 18:30 System.Net.HttpListener.dll
|
||||
2026-07-04T12:59:07.3019013Z -rwxr--r-- 1 root root 105296 May 20 18:31 System.Net.Mail.dll
|
||||
2026-07-04T12:59:07.3019285Z -rwxr--r-- 1 root root 24400 May 20 18:31 System.Net.NameResolution.dll
|
||||
2026-07-04T12:59:07.3019384Z -rwxr--r-- 1 root root 42320 May 20 18:29 System.Net.NetworkInformation.dll
|
||||
2026-07-04T12:59:07.3019468Z -rwxr--r-- 1 root root 27984 May 20 18:29 System.Net.Ping.dll
|
||||
2026-07-04T12:59:07.3019549Z -rwxr--r-- 1 root root 107344 May 20 18:31 System.Net.Primitives.dll
|
||||
2026-07-04T12:59:07.3019646Z -rwxr--r-- 1 root root 39248 May 20 18:30 System.Net.Quic.dll
|
||||
2026-07-04T12:59:07.3019725Z -rwxr--r-- 1 root root 65872 May 20 18:30 System.Net.Requests.dll
|
||||
2026-07-04T12:59:07.3019808Z -rwxr--r-- 1 root root 114512 May 20 18:30 System.Net.Security.dll
|
||||
2026-07-04T12:59:07.3019892Z -rwxr--r-- 1 root root 40784 May 20 18:29 System.Net.ServerSentEvents.dll
|
||||
2026-07-04T12:59:07.3020121Z -rwxr--r-- 1 root root 15184 May 20 18:31 System.Net.ServicePoint.dll
|
||||
2026-07-04T12:59:07.3020212Z -rwxr--r-- 1 root root 74576 May 20 18:29 System.Net.Sockets.dll
|
||||
2026-07-04T12:59:07.3020295Z -rwxr--r-- 1 root root 56144 May 20 18:31 System.Net.WebClient.dll
|
||||
2026-07-04T12:59:07.3020488Z -rwxr--r-- 1 root root 33104 May 20 18:29 System.Net.WebHeaderCollection.dll
|
||||
2026-07-04T12:59:07.3020573Z -rwxr--r-- 1 root root 21840 May 20 18:31 System.Net.WebProxy.dll
|
||||
2026-07-04T12:59:07.3020657Z -rwxr--r-- 1 root root 52560 May 20 18:31 System.Net.WebSockets.Client.dll
|
||||
2026-07-04T12:59:07.3020744Z -rwxr--r-- 1 root root 108880 May 20 18:31 System.Net.WebSockets.dll
|
||||
2026-07-04T12:59:07.3020970Z -rwxr--r-- 1 root root 17232 May 20 18:31 System.Net.dll
|
||||
2026-07-04T12:59:07.3021057Z -rwxr--r-- 1 root root 15696 May 20 18:28 System.Numerics.Vectors.dll
|
||||
2026-07-04T12:59:07.3021143Z -rwxr--r-- 1 root root 15184 May 20 18:31 System.Numerics.dll
|
||||
2026-07-04T12:59:07.3021232Z -rwxr--r-- 1 root root 41296 May 20 18:29 System.ObjectModel.dll
|
||||
2026-07-04T12:59:07.3021315Z -rwxr--r-- 1 root root 4880208 May 20 18:19 System.Private.CoreLib.dll
|
||||
2026-07-04T12:59:07.3021397Z -rwxr--r-- 1 root root 859472 May 20 18:31 System.Private.DataContractSerialization.dll
|
||||
2026-07-04T12:59:07.3021490Z -rwxr--r-- 1 root root 105808 May 20 18:28 System.Private.Uri.dll
|
||||
2026-07-04T12:59:07.3021829Z -rwxr--r-- 1 root root 153936 May 20 18:30 System.Private.Xml.Linq.dll
|
||||
2026-07-04T12:59:07.3021924Z -rwxr--r-- 1 root root 3106128 May 20 18:30 System.Private.Xml.dll
|
||||
2026-07-04T12:59:07.3022020Z -rwxr--r-- 1 root root 38224 May 20 18:31 System.Reflection.DispatchProxy.dll
|
||||
2026-07-04T12:59:07.3022121Z -rwxr--r-- 1 root root 15696 May 20 18:29 System.Reflection.Emit.ILGeneration.dll
|
||||
2026-07-04T12:59:07.3022214Z -rwxr--r-- 1 root root 15696 May 20 18:29 System.Reflection.Emit.Lightweight.dll
|
||||
2026-07-04T12:59:07.3022300Z -rwxr--r-- 1 root root 133456 May 20 18:29 System.Reflection.Emit.dll
|
||||
2026-07-04T12:59:07.3022534Z -rwxr--r-- 1 root root 15184 May 20 18:30 System.Reflection.Extensions.dll
|
||||
2026-07-04T12:59:07.3022623Z -rwxr--r-- 1 root root 503632 May 20 18:29 System.Reflection.Metadata.dll
|
||||
2026-07-04T12:59:07.3022707Z -rwxr--r-- 1 root root 15696 May 20 18:28 System.Reflection.Primitives.dll
|
||||
2026-07-04T12:59:07.3022794Z -rwxr--r-- 1 root root 24400 May 20 18:31 System.Reflection.TypeExtensions.dll
|
||||
2026-07-04T12:59:07.3022902Z -rwxr--r-- 1 root root 16208 May 20 18:31 System.Reflection.dll
|
||||
2026-07-04T12:59:07.3022986Z -rwxr--r-- 1 root root 15184 May 20 18:31 System.Resources.Reader.dll
|
||||
2026-07-04T12:59:07.3023069Z -rwxr--r-- 1 root root 15696 May 20 18:30 System.Resources.ResourceManager.dll
|
||||
2026-07-04T12:59:07.3023153Z -rwxr--r-- 1 root root 26960 May 20 18:31 System.Resources.Writer.dll
|
||||
2026-07-04T12:59:07.3023377Z -rwxr--r-- 1 root root 15184 May 20 18:30 System.Runtime.CompilerServices.Unsafe.dll
|
||||
2026-07-04T12:59:07.3023472Z -rwxr--r-- 1 root root 17232 May 20 18:30 System.Runtime.CompilerServices.VisualC.dll
|
||||
2026-07-04T12:59:07.3023557Z -rwxr--r-- 1 root root 17744 May 20 18:30 System.Runtime.Extensions.dll
|
||||
2026-07-04T12:59:07.3023656Z -rwxr--r-- 1 root root 15696 May 20 18:30 System.Runtime.Handles.dll
|
||||
2026-07-04T12:59:07.3023754Z -rwxr--r-- 1 root root 89936 May 20 18:31 System.Runtime.InteropServices.JavaScript.dll
|
||||
2026-07-04T12:59:07.3023845Z -rwxr--r-- 1 root root 15184 May 20 18:31 System.Runtime.InteropServices.RuntimeInformation.dll
|
||||
2026-07-04T12:59:07.3023932Z -rwxr--r-- 1 root root 64848 May 20 18:29 System.Runtime.InteropServices.dll
|
||||
2026-07-04T12:59:07.3024221Z -rwxr--r-- 1 root root 17232 May 20 18:29 System.Runtime.Intrinsics.dll
|
||||
2026-07-04T12:59:07.3024393Z -rwxr--r-- 1 root root 15696 May 20 18:29 System.Runtime.Loader.dll
|
||||
2026-07-04T12:59:07.3024484Z -rwxr--r-- 1 root root 145232 May 20 18:29 System.Runtime.Numerics.dll
|
||||
2026-07-04T12:59:07.3024579Z -rwxr--r-- 1 root root 65872 May 20 18:29 System.Runtime.Serialization.Formatters.dll
|
||||
2026-07-04T12:59:07.3024674Z -rwxr--r-- 1 root root 15696 May 20 18:31 System.Runtime.Serialization.Json.dll
|
||||
2026-07-04T12:59:07.3024767Z -rwxr--r-- 1 root root 23376 May 20 18:30 System.Runtime.Serialization.Primitives.dll
|
||||
2026-07-04T12:59:07.3025038Z -rwxr--r-- 1 root root 16720 May 20 18:31 System.Runtime.Serialization.Xml.dll
|
||||
2026-07-04T12:59:07.3025127Z -rwxr--r-- 1 root root 17232 May 20 18:31 System.Runtime.Serialization.dll
|
||||
2026-07-04T12:59:07.3025213Z -rwxr--r-- 1 root root 44880 May 20 18:28 System.Runtime.dll
|
||||
2026-07-04T12:59:07.3025296Z -rwxr--r-- 1 root root 58192 May 20 18:29 System.Security.AccessControl.dll
|
||||
2026-07-04T12:59:07.3025393Z -rwxr--r-- 1 root root 55120 May 20 18:29 System.Security.Claims.dll
|
||||
2026-07-04T12:59:07.3025477Z -rwxr--r-- 1 root root 17232 May 20 18:31 System.Security.Cryptography.Algorithms.dll
|
||||
2026-07-04T12:59:07.3025565Z -rwxr--r-- 1 root root 16208 May 20 18:31 System.Security.Cryptography.Cng.dll
|
||||
2026-07-04T12:59:07.3025922Z -rwxr--r-- 1 root root 16208 May 20 18:31 System.Security.Cryptography.Csp.dll
|
||||
2026-07-04T12:59:07.3026035Z -rwxr--r-- 1 root root 15696 May 20 18:31 System.Security.Cryptography.Encoding.dll
|
||||
2026-07-04T12:59:07.3026508Z -rwxr--r-- 1 root root 15696 May 20 18:31 System.Security.Cryptography.OpenSsl.dll
|
||||
2026-07-04T12:59:07.3026604Z -rwxr--r-- 1 root root 15696 May 20 18:31 System.Security.Cryptography.Primitives.dll
|
||||
2026-07-04T12:59:07.3026700Z -rwxr--r-- 1 root root 16720 May 20 18:31 System.Security.Cryptography.X509Certificates.dll
|
||||
2026-07-04T12:59:07.3026796Z -rwxr--r-- 1 root root 654160 May 20 18:31 System.Security.Cryptography.dll
|
||||
2026-07-04T12:59:07.3026889Z -rwxr--r-- 1 root root 37712 May 20 18:29 System.Security.Principal.Windows.dll
|
||||
2026-07-04T12:59:07.3026988Z -rwxr--r-- 1 root root 15184 May 20 18:31 System.Security.Principal.dll
|
||||
2026-07-04T12:59:07.3027225Z -rwxr--r-- 1 root root 15696 May 20 18:30 System.Security.SecureString.dll
|
||||
2026-07-04T12:59:07.3027312Z -rwxr--r-- 1 root root 18256 May 20 18:31 System.Security.dll
|
||||
2026-07-04T12:59:07.3027399Z -rwxr--r-- 1 root root 16720 May 20 18:31 System.ServiceModel.Web.dll
|
||||
2026-07-04T12:59:07.3027496Z -rwxr--r-- 1 root root 15696 May 20 18:31 System.ServiceProcess.dll
|
||||
2026-07-04T12:59:07.3027578Z -rwxr--r-- 1 root root 742736 May 20 18:29 System.Text.Encoding.CodePages.dll
|
||||
2026-07-04T12:59:07.3027663Z -rwxr--r-- 1 root root 15696 May 20 18:28 System.Text.Encoding.Extensions.dll
|
||||
2026-07-04T12:59:07.3027753Z -rwxr--r-- 1 root root 15696 May 20 18:30 System.Text.Encoding.dll
|
||||
2026-07-04T12:59:07.3027971Z -rwxr--r-- 1 root root 65872 May 20 18:32 System.Text.Encodings.Web.dll
|
||||
2026-07-04T12:59:07.3028064Z -rwxr--r-- 1 root root 649040 May 20 18:30 System.Text.Json.dll
|
||||
2026-07-04T12:59:07.3028143Z -rwxr--r-- 1 root root 384848 May 20 18:30 System.Text.RegularExpressions.dll
|
||||
2026-07-04T12:59:07.3028244Z -rwxr--r-- 1 root root 33616 May 20 18:29 System.Threading.AccessControl.dll
|
||||
2026-07-04T12:59:07.3028326Z -rwxr--r-- 1 root root 66384 May 20 18:29 System.Threading.Channels.dll
|
||||
2026-07-04T12:59:07.3028411Z -rwxr--r-- 1 root root 15696 May 20 18:28 System.Threading.Overlapped.dll
|
||||
2026-07-04T12:59:07.3028493Z -rwxr--r-- 1 root root 185680 May 20 18:29 System.Threading.Tasks.Dataflow.dll
|
||||
2026-07-04T12:59:07.3028587Z -rwxr--r-- 1 root root 15696 May 20 18:30 System.Threading.Tasks.Extensions.dll
|
||||
2026-07-04T12:59:07.3028808Z -rwxr--r-- 1 root root 61264 May 20 18:31 System.Threading.Tasks.Parallel.dll
|
||||
2026-07-04T12:59:07.3028902Z -rwxr--r-- 1 root root 16720 May 20 18:31 System.Threading.Tasks.dll
|
||||
2026-07-04T12:59:07.3028994Z -rwxr--r-- 1 root root 15696 May 20 18:28 System.Threading.Thread.dll
|
||||
2026-07-04T12:59:07.3029076Z -rwxr--r-- 1 root root 15696 May 20 18:28 System.Threading.ThreadPool.dll
|
||||
2026-07-04T12:59:07.3029160Z -rwxr--r-- 1 root root 15184 May 20 18:30 System.Threading.Timer.dll
|
||||
2026-07-04T12:59:07.3029262Z -rwxr--r-- 1 root root 44880 May 20 18:28 System.Threading.dll
|
||||
2026-07-04T12:59:07.3029345Z -rwxr--r-- 1 root root 175952 May 20 18:30 System.Transactions.Local.dll
|
||||
2026-07-04T12:59:07.3029560Z -rwxr--r-- 1 root root 16720 May 20 18:31 System.Transactions.dll
|
||||
2026-07-04T12:59:07.3029651Z -rwxr--r-- 1 root root 15696 May 20 18:30 System.ValueTuple.dll
|
||||
2026-07-04T12:59:07.3029740Z -rwxr--r-- 1 root root 30032 May 20 18:31 System.Web.HttpUtility.dll
|
||||
2026-07-04T12:59:07.3029838Z -rwxr--r-- 1 root root 15184 May 20 18:31 System.Web.dll
|
||||
2026-07-04T12:59:07.3029919Z -rwxr--r-- 1 root root 15696 May 20 18:31 System.Windows.dll
|
||||
2026-07-04T12:59:07.3030002Z -rwxr--r-- 1 root root 15696 May 20 18:31 System.Xml.Linq.dll
|
||||
2026-07-04T12:59:07.3030083Z -rwxr--r-- 1 root root 21840 May 20 18:30 System.Xml.ReaderWriter.dll
|
||||
2026-07-04T12:59:07.3030164Z -rwxr--r-- 1 root root 16208 May 20 18:31 System.Xml.Serialization.dll
|
||||
2026-07-04T12:59:07.3030381Z -rwxr--r-- 1 root root 15696 May 20 18:31 System.Xml.XDocument.dll
|
||||
2026-07-04T12:59:07.3030479Z -rwxr--r-- 1 root root 15696 May 20 18:31 System.Xml.XPath.XDocument.dll
|
||||
2026-07-04T12:59:07.3030561Z -rwxr--r-- 1 root root 15696 May 20 18:30 System.Xml.XPath.dll
|
||||
2026-07-04T12:59:07.3030650Z -rwxr--r-- 1 root root 15696 May 20 18:31 System.Xml.XmlDocument.dll
|
||||
2026-07-04T12:59:07.3030739Z -rwxr--r-- 1 root root 17744 May 20 18:31 System.Xml.XmlSerializer.dll
|
||||
2026-07-04T12:59:07.3030822Z -rwxr--r-- 1 root root 23376 May 20 18:31 System.Xml.dll
|
||||
2026-07-04T12:59:07.3030913Z -rwxr--r-- 1 root root 50000 May 20 18:32 System.dll
|
||||
2026-07-04T12:59:07.3030995Z -rw-r--r-- 1 root root 156672 Jul 4 12:56 TaxBaik.Application.dll
|
||||
2026-07-04T12:59:07.3031231Z -rw-r--r-- 1 root root 38468 Jul 4 12:56 TaxBaik.Application.pdb
|
||||
2026-07-04T12:59:07.3031318Z -rw-r--r-- 1 root root 37888 Jul 4 12:56 TaxBaik.Domain.dll
|
||||
2026-07-04T12:59:07.3031411Z -rw-r--r-- 1 root root 24100 Jul 4 12:56 TaxBaik.Domain.pdb
|
||||
2026-07-04T12:59:07.3031494Z -rw-r--r-- 1 root root 713216 Jul 4 12:58 TaxBaik.Web.Client.dll
|
||||
2026-07-04T12:59:07.3031583Z -rw-r--r-- 1 root root 373136 Jul 4 12:58 TaxBaik.Web.Client.pdb
|
||||
2026-07-04T12:59:07.3031768Z -rw-r--r-- 1 root root 2546 Jul 4 12:58 TaxBaik.Web.Client.runtimeconfig.json
|
||||
2026-07-04T12:59:07.3032037Z -rw-r--r-- 1 root root 1007340 Jul 4 12:58 TaxBaik.Web.Client.staticwebassets.endpoints.json
|
||||
2026-07-04T12:59:07.3032142Z -rw-r--r-- 1 root root 78064 Jul 4 12:58 TaxBaik.Web.Client.staticwebassets.runtime.json
|
||||
2026-07-04T12:59:07.3032230Z -rwxr--r-- 1 root root 16208 May 20 18:31 WindowsBase.dll
|
||||
2026-07-04T12:59:07.3032313Z -rwxr--r-- 1 root root 37898 May 20 18:42 dotnet.js
|
||||
2026-07-04T12:59:07.3032406Z -rwxr--r-- 1 root root 51818 May 20 18:42 dotnet.js.map
|
||||
2026-07-04T12:59:07.3032485Z -rwxr--r-- 1 root root 145050 May 20 18:43 dotnet.native.js
|
||||
2026-07-04T12:59:07.3032565Z -rwxr--r-- 1 root root 3002101 May 20 18:43 dotnet.native.wasm
|
||||
2026-07-04T12:59:07.3032781Z -rwxr--r-- 1 root root 198479 May 20 18:42 dotnet.runtime.js
|
||||
2026-07-04T12:59:07.3032873Z -rwxr--r-- 1 root root 276757 May 20 18:42 dotnet.runtime.js.map
|
||||
2026-07-04T12:59:07.3032955Z -rwxr--r-- 1 root root 956416 Apr 2 19:04 icudt_CJK.dat
|
||||
2026-07-04T12:59:07.3033032Z -rwxr--r-- 1 root root 550832 Apr 2 19:04 icudt_EFIGS.dat
|
||||
2026-07-04T12:59:07.3033111Z -rwxr--r-- 1 root root 1107168 Apr 2 19:04 icudt_no_CJK.dat
|
||||
2026-07-04T12:59:07.3033190Z -rwxr--r-- 1 root root 59728 May 20 18:31 mscorlib.dll
|
||||
2026-07-04T12:59:07.3033269Z -rwxr--r-- 1 root root 100688 May 20 18:32 netstandard.dll
|
||||
2026-07-04T12:59:07.3033348Z drwxr-xr-x 3 root root 4096 Jul 4 12:58 wwwroot
|
||||
2026-07-04T12:59:07.3071176Z total 4352
|
||||
2026-07-04T12:59:07.3071587Z drwxr-xr-x 8 root root 4096 Jul 4 12:58 .
|
||||
2026-07-04T12:59:07.3071872Z drwxr-xr-x 3 root root 4096 Jul 4 12:58 ..
|
||||
2026-07-04T12:59:07.3071979Z -rw-r--r-- 1 root root 196 Jul 4 12:58 .NETCoreApp,Version=v10.0.AssemblyAttributes.cs
|
||||
2026-07-04T12:59:07.3072092Z -rw-r--r-- 1 root root 137 Jul 4 12:58 EmbeddedAttribute.cs
|
||||
2026-07-04T12:59:07.3072373Z -rw-r--r-- 1 root root 0 Jul 4 12:58 TaxBaik..C36EE7CA.Up2Date
|
||||
2026-07-04T12:59:07.3072471Z -rw-r--r-- 1 root root 1008 Jul 4 12:58 TaxBaik.Web.Client.AssemblyInfo.cs
|
||||
2026-07-04T12:59:07.3072582Z -rw-r--r-- 1 root root 65 Jul 4 12:58 TaxBaik.Web.Client.AssemblyInfoInputs.cache
|
||||
2026-07-04T12:59:07.3072703Z -rw-r--r-- 1 root root 16355 Jul 4 12:58 TaxBaik.Web.Client.GeneratedMSBuildEditorConfig.editorconfig
|
||||
2026-07-04T12:59:07.3072810Z -rw-r--r-- 1 root root 433 Jul 4 12:58 TaxBaik.Web.Client.GlobalUsings.g.cs
|
||||
2026-07-04T12:59:07.3072898Z -rw-r--r-- 1 root root 0 Jul 4 12:58 TaxBaik.Web.Client.MvcApplicationPartsAssemblyInfo.cache
|
||||
2026-07-04T12:59:07.3073143Z -rw-r--r-- 1 root root 27329 Jul 4 12:58 TaxBaik.Web.Client.assets.cache
|
||||
2026-07-04T12:59:07.3073238Z -rw-r--r-- 1 root root 20456 Jul 4 12:58 TaxBaik.Web.Client.csproj.AssemblyReference.cache
|
||||
2026-07-04T12:59:07.3073326Z -rw-r--r-- 1 root root 65 Jul 4 12:58 TaxBaik.Web.Client.csproj.CoreCompileInputs.cache
|
||||
2026-07-04T12:59:07.3073433Z -rw-r--r-- 1 root root 136894 Jul 4 12:58 TaxBaik.Web.Client.csproj.FileListAbsolute.txt
|
||||
2026-07-04T12:59:07.3073537Z -rw-r--r-- 1 root root 713216 Jul 4 12:58 TaxBaik.Web.Client.dll
|
||||
2026-07-04T12:59:07.3073640Z -rw-r--r-- 1 root root 65 Jul 4 12:58 TaxBaik.Web.Client.genruntimeconfig.cache
|
||||
2026-07-04T12:59:07.3073730Z -rw-r--r-- 1 root root 373136 Jul 4 12:58 TaxBaik.Web.Client.pdb
|
||||
2026-07-04T12:59:07.3073973Z -rw-r--r-- 1 root root 276 Jul 4 12:58 ValidatableTypeAttribute.cs
|
||||
2026-07-04T12:59:07.3074072Z -rw-r--r-- 1 root root 3 Jul 4 12:58 blazor.build.boot-extension.json
|
||||
2026-07-04T12:59:07.3074158Z drwxr-xr-x 2 root root 20480 Jul 4 12:58 compressed
|
||||
2026-07-04T12:59:07.3074258Z -rw-r--r-- 1 root root 93392 Jul 4 12:58 dotnet.js
|
||||
2026-07-04T12:59:07.3074339Z -rw-r--r-- 1 root root 276577 Jul 4 12:58 rbcswa.dswa.cache.json
|
||||
2026-07-04T12:59:07.3074420Z drwxr-xr-x 2 root root 4096 Jul 4 12:58 ref
|
||||
2026-07-04T12:59:07.3074500Z drwxr-xr-x 2 root root 4096 Jul 4 12:58 refint
|
||||
2026-07-04T12:59:07.3074734Z -rw-r--r-- 1 root root 327 Jul 4 12:58 rjimswa.dswa.cache.json
|
||||
2026-07-04T12:59:07.3074829Z -rw-r--r-- 1 root root 3434 Jul 4 12:58 rjsmcshtml.dswa.cache.json
|
||||
2026-07-04T12:59:07.3074912Z -rw-r--r-- 1 root root 3434 Jul 4 12:58 rjsmrazor.dswa.cache.json
|
||||
2026-07-04T12:59:07.3074999Z -rw-r--r-- 1 root root 4208 Jul 4 12:58 rpswa.dswa.cache.json
|
||||
2026-07-04T12:59:07.3075082Z drwxr-xr-x 2 root root 4096 Jul 4 12:58 staticwebassets
|
||||
2026-07-04T12:59:07.3075161Z -rw-r--r-- 1 root root 1007340 Jul 4 12:58 staticwebassets.build.endpoints.json
|
||||
2026-07-04T12:59:07.3075247Z -rw-r--r-- 1 root root 1564906 Jul 4 12:58 staticwebassets.build.json
|
||||
2026-07-04T12:59:07.3075331Z -rw-r--r-- 1 root root 44 Jul 4 12:58 staticwebassets.build.json.cache
|
||||
2026-07-04T12:59:07.3075530Z -rw-r--r-- 1 root root 78064 Jul 4 12:58 staticwebassets.development.json
|
||||
2026-07-04T12:59:07.3075619Z -rw-r--r-- 1 root root 0 Jul 4 12:58 swae.build.ex.cache
|
||||
2026-07-04T12:59:07.3075707Z drwxr-xr-x 2 root root 4096 Jul 4 12:58 tmp-webcil
|
||||
2026-07-04T12:59:07.3075785Z drwxr-xr-x 2 root root 20480 Jul 4 12:58 webcil
|
||||
2026-07-04T13:01:22.5627758Z ✓ Publish Web elapsed: 193s
|
||||
2026-07-04T13:01:22.5646529Z -rw-r--r-- 1 root root 2.2M Jul 4 13:01 ./publish-logs/publish-web.binlog
|
||||
2026-07-04T13:01:22.6880698Z ::group::Run set -e
|
||||
2026-07-04T13:01:22.6881027Z set -e
|
||||
2026-07-04T13:01:22.6881197Z mkdir -p ./publish-logs
|
||||
2026-07-04T13:01:22.6881283Z # Proxy is not part of the solution restore graph, so restore it once
|
||||
2026-07-04T13:01:22.6881372Z # here before publishing to avoid NETSDK1004 in CI.
|
||||
2026-07-04T13:01:22.6881469Z dotnet restore src/TaxBaik.Proxy/
|
||||
2026-07-04T13:01:22.6881543Z dotnet build src/TaxBaik.Proxy/TaxBaik.Proxy.csproj -c Release --no-restore
|
||||
2026-07-04T13:01:22.6881631Z start=$(date +%s)
|
||||
2026-07-04T13:01:22.6881698Z dotnet publish src/TaxBaik.Proxy/ \
|
||||
2026-07-04T13:01:22.6881795Z -c Release \
|
||||
2026-07-04T13:01:22.6882017Z -o ./publish/proxy \
|
||||
2026-07-04T13:01:22.6882108Z --no-restore \
|
||||
2026-07-04T13:01:22.6882193Z --no-build \
|
||||
2026-07-04T13:01:22.6882265Z -p:PublishReadyToRun=false \
|
||||
2026-07-04T13:01:22.6882334Z -p:PerformanceSummary=true \
|
||||
2026-07-04T13:01:22.6882404Z -clp:Summary \
|
||||
2026-07-04T13:01:22.6882495Z -bl:./publish-logs/publish-proxy.binlog
|
||||
2026-07-04T13:01:22.6882564Z end=$(date +%s)
|
||||
2026-07-04T13:01:22.6882635Z echo "✓ Publish Proxy elapsed: $((end - start))s"
|
||||
2026-07-04T13:01:22.6882738Z ls -lh ./publish-logs/publish-proxy.binlog
|
||||
2026-07-04T13:01:22.6882814Z shell: bash --noprofile --norc -e -o pipefail {0}
|
||||
2026-07-04T13:01:22.6882907Z ::endgroup::
|
||||
2026-07-04T13:01:24.3061500Z Determining projects to restore...
|
||||
2026-07-04T13:01:24.9616018Z Restored /workspace/***/taxbaik/src/TaxBaik.Proxy/TaxBaik.Proxy.csproj (in 156 ms).
|
||||
2026-07-04T13:01:26.9924481Z TaxBaik.Proxy -> /workspace/***/taxbaik/src/TaxBaik.Proxy/bin/Release/net10.0/TaxBaik.Proxy.dll
|
||||
2026-07-04T13:01:27.0997744Z
|
||||
2026-07-04T13:01:27.1028989Z Build succeeded.
|
||||
2026-07-04T13:01:27.1047131Z 0 Warning(s)
|
||||
2026-07-04T13:01:27.1047398Z 0 Error(s)
|
||||
2026-07-04T13:01:27.1047541Z
|
||||
2026-07-04T13:01:27.1047621Z Time Elapsed 00:00:01.55
|
||||
2026-07-04T13:01:28.9796929Z TaxBaik.Proxy -> /workspace/***/taxbaik/publish/proxy/
|
||||
2026-07-04T13:01:29.0117388Z
|
||||
2026-07-04T13:01:29.0137929Z Build succeeded.
|
||||
2026-07-04T13:01:29.0142336Z 0 Warning(s)
|
||||
2026-07-04T13:01:29.0144041Z 0 Error(s)
|
||||
2026-07-04T13:01:29.0147048Z
|
||||
2026-07-04T13:01:29.0149487Z Time Elapsed 00:00:01.04
|
||||
2026-07-04T13:01:29.0760476Z ✓ Publish Proxy elapsed: 2s
|
||||
2026-07-04T13:01:29.0761097Z -rw-r--r-- 1 root root 335K Jul 4 13:01 ./publish-logs/publish-proxy.binlog
|
||||
2026-07-04T13:01:29.2472841Z ::group::Run set -e
|
||||
2026-07-04T13:01:29.2473270Z set -e
|
||||
2026-07-04T13:01:29.2473414Z JWT_SECRET_KEY="***"
|
||||
2026-07-04T13:01:29.2473519Z TELEGRAM_BOT_TOKEN="***"
|
||||
2026-07-04T13:01:29.2473612Z TELEGRAM_CHAT_ID="***"
|
||||
2026-07-04T13:01:29.2473691Z TELEGRAM_INQUIRY_CHAT_ID=""
|
||||
2026-07-04T13:01:29.2473786Z TELEGRAM_SYSTEM_CHAT_ID=""
|
||||
2026-07-04T13:01:29.2473869Z [ -z "$JWT_SECRET_KEY" ] && { echo "Missing TAXBAIK_JWT_SECRET_KEY" >&2; exit 1; }
|
||||
2026-07-04T13:01:29.2473974Z [ -z "$TELEGRAM_BOT_TOKEN" ] && { echo "Missing TAXBAIK_TELEGRAM_BOT_TOKEN" >&2; exit 1; }
|
||||
2026-07-04T13:01:29.2474063Z [ -z "$TELEGRAM_CHAT_ID" ] && { echo "Missing TAXBAIK_TELEGRAM_CHAT_ID" >&2; exit 1; }
|
||||
2026-07-04T13:01:29.2474147Z [ -z "$TELEGRAM_INQUIRY_CHAT_ID" ] && TELEGRAM_INQUIRY_CHAT_ID="$TELEGRAM_CHAT_ID"
|
||||
2026-07-04T13:01:29.2474240Z [ -z "$TELEGRAM_SYSTEM_CHAT_ID" ] && TELEGRAM_SYSTEM_CHAT_ID="-5585148480"
|
||||
2026-07-04T13:01:29.2474325Z JWT_SECRET_KEY="$JWT_SECRET_KEY" \
|
||||
2026-07-04T13:01:29.2474401Z TELEGRAM_BOT_TOKEN="$TELEGRAM_BOT_TOKEN" \
|
||||
2026-07-04T13:01:29.2474541Z TELEGRAM_CHAT_ID="$TELEGRAM_CHAT_ID" \
|
||||
2026-07-04T13:01:29.2474616Z TELEGRAM_INQUIRY_CHAT_ID="$TELEGRAM_INQUIRY_CHAT_ID" \
|
||||
2026-07-04T13:01:29.2474692Z TELEGRAM_SYSTEM_CHAT_ID="$TELEGRAM_SYSTEM_CHAT_ID" \
|
||||
2026-07-04T13:01:29.2474783Z python3 -c '
|
||||
2026-07-04T13:01:29.2474854Z import json, os, pathlib
|
||||
2026-07-04T13:01:29.2474933Z pathlib.Path("./publish/appsettings.Production.json").write_text(
|
||||
2026-07-04T13:01:29.2475012Z json.dumps({
|
||||
2026-07-04T13:01:29.2475107Z "Jwt": {"SecretKey": os.environ["JWT_SECRET_KEY"]},
|
||||
2026-07-04T13:01:29.2475203Z "Telegram": {
|
||||
2026-07-04T13:01:29.2475275Z "BotToken": os.environ["TELEGRAM_BOT_TOKEN"],
|
||||
2026-07-04T13:01:29.2475367Z "ChatId": os.environ["TELEGRAM_CHAT_ID"],
|
||||
2026-07-04T13:01:29.2475442Z "InquiryChatId": os.environ["TELEGRAM_INQUIRY_CHAT_ID"],
|
||||
2026-07-04T13:01:29.2475513Z "SystemChatId": os.environ["TELEGRAM_SYSTEM_CHAT_ID"]
|
||||
2026-07-04T13:01:29.2475584Z }
|
||||
2026-07-04T13:01:29.2475671Z }, ensure_ascii=False, indent=2),
|
||||
2026-07-04T13:01:29.2475739Z encoding="utf-8"
|
||||
2026-07-04T13:01:29.2475812Z )'
|
||||
2026-07-04T13:01:29.2475895Z test -s ./publish/appsettings.Production.json || { echo "appsettings.Production.json is empty" >&2; exit 1; }
|
||||
2026-07-04T13:01:29.2475995Z shell: bash --noprofile --norc -e -o pipefail {0}
|
||||
2026-07-04T13:01:29.2476277Z ::endgroup::
|
||||
2026-07-04T13:01:29.5445729Z ::group::Run test -s ./publish/proxy/TaxBaik.Proxy.dll || { echo "TaxBaik.Proxy.dll missing" >&2; exit 1; }
|
||||
2026-07-04T13:01:29.5446479Z test -s ./publish/proxy/TaxBaik.Proxy.dll || { echo "TaxBaik.Proxy.dll missing" >&2; exit 1; }
|
||||
2026-07-04T13:01:29.5446656Z test -s ./publish/proxy/TaxBaik.Proxy.runtimeconfig.json || { echo "TaxBaik.Proxy.runtimeconfig.json missing" >&2; exit 1; }
|
||||
2026-07-04T13:01:29.5446772Z shell: bash --noprofile --norc -e -o pipefail {0}
|
||||
2026-07-04T13:01:29.5446901Z ::endgroup::
|
||||
2026-07-04T13:01:29.7396976Z ::group::Run mkdir -p ./publish/db && cp -r db/migrations ./publish/db/ || true
|
||||
2026-07-04T13:01:29.7397352Z mkdir -p ./publish/db && cp -r db/migrations ./publish/db/ || true
|
||||
2026-07-04T13:01:29.7397484Z shell: bash --noprofile --norc -e -o pipefail {0}
|
||||
2026-07-04T13:01:29.7397589Z ::endgroup::
|
||||
2026-07-04T13:01:30.0169769Z ::group::Run bash scripts/validate_migrations.sh db/migrations
|
||||
2026-07-04T13:01:30.0170284Z bash scripts/validate_migrations.sh db/migrations
|
||||
2026-07-04T13:01:30.0170495Z shell: bash --noprofile --norc -e -o pipefail {0}
|
||||
2026-07-04T13:01:30.0170623Z ::endgroup::
|
||||
2026-07-04T13:01:30.1873738Z Duplicate version check passed.
|
||||
2026-07-04T13:01:30.3350394Z ::group::Run bash scripts/validate_kst_timestamps.sh
|
||||
2026-07-04T13:01:30.3350747Z bash scripts/validate_kst_timestamps.sh
|
||||
2026-07-04T13:01:30.3350854Z shell: bash --noprofile --norc -e -o pipefail {0}
|
||||
2026-07-04T13:01:30.3350983Z ::endgroup::
|
||||
2026-07-04T13:01:30.4075762Z KST timestamp harness passed.
|
||||
2026-07-04T13:01:30.5339955Z ::group::Run COMMIT_HASH=$(git rev-parse --short HEAD)
|
||||
2026-07-04T13:01:30.5340420Z COMMIT_HASH=$(git rev-parse --short HEAD)
|
||||
2026-07-04T13:01:30.5340542Z BUILD_TIME=$(TZ=Asia/Seoul date +'%Y-%m-%d %H:%M:%S KST')
|
||||
2026-07-04T13:01:30.5340635Z mkdir -p ./publish/wwwroot
|
||||
2026-07-04T13:01:30.5340751Z printf '{\n "version": "%s",\n "built": "%s"\n}\n' "$COMMIT_HASH" "$BUILD_TIME" > ./publish/wwwroot/version.json
|
||||
2026-07-04T13:01:30.5340864Z echo "✓ Build: $COMMIT_HASH @ $BUILD_TIME"
|
||||
2026-07-04T13:01:30.5340985Z shell: bash --noprofile --norc -e -o pipefail {0}
|
||||
2026-07-04T13:01:30.5341090Z ::endgroup::
|
||||
2026-07-04T13:01:30.5999292Z ✓ Build: c00d237 @ 2026-07-04 22:01:30 KST
|
||||
2026-07-04T13:01:30.7264039Z ::group::Run mkdir -p ~/.ssh
|
||||
2026-07-04T13:01:30.7264431Z mkdir -p ~/.ssh
|
||||
2026-07-04T13:01:30.7264604Z SSH_KEY_B64="***"
|
||||
2026-07-04T13:01:30.7264799Z SSH_KEY_RAW="***"
|
||||
2026-07-04T13:01:30.7265065Z if [ -n "$SSH_KEY_B64" ]; then
|
||||
2026-07-04T13:01:30.7265231Z printf '%s' "$SSH_KEY_B64" | base64 -d > ~/.ssh/id_ed25519
|
||||
2026-07-04T13:01:30.7265382Z elif [ -n "$SSH_KEY_RAW" ]; then
|
||||
2026-07-04T13:01:30.7265513Z if printf '%s' "$SSH_KEY_RAW" | grep -q 'BEGIN .*PRIVATE KEY'; then
|
||||
2026-07-04T13:01:30.7265665Z printf '%b\n' "$SSH_KEY_RAW" > ~/.ssh/id_ed25519
|
||||
2026-07-04T13:01:30.7265813Z else
|
||||
2026-07-04T13:01:30.7265955Z printf '%s' "$SSH_KEY_RAW" | base64 -d > ~/.ssh/id_ed25519
|
||||
2026-07-04T13:01:30.7266448Z fi
|
||||
2026-07-04T13:01:30.7266624Z else
|
||||
2026-07-04T13:01:30.7266747Z echo "Missing DEPLOY_SSH_KEY_B64 or DEPLOY_SSH_KEY" >&2; exit 1
|
||||
2026-07-04T13:01:30.7266892Z fi
|
||||
2026-07-04T13:01:30.7267009Z sed -i 's/\r$//' ~/.ssh/id_ed25519
|
||||
2026-07-04T13:01:30.7267138Z chmod 600 ~/.ssh/id_ed25519
|
||||
2026-07-04T13:01:30.7267222Z ssh-keyscan -H "***" >> ~/.ssh/known_hosts 2>/dev/null || true
|
||||
2026-07-04T13:01:30.7267363Z shell: bash --noprofile --norc -e -o pipefail {0}
|
||||
2026-07-04T13:01:30.7267559Z ::endgroup::
|
||||
2026-07-04T13:01:31.3915758Z ::group::Run cp deploy_gb.sh ./publish/deploy_gb.sh
|
||||
2026-07-04T13:01:31.3916326Z cp deploy_gb.sh ./publish/deploy_gb.sh
|
||||
2026-07-04T13:01:31.3916448Z mkdir -p ./publish/scripts
|
||||
2026-07-04T13:01:31.3916532Z cp scripts/validate_migrations.sh ./publish/scripts/validate_migrations.sh
|
||||
2026-07-04T13:01:31.3916629Z chmod +x ./publish/scripts/validate_migrations.sh
|
||||
2026-07-04T13:01:31.3916706Z tar -czf taxbaik_deploy.tgz -C ./publish .
|
||||
2026-07-04T13:01:31.3916791Z echo "✓ Package: $(du -sh taxbaik_deploy.tgz | cut -f1)"
|
||||
2026-07-04T13:01:31.3916894Z shell: bash --noprofile --norc -e -o pipefail {0}
|
||||
2026-07-04T13:01:31.3916989Z ::endgroup::
|
||||
2026-07-04T13:01:34.5550762Z ✓ Package: 23M
|
||||
2026-07-04T13:01:34.6596310Z ::group::Run set -e
|
||||
2026-07-04T13:01:34.6596644Z set -e
|
||||
2026-07-04T13:01:34.6596755Z export TAXBAIK_DEPLOY_FROM_CI=1
|
||||
2026-07-04T13:01:34.6596854Z TIMESTAMP=$(TZ=Asia/Seoul date +%Y%m%d_%H%M%S)
|
||||
2026-07-04T13:01:34.6596935Z COMMIT=$(git rev-parse --short HEAD)
|
||||
2026-07-04T13:01:34.6597016Z DEPLOY_HOST="***"
|
||||
2026-07-04T13:01:34.6597103Z DEPLOY_USER="***"
|
||||
2026-07-04T13:01:34.6597300Z TELEGRAM_BOT_TOKEN="***"
|
||||
2026-07-04T13:01:34.6597384Z TELEGRAM_SYSTEM_CHAT_ID=""
|
||||
2026-07-04T13:01:34.6597460Z TELEGRAM_CHAT_ID="${TELEGRAM_SYSTEM_CHAT_ID:--5585148480}"
|
||||
2026-07-04T13:01:34.6597556Z
|
||||
2026-07-04T13:01:34.6597626Z send_telegram() {
|
||||
2026-07-04T13:01:34.6597703Z local text="$1"
|
||||
2026-07-04T13:01:34.6597779Z if [ -z "$TELEGRAM_BOT_TOKEN" ]; then
|
||||
2026-07-04T13:01:34.6597884Z echo "Skipping Telegram notification: missing TAXBAIK_TELEGRAM_BOT_TOKEN" >&2
|
||||
2026-07-04T13:01:34.6597983Z return 0
|
||||
2026-07-04T13:01:34.6598050Z fi
|
||||
2026-07-04T13:01:34.6598129Z
|
||||
2026-07-04T13:01:34.6598193Z curl -fsS -X POST "https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/sendMessage" \
|
||||
2026-07-04T13:01:34.6598278Z -d "chat_id=${TELEGRAM_CHAT_ID}" \
|
||||
2026-07-04T13:01:34.6598353Z --data-urlencode "text=${text}" \
|
||||
2026-07-04T13:01:34.6598442Z -d "parse_mode=HTML" >/dev/null || true
|
||||
2026-07-04T13:01:34.6598515Z }
|
||||
2026-07-04T13:01:34.6598583Z
|
||||
2026-07-04T13:01:34.6598655Z notify_failure() {
|
||||
2026-07-04T13:01:34.6598728Z local exit_code=$?
|
||||
2026-07-04T13:01:34.6598798Z send_telegram "❌ <b>TaxBaik 배포 실패</b>
|
||||
2026-07-04T13:01:34.6598890Z
|
||||
2026-07-04T13:01:34.6598968Z 커밋: <code>${COMMIT}</code>
|
||||
2026-07-04T13:01:34.6599054Z 시간: <code>${TIMESTAMP}</code>
|
||||
2026-07-04T13:01:34.6599132Z 단계: CI/CD deploy"
|
||||
2026-07-04T13:01:34.6599222Z exit "$exit_code"
|
||||
2026-07-04T13:01:34.6599293Z }
|
||||
2026-07-04T13:01:34.6599355Z
|
||||
2026-07-04T13:01:34.6599452Z trap notify_failure ERR
|
||||
2026-07-04T13:01:34.6599539Z
|
||||
2026-07-04T13:01:34.6599604Z echo "=== Deploying TaxBaik $COMMIT ($TIMESTAMP) ==="
|
||||
2026-07-04T13:01:34.6599681Z
|
||||
2026-07-04T13:01:34.6599753Z # 1. 아티팩트 업로드
|
||||
2026-07-04T13:01:34.6599828Z scp -i ~/.ssh/id_ed25519 -o StrictHostKeyChecking=yes \
|
||||
2026-07-04T13:01:34.6599908Z taxbaik_deploy.tgz "$DEPLOY_USER@$DEPLOY_HOST:/tmp/taxbaik_${TIMESTAMP}.tgz"
|
||||
2026-07-04T13:01:34.6599993Z
|
||||
2026-07-04T13:01:34.6600070Z # 2. 서버에서 배포 + 헬스 체크 (SSH 1회 연결로 처리, Green-Blue 지원)
|
||||
2026-07-04T13:01:34.6600159Z ssh -i ~/.ssh/id_ed25519 -o StrictHostKeyChecking=yes \
|
||||
2026-07-04T13:01:34.6600240Z -o ServerAliveInterval=10 \
|
||||
2026-07-04T13:01:34.6600323Z "$DEPLOY_USER@$DEPLOY_HOST" TAXBAIK_DEPLOY_FROM_CI=1 bash << REMOTE
|
||||
2026-07-04T13:01:34.6600403Z set -e
|
||||
2026-07-04T13:01:34.6600473Z DEPLOY_HOME="/home/***"
|
||||
2026-07-04T13:01:34.6600555Z DEPLOY_DIR="\$DEPLOY_HOME/deployments/taxbaik_${TIMESTAMP}"
|
||||
2026-07-04T13:01:34.6600671Z TIMESTAMP="${TIMESTAMP}"
|
||||
2026-07-04T13:01:34.6600741Z COMMIT="${COMMIT}"
|
||||
2026-07-04T13:01:34.6600810Z
|
||||
2026-07-04T13:01:34.6600871Z echo "--- [1/5] 압축 해제 ---"
|
||||
2026-07-04T13:01:34.6600946Z mkdir -p "\$DEPLOY_DIR"
|
||||
2026-07-04T13:01:34.6601017Z tar -xzf "/tmp/taxbaik_\${TIMESTAMP}.tgz" -C "\$DEPLOY_DIR"
|
||||
2026-07-04T13:01:34.6601091Z rm -f "/tmp/taxbaik_\${TIMESTAMP}.tgz"
|
||||
2026-07-04T13:01:34.6601165Z
|
||||
2026-07-04T13:01:34.6601224Z echo "--- [2/5] 운영 설정 검증 ---"
|
||||
2026-07-04T13:01:34.6601302Z test -s "\$DEPLOY_DIR/appsettings.Production.json" \
|
||||
2026-07-04T13:01:34.6601375Z || { echo "FATAL: appsettings.Production.json 없음" >&2; exit 1; }
|
||||
2026-07-04T13:01:34.6601452Z test -s "\$DEPLOY_DIR/proxy/TaxBaik.Proxy.dll" \
|
||||
2026-07-04T13:01:34.6601525Z || { echo "FATAL: TaxBaik.Proxy.dll 없음" >&2; exit 1; }
|
||||
2026-07-04T13:01:34.6601608Z
|
||||
2026-07-04T13:01:34.6601676Z echo "--- [3/5] 마이그레이션 사전 검증 ---"
|
||||
2026-07-04T13:01:34.6601750Z test -x "\$DEPLOY_DIR/scripts/validate_migrations.sh" \
|
||||
2026-07-04T13:01:34.6601824Z || { echo "FATAL: validate_migrations.sh 없음" >&2; exit 1; }
|
||||
2026-07-04T13:01:34.6602022Z "\$DEPLOY_DIR/scripts/validate_migrations.sh" "\$DEPLOY_DIR/db/migrations" "postgresql://taxbaik:taxbaik123@localhost:5432/taxbaikdb"
|
||||
2026-07-04T13:01:34.6602131Z
|
||||
2026-07-04T13:01:34.6602198Z echo "--- [4/5] Green-Blue 배포 실행 ---"
|
||||
2026-07-04T13:01:34.6602279Z chmod +x "\$DEPLOY_DIR/deploy_gb.sh"
|
||||
2026-07-04T13:01:34.6602356Z "\$DEPLOY_DIR/deploy_gb.sh" "\$DEPLOY_DIR"
|
||||
2026-07-04T13:01:34.6602427Z
|
||||
2026-07-04T13:01:34.6602489Z echo "--- [4.5/5] Nginx 설정 검증 ---"
|
||||
2026-07-04T13:01:34.6602561Z # 실제 로드되는 파일은 sites-enabled/의 심볼릭 링크 대상만이다.
|
||||
2026-07-04T13:01:34.6602644Z # sites-available/에 다른 파일(예: default)이 있어도 sites-enabled에
|
||||
2026-07-04T13:01:34.6602727Z # 링크되어 있지 않으면 nginx는 그 내용을 절대 읽지 않는다.
|
||||
2026-07-04T13:01:34.6602804Z NGINX_CONF=""
|
||||
2026-07-04T13:01:34.6602878Z for f in /etc/nginx/sites-enabled/*; do
|
||||
2026-07-04T13:01:34.6602947Z if [ -e "\$f" ] && grep -q "location /taxbaik" "\$f" 2>/dev/null; then
|
||||
2026-07-04T13:01:34.6603031Z NGINX_CONF=\$(readlink -f "\$f")
|
||||
2026-07-04T13:01:34.6603100Z break
|
||||
2026-07-04T13:01:34.6603168Z fi
|
||||
2026-07-04T13:01:34.6603237Z done
|
||||
2026-07-04T13:01:34.6603297Z
|
||||
2026-07-04T13:01:34.6603360Z if [ -z "\$NGINX_CONF" ]; then
|
||||
2026-07-04T13:01:34.6603428Z echo "❌ FATAL: sites-enabled/ 안에서 'location /taxbaik'를 정의한 파일을 찾을 수 없음" >&2
|
||||
2026-07-04T13:01:34.6603520Z echo " sites-available/에 파일을 수정해도 sites-enabled에 심볼릭 링크되어 있지 않으면 반영되지 않는다." >&2
|
||||
2026-07-04T13:01:34.6603616Z exit 1
|
||||
2026-07-04T13:01:34.6603681Z fi
|
||||
2026-07-04T13:01:34.6603749Z echo "실제 로드되는 설정 파일: \$NGINX_CONF"
|
||||
2026-07-04T13:01:34.6603826Z
|
||||
2026-07-04T13:01:34.6603893Z # 불변식: '/'와 '/taxbaik' location 모두 반드시 127.0.0.1:5001 (TaxBaik.Proxy)을
|
||||
2026-07-04T13:01:34.6603979Z # 가리켜야 한다. 5003/5004를 직접 하드코딩하면 Green-Blue 포트 전환 시
|
||||
2026-07-04T13:01:34.6604062Z # 죽은 포트를 가리키게 되어 502/404가 발생한다 (실제 발생했던 장애).
|
||||
2026-07-04T13:01:34.6604145Z if grep -E "proxy_pass\s+http://127\.0\.0\.1:500[34]" "\$NGINX_CONF" > /dev/null 2>&1; then
|
||||
2026-07-04T13:01:34.6604235Z echo "❌ FATAL: \$NGINX_CONF 가 포트 5003/5004를 직접 참조함 (Green-Blue 전환 시 502 발생)" >&2
|
||||
2026-07-04T13:01:34.6604332Z echo " 수정: sudo sed -i 's|127.0.0.1:500[34]|127.0.0.1:5001|g' \$NGINX_CONF && sudo nginx -t && sudo systemctl reload nginx" >&2
|
||||
2026-07-04T13:01:34.6604421Z exit 1
|
||||
2026-07-04T13:01:34.6604491Z fi
|
||||
2026-07-04T13:01:34.6604558Z
|
||||
2026-07-04T13:01:34.6604619Z # proxy_pass에 URI(끝 슬래시)가 있으면 nginx가 요청 경로를 재작성하며,
|
||||
2026-07-04T13:01:34.6607916Z # location 접두사와 슬래시 개수가 안 맞으면 백엔드로 이중 슬래시(//)가
|
||||
2026-07-04T13:01:34.6608040Z # 전달되어 404가 발생한다 (실제 발생했던 장애). 접두사 location에서는
|
||||
2026-07-04T13:01:34.6608133Z # proxy_pass에 URI를 붙이지 않는다.
|
||||
2026-07-04T13:01:34.6608233Z if grep -E "location\s+/taxbaik\s*\{" -A 1 "\$NGINX_CONF" | grep -qE "proxy_pass\s+http://127\.0\.0\.1:5001/;"; then
|
||||
2026-07-04T13:01:34.6608347Z echo "❌ FATAL: location /taxbaik 의 proxy_pass 에 불필요한 trailing slash가 있음 (이중 슬래시로 인한 404 위험)" >&2
|
||||
2026-07-04T13:01:34.6608443Z exit 1
|
||||
2026-07-04T13:01:34.6608513Z fi
|
||||
2026-07-04T13:01:34.6608578Z
|
||||
2026-07-04T13:01:34.6608647Z echo "✓ Nginx 설정 검증 통과 (실제 로드 파일 확인 + 포트 5001 고정 + trailing slash 없음)"
|
||||
2026-07-04T13:01:34.6608736Z
|
||||
2026-07-04T13:01:34.6608799Z echo "--- [5/5] 헬스 체크 (최대 60초) ---"
|
||||
2026-07-04T13:01:34.6608888Z ATTEMPTS=20
|
||||
2026-07-04T13:01:34.6608968Z for i in \$(seq 1 \$ATTEMPTS); do
|
||||
2026-07-04T13:01:34.6609044Z STATUS=\$(curl -sf -o /dev/null -w '%{http_code}' http://127.0.0.1:5001/taxbaik/healthz 2>/dev/null || echo "000")
|
||||
2026-07-04T13:01:34.6609143Z if [ "\$STATUS" = "200" ]; then
|
||||
2026-07-04T13:01:34.6609218Z echo "✓ [1/6] 헬스 체크 완료"
|
||||
2026-07-04T13:01:34.6609291Z
|
||||
2026-07-04T13:01:34.6609353Z # 검증 1: 메인 페이지 로드. curl -L + -w 는 리다이렉트 체인의 상태코드를
|
||||
2026-07-04T13:01:34.6609448Z # 이어붙이므로, 첫 응답 코드만 받아 200/3xx를 허용한다.
|
||||
2026-07-04T13:01:34.6609531Z MAIN_STATUS=\$(curl -fsS -o /dev/null -w '%{http_code}' http://127.0.0.1:5001/taxbaik/ 2>/dev/null || echo "000")
|
||||
2026-07-04T13:01:34.6609626Z if ! printf '%s' "\$MAIN_STATUS" | grep -Eq '^(200|301|302|307|308)$'; then
|
||||
2026-07-04T13:01:34.6609715Z echo "❌ 메인 페이지 로드 실패 (상태: \$MAIN_STATUS)" >&2
|
||||
2026-07-04T13:01:34.6609801Z exit 1
|
||||
2026-07-04T13:01:34.6609869Z fi
|
||||
2026-07-04T13:01:34.6609935Z echo "✓ [2/6] 메인 페이지 로드 완료"
|
||||
2026-07-04T13:01:34.6610016Z
|
||||
2026-07-04T13:01:34.6610077Z # 검증 2: CSS 파일 로드
|
||||
2026-07-04T13:01:34.6610147Z CSS_STATUS=\$(curl -sf -o /dev/null -w '%{http_code}' http://127.0.0.1:5001/taxbaik/css/admin.css 2>/dev/null || echo "000")
|
||||
2026-07-04T13:01:34.6610236Z if [ "\$CSS_STATUS" != "200" ]; then
|
||||
2026-07-04T13:01:34.6610312Z echo "❌ CSS 파일 로드 실패 (상태: \$CSS_STATUS)" >&2
|
||||
2026-07-04T13:01:34.6610402Z exit 1
|
||||
2026-07-04T13:01:34.6610470Z fi
|
||||
2026-07-04T13:01:34.6610544Z echo "✓ [3/6] CSS 파일 로드 완료"
|
||||
2026-07-04T13:01:34.6610621Z
|
||||
2026-07-04T13:01:34.6610685Z # 검증 3: 버전 정보. 파일 존재만 보면 5001이 잘못된 구 프로세스를
|
||||
2026-07-04T13:01:34.6610769Z # 가리키는 장애를 놓치므로, HTTP 응답이 이번 커밋인지 확인한다.
|
||||
2026-07-04T13:01:34.6610858Z if [ ! -s "\$DEPLOY_DIR/wwwroot/version.json" ]; then
|
||||
2026-07-04T13:01:34.6610939Z echo "❌ version.json 누락" >&2
|
||||
2026-07-04T13:01:34.6611026Z exit 1
|
||||
2026-07-04T13:01:34.6611104Z fi
|
||||
2026-07-04T13:01:34.6611170Z VERSION_JSON=\$(curl -fsS http://127.0.0.1:5001/taxbaik/version.json 2>/dev/null || true)
|
||||
2026-07-04T13:01:34.6611253Z if ! printf '%s' "\$VERSION_JSON" | grep -q "\"version\": \"\$COMMIT\""; then
|
||||
2026-07-04T13:01:34.6611332Z echo "❌ 5001 프록시가 이번 배포 버전을 제공하지 않음" >&2
|
||||
2026-07-04T13:01:34.6611415Z echo " expected: \$COMMIT" >&2
|
||||
2026-07-04T13:01:34.6611490Z echo " actual: \$VERSION_JSON" >&2
|
||||
2026-07-04T13:01:34.6611563Z echo " 확인: 5001 포트가 TaxBaik.Proxy.dll인지, /home/***/taxbaik_port가 새 포트인지 점검" >&2
|
||||
2026-07-04T13:01:34.6611663Z exit 1
|
||||
2026-07-04T13:01:34.6611729Z fi
|
||||
2026-07-04T13:01:34.6611794Z echo "✓ [4/6] 버전 정보 확인 완료"
|
||||
2026-07-04T13:01:34.6612039Z
|
||||
2026-07-04T13:01:34.6612103Z # 검증 4: 5001 프록시 확인
|
||||
2026-07-04T13:01:34.6612177Z if ! ss -tlnp | grep -q ':5001 '; then
|
||||
2026-07-04T13:01:34.6612250Z echo "❌ 5001 프록시가 실행 중이 아님" >&2
|
||||
2026-07-04T13:01:34.6612338Z exit 1
|
||||
2026-07-04T13:01:34.6612405Z fi
|
||||
2026-07-04T13:01:34.6612476Z echo "✓ [5/6] 5001 프록시 확인 완료"
|
||||
2026-07-04T13:01:34.6612558Z
|
||||
2026-07-04T13:01:34.6612622Z # 검증 5: 관리자 로그인 페이지
|
||||
2026-07-04T13:01:34.6612698Z LOGIN_STATUS=\$(curl -fsSL -o /dev/null -w '%{http_code}' http://127.0.0.1:5001/taxbaik/admin/login 2>/dev/null || echo "000")
|
||||
2026-07-04T13:01:34.6612790Z if [ "\$LOGIN_STATUS" != "200" ]; then
|
||||
2026-07-04T13:01:34.6612871Z echo "❌ 관리자 로그인 페이지 로드 실패 (상태: \$LOGIN_STATUS)" >&2
|
||||
2026-07-04T13:01:34.6612964Z exit 1
|
||||
2026-07-04T13:01:34.6613037Z fi
|
||||
2026-07-04T13:01:34.6613099Z echo "✓ [6/6] 관리자 페이지 로드 완료"
|
||||
2026-07-04T13:01:34.6613182Z
|
||||
2026-07-04T13:01:34.6613243Z echo "✓ 서비스 정상 (시도 \$i/\$ATTEMPTS)"
|
||||
2026-07-04T13:01:34.6613322Z # 구 배포 디렉토리 정리 (최근 5개 보존)
|
||||
2026-07-04T13:01:34.6613401Z ls -1dt \$DEPLOY_HOME/deployments/taxbaik_* 2>/dev/null \
|
||||
2026-07-04T13:01:34.6613481Z | tail -n +6 | xargs rm -rf 2>/dev/null || true
|
||||
2026-07-04T13:01:34.6613557Z exit 0
|
||||
2026-07-04T13:01:34.6613622Z fi
|
||||
2026-07-04T13:01:34.6613692Z if [ "\$i" -eq "\$ATTEMPTS" ]; then
|
||||
2026-07-04T13:01:34.6613767Z echo "=== FATAL: 서비스가 \$ATTEMPTS회 시도 후에도 응답하지 않음 ===" >&2
|
||||
2026-07-04T13:01:34.6613858Z echo "--- 5001 listener ---" >&2
|
||||
2026-07-04T13:01:34.6613947Z ss -tlnp 2>/dev/null | grep ':5001 ' >&2 || true
|
||||
2026-07-04T13:01:34.6614022Z echo "--- active port file ---" >&2
|
||||
2026-07-04T13:01:34.6614102Z cat "\$DEPLOY_HOME/taxbaik_port" >&2 || true
|
||||
2026-07-04T13:01:34.6614174Z echo "--- 신규 앱 로그 ---" >&2
|
||||
2026-07-04T13:01:34.6614245Z ACTIVE_PORT=\$(cat "\$DEPLOY_HOME/taxbaik_port" 2>/dev/null | tr -d '[:space:]' || true)
|
||||
2026-07-04T13:01:34.6614329Z if [ -n "\$ACTIVE_PORT" ] && [ -s "\$DEPLOY_DIR/web_\${ACTIVE_PORT}.log" ]; then
|
||||
2026-07-04T13:01:34.6614409Z tail -n 80 "\$DEPLOY_DIR/web_\${ACTIVE_PORT}.log" >&2
|
||||
2026-07-04T13:01:34.6614489Z else
|
||||
2026-07-04T13:01:34.6614554Z ls -la "\$DEPLOY_DIR" >&2 || true
|
||||
2026-07-04T13:01:34.6614626Z fi
|
||||
2026-07-04T13:01:34.6614690Z echo "--- proxy 로그 ---" >&2
|
||||
2026-07-04T13:01:34.6614764Z tail -n 80 "\$DEPLOY_HOME/taxbaik_proxy.log" >&2 || true
|
||||
2026-07-04T13:01:34.6614848Z exit 1
|
||||
2026-07-04T13:01:34.6614917Z fi
|
||||
2026-07-04T13:01:34.6614986Z echo " 대기 중... (\$i/\$ATTEMPTS, HTTP \$STATUS)"
|
||||
2026-07-04T13:01:34.6615062Z sleep 3
|
||||
2026-07-04T13:01:34.6615131Z done
|
||||
2026-07-04T13:01:34.6615194Z REMOTE
|
||||
2026-07-04T13:01:34.6615256Z
|
||||
2026-07-04T13:01:34.6615315Z echo "✓ 배포 완료: taxbaik_${TIMESTAMP} @ $DEPLOY_HOST"
|
||||
2026-07-04T13:01:34.6615389Z
|
||||
2026-07-04T13:01:34.6615454Z echo "--- 실제 공개 도메인 종단 간 검증 (Nginx/Cloudflare 경유, 최대 3회 재시도) ---"
|
||||
2026-07-04T13:01:34.6615540Z ROOT_URL="https://www.taxbaik.com/" \
|
||||
2026-07-04T13:01:34.6615611Z ADMIN_URL="https://www.taxbaik.com/taxbaik/admin/login" \
|
||||
2026-07-04T13:01:34.6615686Z PUBLIC_MARKER="백원숙 세무회계" \
|
||||
2026-07-04T13:01:34.6615758Z PUBLIC_FORBIDDEN="관리자" \
|
||||
2026-07-04T13:01:34.6615829Z ADMIN_MARKER="관리자 로그인" \
|
||||
2026-07-04T13:01:34.6615900Z MAX_RETRIES=3 \
|
||||
2026-07-04T13:01:34.6615976Z RETRY_SLEEP_SECONDS=5 \
|
||||
2026-07-04T13:01:34.6616044Z bash ./scripts/taxbaik-smoke.sh
|
||||
2026-07-04T13:01:34.6616322Z echo "✓ 실제 공개 도메인 전체 정상"
|
||||
2026-07-04T13:01:34.6616404Z
|
||||
2026-07-04T13:01:34.6616463Z send_telegram "✅ <b>TaxBaik 배포 완료</b>
|
||||
2026-07-04T13:01:34.6616542Z
|
||||
2026-07-04T13:01:34.6616609Z 커밋: <code>${COMMIT}</code>
|
||||
2026-07-04T13:01:34.6616695Z 시간: <code>${TIMESTAMP}</code>
|
||||
2026-07-04T13:01:34.6616774Z 대상: <code>${DEPLOY_HOST}</code>
|
||||
2026-07-04T13:01:34.6616853Z 채널: <code>${TELEGRAM_CHAT_ID}</code>"
|
||||
2026-07-04T13:01:34.6616931Z shell: bash --noprofile --norc -e -o pipefail {0}
|
||||
2026-07-04T13:01:34.6617030Z ::endgroup::
|
||||
2026-07-04T13:01:34.7483080Z === Deploying TaxBaik c00d237 (20260704_220134) ===
|
||||
2026-07-04T13:01:36.0560253Z --- [1/5] 압축 해제 ---
|
||||
2026-07-04T13:01:36.3575256Z --- [2/5] 운영 설정 검증 ---
|
||||
2026-07-04T13:01:36.3575950Z --- [3/5] 마이그레이션 사전 검증 ---
|
||||
2026-07-04T13:01:36.9509044Z Migration dry-run validation passed.
|
||||
2026-07-04T13:01:36.9509614Z --- [4/5] Green-Blue 배포 실행 ---
|
||||
2026-07-04T13:01:36.9593876Z ===== 🚀 TaxBaik Green/Blue Deployment Script =====
|
||||
2026-07-04T13:01:37.1157726Z Active Port: 5004
|
||||
2026-07-04T13:01:37.1158178Z Target Port: 5003
|
||||
2026-07-04T13:01:37.1158370Z Deploy Directory: /home/***/deployments/taxbaik_20260704_220134
|
||||
2026-07-04T13:01:37.4066841Z === Starting New App on Port 5003 ===
|
||||
2026-07-04T13:01:39.4311374Z === Health Checking Port 5003 ===
|
||||
2026-07-04T13:01:39.5507815Z Waiting for health check... (1/20, Status: 000000)
|
||||
2026-07-04T13:01:42.1278558Z ✓ Health check passed on port 5003 (Attempt 2/20)
|
||||
2026-07-04T13:01:42.1279137Z === Switching Traffic to Port 5003 ===
|
||||
2026-07-04T13:01:42.1312702Z ✓ Traffic routed to 5003 (via TaxBaik.Proxy on 5001)
|
||||
2026-07-04T13:01:42.1313191Z === Stopping Old App on Port 5004 ===
|
||||
2026-07-04T13:01:42.2456799Z Killing old process PID: 4150110
|
||||
2026-07-04T13:01:42.2457355Z ✓ Old process terminated
|
||||
2026-07-04T13:01:42.2457639Z === Cleaning Up Old Deployments ===
|
||||
2026-07-04T13:01:42.2824667Z ✓ Cleanup completed
|
||||
2026-07-04T13:01:42.2825372Z ===== ✅ Green/Blue Deployment Completed Successfully =====
|
||||
2026-07-04T13:01:42.2827207Z --- [4.5/5] Nginx 설정 검증 ---
|
||||
2026-07-04T13:01:42.2917525Z 실제 로드되는 설정 파일: /etc/nginx/sites-available/taxbaik-domains.conf
|
||||
2026-07-04T13:01:42.2977470Z ✓ Nginx 설정 검증 통과 (실제 로드 파일 확인 + 포트 5001 고정 + trailing slash 없음)
|
||||
2026-07-04T13:01:42.2978026Z --- [5/5] 헬스 체크 (최대 60초) ---
|
||||
2026-07-04T13:01:42.3668351Z ✓ [1/6] 헬스 체크 완료
|
||||
2026-07-04T13:01:42.8378177Z ✓ [2/6] 메인 페이지 로드 완료
|
||||
2026-07-04T13:01:42.8839270Z ✓ [3/6] CSS 파일 로드 완료
|
||||
2026-07-04T13:01:42.8929193Z ✓ [4/6] 버전 정보 확인 완료
|
||||
2026-07-04T13:01:42.9068857Z ✓ [5/6] 5001 프록시 확인 완료
|
||||
2026-07-04T13:01:42.9149449Z ✓ [6/6] 관리자 페이지 로드 완료
|
||||
2026-07-04T13:01:42.9150100Z ✓ 서비스 정상 (시도 1/20)
|
||||
2026-07-04T13:01:42.9248052Z ✓ 배포 완료: taxbaik_20260704_220134 @ ***
|
||||
2026-07-04T13:01:42.9248637Z --- 실제 공개 도메인 종단 간 검증 (Nginx/Cloudflare 경유, 최대 3회 재시도) ---
|
||||
2026-07-04T13:01:43.3724216Z ✓ https://www.taxbaik.com/ -> HTTP 200
|
||||
2026-07-04T13:01:43.6877712Z ✓ https://www.taxbaik.com/taxbaik/ -> HTTP 200
|
||||
2026-07-04T13:01:44.0126645Z retrying... (1/3)
|
||||
2026-07-04T13:01:44.0128053Z ✗ https://www.taxbaik.com/taxbaik/admin/login -> body missing required marker: 관리자 로그인
|
||||
2026-07-04T13:01:49.3854327Z ✓ https://www.taxbaik.com/ -> HTTP 200
|
||||
2026-07-04T13:01:49.6485192Z ✓ https://www.taxbaik.com/taxbaik/ -> HTTP 200
|
||||
2026-07-04T13:01:50.0153135Z ✗ https://www.taxbaik.com/taxbaik/admin/login -> body missing required marker: 관리자 로그인
|
||||
2026-07-04T13:01:50.0153696Z retrying... (2/3)
|
||||
2026-07-04T13:01:55.2722916Z ✓ https://www.taxbaik.com/ -> HTTP 200
|
||||
2026-07-04T13:01:55.6800476Z ✓ https://www.taxbaik.com/taxbaik/ -> HTTP 200
|
||||
2026-07-04T13:01:55.9334729Z ✗ https://www.taxbaik.com/taxbaik/admin/login -> body missing required marker: 관리자 로그인
|
||||
2026-07-04T13:01:55.9335523Z ✗ smoke verification failed
|
||||
2026-07-04T13:01:56.2238319Z ❌ Failure - Main Deploy & verify on server
|
||||
2026-07-04T13:01:56.2411008Z exitcode '1': failure
|
||||
2026-07-04T13:01:56.2699164Z evaluating expression 'success()'
|
||||
2026-07-04T13:01:56.2699697Z expression 'success()' evaluated to 'false'
|
||||
2026-07-04T13:01:56.2699842Z Skipping step 'Setup .NET' due to 'success()'
|
||||
2026-07-04T13:01:56.2953445Z evaluating expression 'always()'
|
||||
2026-07-04T13:01:56.2953918Z expression 'always()' evaluated to 'true'
|
||||
2026-07-04T13:01:56.2954039Z ⭐ Run Post Checkout code
|
||||
2026-07-04T13:01:56.2954206Z Writing entry to tarball workflow/outputcmd.txt len:0
|
||||
2026-07-04T13:01:56.2954356Z Writing entry to tarball workflow/statecmd.txt len:0
|
||||
2026-07-04T13:01:56.2954454Z Writing entry to tarball workflow/pathcmd.txt len:0
|
||||
2026-07-04T13:01:56.2954553Z Writing entry to tarball workflow/envs.txt len:0
|
||||
2026-07-04T13:01:56.2954636Z Writing entry to tarball workflow/SUMMARY.md len:0
|
||||
2026-07-04T13:01:56.2954724Z Extracting content to '/var/run/act'
|
||||
2026-07-04T13:01:56.2989360Z run post step for 'Checkout code'
|
||||
2026-07-04T13:01:56.2989963Z executing remote job container: [node /var/run/act/actions/c3fe249fe73091a17d6638fe1341e7bd0bcc3466ce52323c0688e83e2463a4ab/dist/index.js]
|
||||
2026-07-04T13:01:56.3354078Z 🐳 docker exec cmd=[node /var/run/act/actions/c3fe249fe73091a17d6638fe1341e7bd0bcc3466ce52323c0688e83e2463a4ab/dist/index.js] user= workdir=
|
||||
2026-07-04T13:01:56.3354506Z Exec command '[node /var/run/act/actions/c3fe249fe73091a17d6638fe1341e7bd0bcc3466ce52323c0688e83e2463a4ab/dist/index.js]'
|
||||
2026-07-04T13:01:56.3354997Z Working directory '/workspace/***/taxbaik'
|
||||
2026-07-04T13:01:56.5634391Z [command]/usr/bin/git version
|
||||
2026-07-04T13:01:56.5708822Z git version 2.54.0
|
||||
2026-07-04T13:01:56.5752988Z ***
|
||||
2026-07-04T13:01:56.5772894Z Temporarily overriding HOME='/tmp/29afdc3d-d383-4267-8baa-f87edca3a0e3' before making global git config changes
|
||||
2026-07-04T13:01:56.5782158Z Adding repository directory to the temporary git global config as a safe directory
|
||||
2026-07-04T13:01:56.5785763Z [command]/usr/bin/git config --global --add safe.directory /workspace/***/taxbaik
|
||||
2026-07-04T13:01:56.5856624Z [command]/usr/bin/git config --local --name-only --get-regexp core\.sshCommand
|
||||
2026-07-04T13:01:56.5933870Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'core\.sshCommand' && git config --local --unset-all 'core.sshCommand' || :"
|
||||
2026-07-04T13:01:56.6622902Z [command]/usr/bin/git config --local --name-only --get-regexp http\.http\:\/\/gitea\:3000\/\.extraheader
|
||||
2026-07-04T13:01:56.6697660Z http.http://gitea:3000/.extraheader
|
||||
2026-07-04T13:01:56.6698844Z [command]/usr/bin/git config --local --unset-all http.http://gitea:3000/.extraheader
|
||||
2026-07-04T13:01:56.6735534Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'http\.http\:\/\/gitea\:3000\/\.extraheader' && git config --local --unset-all 'http.http://gitea:3000/.extraheader' || :"
|
||||
2026-07-04T13:01:56.6986910Z [command]/usr/bin/git config --local --name-only --get-regexp ^includeIf\.gitdir:
|
||||
2026-07-04T13:01:56.7046662Z [command]/usr/bin/git submodule foreach --recursive git config --local --show-origin --name-only --get-regexp remote.origin.url
|
||||
2026-07-04T13:01:56.8590734Z ✅ Success - Post Checkout code
|
||||
2026-07-04T13:01:56.8750550Z Cleaning up container for job build-and-deploy
|
||||
2026-07-04T13:01:57.5600546Z Removed container: 545d203ee9994ebf9eca9357f948b418a29c0a80f13c2d69e6b64ca3d86d4b5b
|
||||
2026-07-04T13:01:57.5657268Z 🐳 docker volume rm GITEA-ACTIONS-TASK-1552-WORKFLOW-TaxBaik-CI-CD-JOB-build-and-de-ab2d1e70739a3063f448d1e9d12be855fbd02428b801ec092546b895bdf5c88d
|
||||
2026-07-04T13:01:57.6930032Z 🐳 docker volume rm GITEA-ACTIONS-TASK-1552-WORKFLOW-TaxBaik-CI-CD-JOB-build-and-de-ab2d1e70739a3063f448d1e9d12be855fbd02428b801ec092546b895bdf5c88d-env
|
||||
2026-07-04T13:01:57.9092324Z 🏁 Job failed
|
||||
2026-07-04T13:01:57.9175317Z Job 'build-and-deploy' failed
|
||||
-947
@@ -1,947 +0,0 @@
|
||||
2026-07-04T13:08:38.6554157Z hz-prod-runner(version:v0.6.1) received task 1556 of job build-and-deploy, be triggered by event: push
|
||||
2026-07-04T13:08:38.6560694Z workflow prepared
|
||||
2026-07-04T13:08:38.6561481Z evaluating expression 'success()'
|
||||
2026-07-04T13:08:38.6562225Z expression 'success()' evaluated to 'true'
|
||||
2026-07-04T13:08:38.6562395Z 🚀 Start image=docker.gitea.com/runner-images:ubuntu-latest
|
||||
2026-07-04T13:08:38.6674615Z 🐳 docker pull image=docker.gitea.com/runner-images:ubuntu-latest platform= username= forcePull=false
|
||||
2026-07-04T13:08:38.6674898Z 🐳 docker pull docker.gitea.com/runner-images:ubuntu-latest
|
||||
2026-07-04T13:08:38.6934471Z Image exists? true
|
||||
2026-07-04T13:08:38.7467353Z 🐳 docker create image=docker.gitea.com/runner-images:ubuntu-latest platform= entrypoint=["/bin/sleep" "10800"] cmd=[] network="gitea_default"
|
||||
2026-07-04T13:08:38.8585037Z Created container name=GITEA-ACTIONS-TASK-1556-WORKFLOW-TaxBaik-CI-CD-JOB-build-and-de-6297a4cd6c76440083f1331088cff47725d01c4362935c7b8a69a7f486001683 id=08d700f8667717ce78a305700f60f13b228a0d19241928b95a601d63d13f1a22 from image docker.gitea.com/runner-images:ubuntu-latest (platform: )
|
||||
2026-07-04T13:08:38.8585489Z ENV ==> [RUNNER_TOOL_CACHE=/opt/hostedtoolcache RUNNER_OS=Linux RUNNER_ARCH=X64 RUNNER_TEMP=/tmp LANG=C.UTF-8]
|
||||
2026-07-04T13:08:38.8585657Z 🐳 docker run image=docker.gitea.com/runner-images:ubuntu-latest platform= entrypoint=["/bin/sleep" "10800"] cmd=[] network="gitea_default"
|
||||
2026-07-04T13:08:38.8585889Z Starting container: 08d700f8667717ce78a305700f60f13b228a0d19241928b95a601d63d13f1a22
|
||||
2026-07-04T13:08:39.2059504Z Started container: 08d700f8667717ce78a305700f60f13b228a0d19241928b95a601d63d13f1a22
|
||||
2026-07-04T13:08:39.5671051Z Writing entry to tarball workflow/event.json len:11400
|
||||
2026-07-04T13:08:39.5672116Z Writing entry to tarball workflow/envs.txt len:0
|
||||
2026-07-04T13:08:39.5672345Z Extracting content to '/var/run/act/'
|
||||
2026-07-04T13:08:39.7909910Z ☁ git clone 'https://github.com/actions/checkout' # ref=v4
|
||||
2026-07-04T13:08:39.7910353Z cloning https://github.com/actions/checkout to /root/.cache/act/c3fe249fe73091a17d6638fe1341e7bd0bcc3466ce52323c0688e83e2463a4ab
|
||||
2026-07-04T13:08:40.5222042Z Unable to pull refs/heads/v4: non-fast-forward update
|
||||
2026-07-04T13:08:40.5222639Z Cloned https://github.com/actions/checkout to /root/.cache/act/c3fe249fe73091a17d6638fe1341e7bd0bcc3466ce52323c0688e83e2463a4ab
|
||||
2026-07-04T13:08:40.5397717Z Checked out v4
|
||||
2026-07-04T13:08:40.5648995Z ☁ git clone 'https://github.com/actions/setup-dotnet' # ref=v4
|
||||
2026-07-04T13:08:40.5649331Z cloning https://github.com/actions/setup-dotnet to /root/.cache/act/2d637816dd86ec9ff59dad9ec3547bf90b88133b3029538a91ec96ac7f316336
|
||||
2026-07-04T13:08:41.3353541Z Unable to pull refs/heads/v4: worktree contains unstaged changes
|
||||
2026-07-04T13:08:41.3354242Z Cloned https://github.com/actions/setup-dotnet to /root/.cache/act/2d637816dd86ec9ff59dad9ec3547bf90b88133b3029538a91ec96ac7f316336
|
||||
2026-07-04T13:08:41.3732622Z Checked out v4
|
||||
2026-07-04T13:08:41.3997670Z evaluating expression ''
|
||||
2026-07-04T13:08:41.3998237Z expression '' evaluated to 'true'
|
||||
2026-07-04T13:08:41.3998357Z ⭐ Run Main Checkout code
|
||||
2026-07-04T13:08:41.3998550Z Writing entry to tarball workflow/outputcmd.txt len:0
|
||||
2026-07-04T13:08:41.3998709Z Writing entry to tarball workflow/statecmd.txt len:0
|
||||
2026-07-04T13:08:41.3998815Z Writing entry to tarball workflow/pathcmd.txt len:0
|
||||
2026-07-04T13:08:41.3998915Z Writing entry to tarball workflow/envs.txt len:0
|
||||
2026-07-04T13:08:41.3999013Z Writing entry to tarball workflow/SUMMARY.md len:0
|
||||
2026-07-04T13:08:41.3999103Z Extracting content to '/var/run/act'
|
||||
2026-07-04T13:08:41.4023168Z ::group::Run Checkout code
|
||||
2026-07-04T13:08:42.0698698Z ::add-matcher::/run/act/actions/c3fe249fe73091a17d6638fe1341e7bd0bcc3466ce52323c0688e83e2463a4ab/dist/problem-matcher.json
|
||||
2026-07-04T13:08:42.0698864Z Syncing repository: ***/taxbaik
|
||||
2026-07-04T13:08:42.0714107Z ::group::Getting Git version info
|
||||
2026-07-04T13:08:42.0715274Z Working directory is '/workspace/***/taxbaik'
|
||||
2026-07-04T13:08:42.0813488Z [command]/usr/bin/git version
|
||||
2026-07-04T13:08:42.1412694Z git version 2.54.0
|
||||
2026-07-04T13:08:42.1489424Z ::endgroup::
|
||||
2026-07-04T13:08:42.1524768Z Temporarily overriding HOME='/tmp/64c0d9fe-44ec-41c5-8f88-dcd0485d7c0b' before making global git config changes
|
||||
2026-07-04T13:08:42.1525123Z Adding repository directory to the temporary git global config as a safe directory
|
||||
2026-07-04T13:08:42.1525253Z [command]/usr/bin/git config --global --add safe.directory /workspace/***/taxbaik
|
||||
2026-07-04T13:08:42.1590003Z Deleting the contents of '/workspace/***/taxbaik'
|
||||
2026-07-04T13:08:42.1590570Z ::group::Initializing the repository
|
||||
2026-07-04T13:08:42.1590675Z [command]/usr/bin/git init /workspace/***/taxbaik
|
||||
2026-07-04T13:08:42.1680066Z hint: Using 'master' as the name for the initial branch. This default branch name
|
||||
2026-07-04T13:08:42.1680584Z hint: will change to "main" in Git 3.0. To configure the initial branch name
|
||||
2026-07-04T13:08:42.1680710Z hint: to use in all of your new repositories, which will suppress this warning,
|
||||
2026-07-04T13:08:42.1680801Z hint: call:
|
||||
2026-07-04T13:08:42.1680880Z hint:
|
||||
2026-07-04T13:08:42.1680980Z hint: git config --global init.defaultBranch <name>
|
||||
2026-07-04T13:08:42.1681071Z hint:
|
||||
2026-07-04T13:08:42.1681353Z hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
|
||||
2026-07-04T13:08:42.1681463Z hint: 'development'. The just-created branch can be renamed via this command:
|
||||
2026-07-04T13:08:42.1681549Z hint:
|
||||
2026-07-04T13:08:42.1681622Z hint: git branch -m <name>
|
||||
2026-07-04T13:08:42.1681695Z hint:
|
||||
2026-07-04T13:08:42.1681776Z hint: Disable this message with "git config set advice.defaultBranchName false"
|
||||
2026-07-04T13:08:42.1691762Z Initialized empty Git repository in /workspace/***/taxbaik/.git/
|
||||
2026-07-04T13:08:42.1718730Z [command]/usr/bin/git remote add origin http://gitea:3000/***/taxbaik
|
||||
2026-07-04T13:08:42.2405296Z ::endgroup::
|
||||
2026-07-04T13:08:42.2405503Z ::group::Disabling automatic garbage collection
|
||||
2026-07-04T13:08:42.2405602Z [command]/usr/bin/git config --local gc.auto 0
|
||||
2026-07-04T13:08:42.2600234Z ::endgroup::
|
||||
2026-07-04T13:08:42.2600432Z ::group::Setting up auth
|
||||
2026-07-04T13:08:42.2600526Z [command]/usr/bin/git config --local --name-only --get-regexp core\.sshCommand
|
||||
2026-07-04T13:08:42.2601015Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'core\.sshCommand' && git config --local --unset-all 'core.sshCommand' || :"
|
||||
2026-07-04T13:08:42.3294805Z [command]/usr/bin/git config --local --name-only --get-regexp http\.http\:\/\/gitea\:3000\/\.extraheader
|
||||
2026-07-04T13:08:42.3295538Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'http\.http\:\/\/gitea\:3000\/\.extraheader' && git config --local --unset-all 'http.http://gitea:3000/.extraheader' || :"
|
||||
2026-07-04T13:08:42.4647996Z [command]/usr/bin/git config --local --name-only --get-regexp ^includeIf\.gitdir:
|
||||
2026-07-04T13:08:42.4681744Z [command]/usr/bin/git submodule foreach --recursive git config --local --show-origin --name-only --get-regexp remote.origin.url
|
||||
2026-07-04T13:08:42.5097122Z [command]/usr/bin/git config --local http.http://gitea:3000/.extraheader AUTHORIZATION: basic ***
|
||||
2026-07-04T13:08:42.5184896Z ::endgroup::
|
||||
2026-07-04T13:08:42.5187349Z ::group::Fetching the repository
|
||||
2026-07-04T13:08:42.5205386Z [command]/usr/bin/git -c protocol.version=2 fetch --no-tags --prune --no-recurse-submodules --depth=1 origin +333089a6ea2284626a1a10a877058a9def750ad3:refs/remotes/origin/master
|
||||
2026-07-04T13:08:47.6131300Z From http://gitea:3000/***/taxbaik
|
||||
2026-07-04T13:08:47.6131974Z * [new ref] 333089a6ea2284626a1a10a877058a9def750ad3 -> origin/master
|
||||
2026-07-04T13:08:47.6164024Z ::endgroup::
|
||||
2026-07-04T13:08:47.6164301Z ::group::Determining the checkout info
|
||||
2026-07-04T13:08:47.6168754Z ::endgroup::
|
||||
2026-07-04T13:08:47.6188678Z [command]/usr/bin/git sparse-checkout disable
|
||||
2026-07-04T13:08:47.6323220Z [command]/usr/bin/git config --local --unset-all extensions.worktreeConfig
|
||||
2026-07-04T13:08:47.6323803Z ::group::Checking out the ref
|
||||
2026-07-04T13:08:47.6323899Z [command]/usr/bin/git checkout --progress --force -B master refs/remotes/origin/master
|
||||
2026-07-04T13:08:48.1763334Z Reset branch 'master'
|
||||
2026-07-04T13:08:48.1769611Z branch 'master' set up to track 'origin/master'.
|
||||
2026-07-04T13:08:48.1822986Z ::endgroup::
|
||||
2026-07-04T13:08:48.1884733Z [command]/usr/bin/git log -1 --format=%H
|
||||
2026-07-04T13:08:48.1902386Z 333089a6ea2284626a1a10a877058a9def750ad3
|
||||
2026-07-04T13:08:48.1995091Z ::remove-matcher owner=checkout-git::
|
||||
2026-07-04T13:08:48.2008513Z ::endgroup::
|
||||
2026-07-04T13:08:48.2323342Z ::group::Run Setup .NET
|
||||
2026-07-04T13:08:48.2323598Z with:
|
||||
2026-07-04T13:08:48.2323697Z dotnet-version: 10.0
|
||||
2026-07-04T13:08:48.9667505Z (node:140) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
|
||||
2026-07-04T13:08:48.9668330Z (Use `node --trace-deprecation ...` to show where the warning was created)
|
||||
2026-07-04T13:08:48.9702655Z [command]/run/act/actions/2d637816dd86ec9ff59dad9ec3547bf90b88133b3029538a91ec96ac7f316336/externals/install-dotnet.sh --skip-non-versioned-files --runtime dotnet --channel LTS
|
||||
2026-07-04T13:08:49.4224845Z dotnet-install: Attempting to download using aka.ms link https://builds.dotnet.microsoft.com/dotnet/Runtime/10.0.9/dotnet-runtime-10.0.9-linux-x64.tar.gz
|
||||
2026-07-04T13:08:49.7177686Z dotnet-install: Remote file https://builds.dotnet.microsoft.com/dotnet/Runtime/10.0.9/dotnet-runtime-10.0.9-linux-x64.tar.gz size is 36606251 bytes.
|
||||
2026-07-04T13:08:49.7179656Z dotnet-install: Extracting archive from https://builds.dotnet.microsoft.com/dotnet/Runtime/10.0.9/dotnet-runtime-10.0.9-linux-x64.tar.gz
|
||||
2026-07-04T13:08:50.6028043Z dotnet-install: Downloaded file size is 36606251 bytes.
|
||||
2026-07-04T13:08:50.6028507Z dotnet-install: The remote and local file sizes are equal.
|
||||
2026-07-04T13:08:50.6399542Z dotnet-install: Installed version is 10.0.9
|
||||
2026-07-04T13:08:50.6459911Z dotnet-install: Adding to current process PATH: `/usr/share/dotnet`. Note: This change will be visible only when sourcing script.
|
||||
2026-07-04T13:08:50.6477526Z dotnet-install: Note that the script does not resolve dependencies during installation.
|
||||
2026-07-04T13:08:50.6478058Z dotnet-install: To check the list of dependencies, go to https://learn.microsoft.com/dotnet/core/install, select your operating system and check the "Dependencies" section.
|
||||
2026-07-04T13:08:50.6478222Z dotnet-install: Installation finished successfully.
|
||||
2026-07-04T13:08:50.6506707Z [command]/run/act/actions/2d637816dd86ec9ff59dad9ec3547bf90b88133b3029538a91ec96ac7f316336/externals/install-dotnet.sh --skip-non-versioned-files --channel 10.0
|
||||
2026-07-04T13:08:51.0353902Z dotnet-install: Attempting to download using aka.ms link https://builds.dotnet.microsoft.com/dotnet/Sdk/10.0.301/dotnet-sdk-10.0.301-linux-x64.tar.gz
|
||||
2026-07-04T13:08:52.0300218Z dotnet-install: Remote file https://builds.dotnet.microsoft.com/dotnet/Sdk/10.0.301/dotnet-sdk-10.0.301-linux-x64.tar.gz size is 235086718 bytes.
|
||||
2026-07-04T13:08:52.0317772Z dotnet-install: Extracting archive from https://builds.dotnet.microsoft.com/dotnet/Sdk/10.0.301/dotnet-sdk-10.0.301-linux-x64.tar.gz
|
||||
2026-07-04T13:08:59.5506054Z dotnet-install: Downloaded file size is 235086718 bytes.
|
||||
2026-07-04T13:08:59.5506825Z dotnet-install: The remote and local file sizes are equal.
|
||||
2026-07-04T13:08:59.8080972Z dotnet-install: Installed version is 10.0.301
|
||||
2026-07-04T13:08:59.8139788Z dotnet-install: Adding to current process PATH: `/usr/share/dotnet`. Note: This change will be visible only when sourcing script.
|
||||
2026-07-04T13:08:59.8140246Z dotnet-install: Note that the script does not resolve dependencies during installation.
|
||||
2026-07-04T13:08:59.8140426Z dotnet-install: To check the list of dependencies, go to https://learn.microsoft.com/dotnet/core/install, select your operating system and check the "Dependencies" section.
|
||||
2026-07-04T13:08:59.8140561Z dotnet-install: Installation finished successfully.
|
||||
2026-07-04T13:08:59.8174439Z ##[add-matcher]/run/act/actions/2d637816dd86ec9ff59dad9ec3547bf90b88133b3029538a91ec96ac7f316336/.github/csc.json
|
||||
2026-07-04T13:08:59.8350339Z ::endgroup::
|
||||
2026-07-04T13:08:59.9412562Z ::group::Run dotnet restore src/TaxBaik.sln
|
||||
2026-07-04T13:08:59.9412908Z dotnet restore src/TaxBaik.sln
|
||||
2026-07-04T13:08:59.9413029Z shell: bash --noprofile --norc -e -o pipefail {0}
|
||||
2026-07-04T13:08:59.9413130Z ::endgroup::
|
||||
2026-07-04T13:09:00.1537332Z
|
||||
2026-07-04T13:09:00.1546845Z Welcome to .NET 10.0!
|
||||
2026-07-04T13:09:00.1547560Z ---------------------
|
||||
2026-07-04T13:09:00.1547817Z SDK Version: 10.0.301
|
||||
2026-07-04T13:09:00.1547981Z
|
||||
2026-07-04T13:09:00.1548154Z Telemetry
|
||||
2026-07-04T13:09:00.1548294Z ---------
|
||||
2026-07-04T13:09:00.1548841Z The .NET tools collect usage data in order to help us improve your experience. It is collected by Microsoft and shared with the community. You can opt-out of telemetry by setting the DOTNET_CLI_TELEMETRY_OPTOUT environment variable to '1' or 'true' using your favorite shell.
|
||||
2026-07-04T13:09:00.1549162Z
|
||||
2026-07-04T13:09:00.1549585Z Read more about .NET CLI Tools telemetry: https://aka.ms/dotnet-cli-telemetry
|
||||
2026-07-04T13:09:00.6622541Z
|
||||
2026-07-04T13:09:00.6623265Z ----------------
|
||||
2026-07-04T13:09:00.6623468Z Installed an ASP.NET Core HTTPS development certificate.
|
||||
2026-07-04T13:09:00.6623644Z To trust the certificate, run 'dotnet dev-certs https --trust'
|
||||
2026-07-04T13:09:00.6626639Z Learn about HTTPS: https://aka.ms/dotnet-https
|
||||
2026-07-04T13:09:00.6626890Z
|
||||
2026-07-04T13:09:00.6627133Z ----------------
|
||||
2026-07-04T13:09:00.6627328Z Write your first app: https://aka.ms/dotnet-hello-world
|
||||
2026-07-04T13:09:00.6627504Z Find out what's new: https://aka.ms/dotnet-whats-new
|
||||
2026-07-04T13:09:00.6627646Z Explore documentation: https://aka.ms/dotnet-docs
|
||||
2026-07-04T13:09:00.6627822Z Report issues and find source on GitHub: https://github.com/dotnet/core
|
||||
2026-07-04T13:09:00.6628151Z Use 'dotnet --help' to see available commands or visit: https://aka.ms/dotnet-cli
|
||||
2026-07-04T13:09:00.6628340Z --------------------------------------------------------------------------------------
|
||||
2026-07-04T13:09:02.6012944Z Determining projects to restore...
|
||||
2026-07-04T13:09:04.0511847Z Restored /workspace/***/taxbaik/src/TaxBaik.Domain/TaxBaik.Domain.csproj (in 271 ms).
|
||||
2026-07-04T13:09:06.1918401Z Restored /workspace/***/taxbaik/src/TaxBaik.Application/TaxBaik.Application.csproj (in 2.12 sec).
|
||||
2026-07-04T13:09:09.3041520Z Restored /workspace/***/taxbaik/src/TaxBaik.Web/TaxBaik.Web.csproj (in 3.12 sec).
|
||||
2026-07-04T13:09:13.6409709Z Restored /workspace/***/taxbaik/src/TaxBaik.Application.Tests/TaxBaik.Application.Tests.csproj (in 9.9 sec).
|
||||
2026-07-04T13:09:13.6728450Z Restored /workspace/***/taxbaik/src/TaxBaik.Infrastructure/TaxBaik.Infrastructure.csproj (in 16 ms).
|
||||
2026-07-04T13:09:14.9637234Z Restored /workspace/***/taxbaik/src/TaxBaik.Web.Client/TaxBaik.Web.Client.csproj (in 5.65 sec).
|
||||
2026-07-04T13:09:15.1745606Z ::group::Run dotnet build src/TaxBaik.sln -c Release --no-restore -p:ContinuousIntegrationBuild=true
|
||||
2026-07-04T13:09:15.1745957Z dotnet build src/TaxBaik.sln -c Release --no-restore -p:ContinuousIntegrationBuild=true
|
||||
2026-07-04T13:09:15.1746276Z shell: bash --noprofile --norc -e -o pipefail {0}
|
||||
2026-07-04T13:09:15.1746395Z ::endgroup::
|
||||
2026-07-04T13:09:28.2755616Z TaxBaik.Domain -> /workspace/***/taxbaik/src/TaxBaik.Domain/bin/Release/net10.0/TaxBaik.Domain.dll
|
||||
2026-07-04T13:09:35.8522427Z TaxBaik.Application -> /workspace/***/taxbaik/src/TaxBaik.Application/bin/Release/net10.0/TaxBaik.Application.dll
|
||||
2026-07-04T13:09:38.3840271Z TaxBaik.Infrastructure -> /workspace/***/taxbaik/src/TaxBaik.Infrastructure/bin/Release/net10.0/TaxBaik.Infrastructure.dll
|
||||
2026-07-04T13:10:15.0436919Z TaxBaik.Web.Client -> /workspace/***/taxbaik/src/TaxBaik.Web.Client/bin/Debug/net10.0/TaxBaik.Web.Client.dll
|
||||
2026-07-04T13:10:15.0505753Z TaxBaik.Web.Client (Blazor output) -> /workspace/***/taxbaik/src/TaxBaik.Web.Client/bin/Debug/net10.0/wwwroot
|
||||
2026-07-04T13:10:41.1192020Z TaxBaik.Web -> /workspace/***/taxbaik/src/TaxBaik.Web/bin/Release/net10.0/TaxBaik.Web.dll
|
||||
2026-07-04T13:10:45.6178031Z TaxBaik.Application.Tests -> /workspace/***/taxbaik/src/TaxBaik.Application.Tests/bin/Release/net10.0/TaxBaik.Application.Tests.dll
|
||||
2026-07-04T13:10:45.8443066Z
|
||||
2026-07-04T13:10:45.8499388Z Build succeeded.
|
||||
2026-07-04T13:10:45.8499658Z 0 Warning(s)
|
||||
2026-07-04T13:10:45.8500271Z 0 Error(s)
|
||||
2026-07-04T13:10:45.8505126Z
|
||||
2026-07-04T13:10:45.8505708Z Time Elapsed 00:01:29.84
|
||||
2026-07-04T13:10:46.2580548Z ::group::Run dotnet test src/TaxBaik.sln -c Release --no-build
|
||||
2026-07-04T13:10:46.2581178Z dotnet test src/TaxBaik.sln -c Release --no-build
|
||||
2026-07-04T13:10:46.2581333Z shell: bash --noprofile --norc -e -o pipefail {0}
|
||||
2026-07-04T13:10:46.2581440Z ::endgroup::
|
||||
2026-07-04T13:10:53.7014852Z Test run for /workspace/***/taxbaik/src/TaxBaik.Application.Tests/bin/Release/net10.0/TaxBaik.Application.Tests.dll (.NETCoreApp,Version=v10.0)
|
||||
2026-07-04T13:10:55.4193961Z A total of 1 test files matched the specified pattern.
|
||||
2026-07-04T13:11:01.1818213Z
|
||||
2026-07-04T13:11:01.2027434Z Passed! - Failed: 0, Passed: 26, Skipped: 0, Total: 26, Duration: 215 ms - TaxBaik.Application.Tests.dll (net10.0)
|
||||
2026-07-04T13:11:01.5260692Z ::group::Run set -e
|
||||
2026-07-04T13:11:01.5261048Z set -e
|
||||
2026-07-04T13:11:01.5261347Z mkdir -p ./publish-logs
|
||||
2026-07-04T13:11:01.5261580Z web_log="./publish-logs/publish-web.log"
|
||||
2026-07-04T13:11:01.5261735Z start=$(date +%s)
|
||||
2026-07-04T13:11:01.5261874Z # Web.Client needs a Release static-web-assets manifest for Web publish.
|
||||
2026-07-04T13:11:01.5264309Z # Build it explicitly so publish can reuse the prepared outputs.
|
||||
2026-07-04T13:11:01.5264584Z dotnet build src/TaxBaik.Web.Client/TaxBaik.Web.Client.csproj -c Release --no-restore -p:ContinuousIntegrationBuild=true
|
||||
2026-07-04T13:11:01.5264710Z # Build the Web host in Release as well so publish has the same inputs
|
||||
2026-07-04T13:11:01.5264809Z # the server uses in production.
|
||||
2026-07-04T13:11:01.5264941Z dotnet build src/TaxBaik.Web/TaxBaik.Web.csproj -c Release --no-restore -p:ContinuousIntegrationBuild=true
|
||||
2026-07-04T13:11:01.5265051Z echo "--- Web.Client Release artifacts ---"
|
||||
2026-07-04T13:11:01.5265194Z ls -la src/TaxBaik.Web.Client/bin/Release/net10.0 || true
|
||||
2026-07-04T13:11:01.5265350Z ls -la src/TaxBaik.Web.Client/obj/Release/net10.0 || true
|
||||
2026-07-04T13:11:01.5265523Z if ! dotnet publish src/TaxBaik.Web/ \
|
||||
2026-07-04T13:11:01.5265624Z -c Release \
|
||||
2026-07-04T13:11:01.5265698Z -o ./publish \
|
||||
2026-07-04T13:11:01.5265799Z --no-restore \
|
||||
2026-07-04T13:11:01.5265890Z -p:SelfContained=false \
|
||||
2026-07-04T13:11:01.5266026Z -p:PublishReadyToRun=false \
|
||||
2026-07-04T13:11:01.5266373Z -p:PerformanceSummary=true \
|
||||
2026-07-04T13:11:01.5266489Z -clp:Summary \
|
||||
2026-07-04T13:11:01.5266568Z -bl:"./publish-logs/publish-web.binlog" >"$web_log" 2>&1; then
|
||||
2026-07-04T13:11:01.5266685Z echo "=== Publish Web failed; tailing log ==="
|
||||
2026-07-04T13:11:01.5266803Z tail -n 120 "$web_log" || true
|
||||
2026-07-04T13:11:01.5266930Z exit 1
|
||||
2026-07-04T13:11:01.5267050Z fi
|
||||
2026-07-04T13:11:01.5267183Z end=$(date +%s)
|
||||
2026-07-04T13:11:01.5267283Z echo "✓ Publish Web elapsed: $((end - start))s"
|
||||
2026-07-04T13:11:01.5267379Z ls -lh ./publish-logs/publish-web.binlog
|
||||
2026-07-04T13:11:01.5267482Z shell: bash --noprofile --norc -e -o pipefail {0}
|
||||
2026-07-04T13:11:01.5267673Z ::endgroup::
|
||||
2026-07-04T13:11:04.1670093Z TaxBaik.Domain -> /workspace/***/taxbaik/src/TaxBaik.Domain/bin/Release/net10.0/TaxBaik.Domain.dll
|
||||
2026-07-04T13:11:04.7799852Z TaxBaik.Application -> /workspace/***/taxbaik/src/TaxBaik.Application/bin/Release/net10.0/TaxBaik.Application.dll
|
||||
2026-07-04T13:11:47.5538773Z TaxBaik.Web.Client -> /workspace/***/taxbaik/src/TaxBaik.Web.Client/bin/Release/net10.0/TaxBaik.Web.Client.dll
|
||||
2026-07-04T13:11:47.5567236Z TaxBaik.Web.Client (Blazor output) -> /workspace/***/taxbaik/src/TaxBaik.Web.Client/bin/Release/net10.0/wwwroot
|
||||
2026-07-04T13:11:47.9057412Z
|
||||
2026-07-04T13:11:47.9058068Z Build succeeded.
|
||||
2026-07-04T13:11:47.9058260Z 0 Warning(s)
|
||||
2026-07-04T13:11:47.9058408Z 0 Error(s)
|
||||
2026-07-04T13:11:47.9058651Z
|
||||
2026-07-04T13:11:47.9058789Z Time Elapsed 00:00:45.47
|
||||
2026-07-04T13:11:54.8687412Z TaxBaik.Domain -> /workspace/***/taxbaik/src/TaxBaik.Domain/bin/Release/net10.0/TaxBaik.Domain.dll
|
||||
2026-07-04T13:11:55.0442507Z TaxBaik.Infrastructure -> /workspace/***/taxbaik/src/TaxBaik.Infrastructure/bin/Release/net10.0/TaxBaik.Infrastructure.dll
|
||||
2026-07-04T13:11:56.4376886Z TaxBaik.Application -> /workspace/***/taxbaik/src/TaxBaik.Application/bin/Release/net10.0/TaxBaik.Application.dll
|
||||
2026-07-04T13:12:03.8548417Z TaxBaik.Web.Client -> /workspace/***/taxbaik/src/TaxBaik.Web.Client/bin/Release/net10.0/TaxBaik.Web.Client.dll
|
||||
2026-07-04T13:12:03.8567628Z TaxBaik.Web.Client (Blazor output) -> /workspace/***/taxbaik/src/TaxBaik.Web.Client/bin/Release/net10.0/wwwroot
|
||||
2026-07-04T13:12:11.3956932Z TaxBaik.Web -> /workspace/***/taxbaik/src/TaxBaik.Web/bin/Release/net10.0/TaxBaik.Web.dll
|
||||
2026-07-04T13:12:11.4542625Z
|
||||
2026-07-04T13:12:11.4549811Z Build succeeded.
|
||||
2026-07-04T13:12:11.4563841Z 0 Warning(s)
|
||||
2026-07-04T13:12:11.4564351Z 0 Error(s)
|
||||
2026-07-04T13:12:11.4564531Z
|
||||
2026-07-04T13:12:11.4565085Z Time Elapsed 00:00:20.55
|
||||
2026-07-04T13:12:11.5085624Z --- Web.Client Release artifacts ---
|
||||
2026-07-04T13:12:11.5119963Z total 42060
|
||||
2026-07-04T13:12:11.5120310Z drwxr-xr-x 3 root root 20480 Jul 4 13:11 .
|
||||
2026-07-04T13:12:11.5120457Z drwxr-xr-x 3 root root 4096 Jul 4 13:11 ..
|
||||
2026-07-04T13:12:11.5120569Z -rwxr--r-- 1 root root 55632 May 20 20:19 Microsoft.AspNetCore.Authorization.dll
|
||||
2026-07-04T13:12:11.5120690Z -rwxr--r-- 1 root root 34128 May 20 20:19 Microsoft.AspNetCore.Components.Authorization.dll
|
||||
2026-07-04T13:12:11.5120795Z -rwxr--r-- 1 root root 47952 May 20 20:19 Microsoft.AspNetCore.Components.Forms.dll
|
||||
2026-07-04T13:12:11.5120883Z -rwxr--r-- 1 root root 189264 May 20 20:19 Microsoft.AspNetCore.Components.Web.dll
|
||||
2026-07-04T13:12:11.5120973Z -rwxr--r-- 1 root root 166736 May 20 20:20 Microsoft.AspNetCore.Components.WebAssembly.dll
|
||||
2026-07-04T13:12:11.5121363Z -rwxr--r-- 1 root root 399184 May 20 20:19 Microsoft.AspNetCore.Components.dll
|
||||
2026-07-04T13:12:11.5121478Z -rwxr--r-- 1 root root 16208 May 20 20:18 Microsoft.AspNetCore.Metadata.dll
|
||||
2026-07-04T13:12:11.5121580Z -rwxr--r-- 1 root root 19248 Dec 12 2025 Microsoft.Bcl.Cryptography.dll
|
||||
2026-07-04T13:12:11.5121670Z -rwxr--r-- 1 root root 311632 May 20 18:30 Microsoft.CSharp.dll
|
||||
2026-07-04T13:12:11.5121786Z -rwxr--r-- 1 root root 38192 Oct 24 2025 Microsoft.Extensions.Caching.Abstractions.dll
|
||||
2026-07-04T13:12:11.5121877Z -rwxr--r-- 1 root root 28496 May 20 19:29 Microsoft.Extensions.Configuration.Abstractions.dll
|
||||
2026-07-04T13:12:11.5121982Z -rwxr--r-- 1 root root 43344 May 20 19:32 Microsoft.Extensions.Configuration.Binder.dll
|
||||
2026-07-04T13:12:11.5122101Z -rwxr--r-- 1 root root 28496 May 20 19:34 Microsoft.Extensions.Configuration.FileExtensions.dll
|
||||
2026-07-04T13:12:11.5122192Z -rwxr--r-- 1 root root 27984 May 20 19:36 Microsoft.Extensions.Configuration.Json.dll
|
||||
2026-07-04T13:12:11.5122275Z -rwxr--r-- 1 root root 44880 May 20 19:29 Microsoft.Extensions.Configuration.dll
|
||||
2026-07-04T13:12:11.5122369Z -rwxr--r-- 1 root root 65872 May 20 19:29 Microsoft.Extensions.DependencyInjection.Abstractions.dll
|
||||
2026-07-04T13:12:11.5122474Z -rwxr--r-- 1 root root 95568 May 20 19:30 Microsoft.Extensions.DependencyInjection.dll
|
||||
2026-07-04T13:12:11.5125085Z -rwxr--r-- 1 root root 31056 May 20 19:32 Microsoft.Extensions.Diagnostics.Abstractions.dll
|
||||
2026-07-04T13:12:11.5125391Z -rwxr--r-- 1 root root 36176 May 20 19:34 Microsoft.Extensions.Diagnostics.dll
|
||||
2026-07-04T13:12:11.5125556Z -rwxr--r-- 1 root root 23376 May 20 19:29 Microsoft.Extensions.FileProviders.Abstractions.dll
|
||||
2026-07-04T13:12:11.5125898Z -rwxr--r-- 1 root root 45392 May 20 19:33 Microsoft.Extensions.FileProviders.Physical.dll
|
||||
2026-07-04T13:12:11.5126291Z -rwxr--r-- 1 root root 47952 May 20 19:30 Microsoft.Extensions.FileSystemGlobbing.dll
|
||||
2026-07-04T13:12:11.5126508Z -rwxr--r-- 1 root root 93008 May 20 19:37 Microsoft.Extensions.Http.dll
|
||||
2026-07-04T13:12:11.5126638Z -rwxr--r-- 1 root root 19576 Mar 25 2023 Microsoft.Extensions.Localization.Abstractions.dll
|
||||
2026-07-04T13:12:11.5126726Z -rwxr--r-- 1 root root 31872 Mar 25 2023 Microsoft.Extensions.Localization.dll
|
||||
2026-07-04T13:12:11.5126838Z -rwxr--r-- 1 root root 66896 May 20 19:29 Microsoft.Extensions.Logging.Abstractions.dll
|
||||
2026-07-04T13:12:11.5127279Z -rwxr--r-- 1 root root 51536 May 20 19:33 Microsoft.Extensions.Logging.dll
|
||||
2026-07-04T13:12:11.5127448Z -rwxr--r-- 1 root root 21840 May 20 19:33 Microsoft.Extensions.Options.ConfigurationExtensions.dll
|
||||
2026-07-04T13:12:11.5127557Z -rwxr--r-- 1 root root 65360 May 20 19:30 Microsoft.Extensions.Options.dll
|
||||
2026-07-04T13:12:11.5127641Z -rwxr--r-- 1 root root 44880 May 20 19:29 Microsoft.Extensions.Primitives.dll
|
||||
2026-07-04T13:12:11.5127762Z -rwxr--r-- 1 root root 43344 May 20 20:19 Microsoft.Extensions.Validation.dll
|
||||
2026-07-04T13:12:11.5128076Z -rwxr--r-- 1 root root 19296 Jun 2 20:51 Microsoft.IdentityModel.Abstractions.dll
|
||||
2026-07-04T13:12:11.5128260Z -rwxr--r-- 1 root root 172856 Jun 2 20:52 Microsoft.IdentityModel.JsonWebTokens.dll
|
||||
2026-07-04T13:12:11.5128386Z -rwxr--r-- 1 root root 38200 Jun 2 20:51 Microsoft.IdentityModel.Logging.dll
|
||||
2026-07-04T13:12:11.5128474Z -rwxr--r-- 1 root root 407352 Jun 2 20:51 Microsoft.IdentityModel.Tokens.dll
|
||||
2026-07-04T13:12:11.5128571Z -rwxr--r-- 1 root root 24912 May 20 20:20 Microsoft.JSInterop.WebAssembly.dll
|
||||
2026-07-04T13:12:11.5128871Z -rwxr--r-- 1 root root 75088 May 20 20:19 Microsoft.JSInterop.dll
|
||||
2026-07-04T13:12:11.5129071Z -rwxr--r-- 1 root root 428880 May 20 18:30 Microsoft.VisualBasic.Core.dll
|
||||
2026-07-04T13:12:11.5129181Z -rwxr--r-- 1 root root 17232 May 20 18:31 Microsoft.VisualBasic.dll
|
||||
2026-07-04T13:12:11.5129269Z -rwxr--r-- 1 root root 15696 May 20 18:29 Microsoft.Win32.Primitives.dll
|
||||
2026-07-04T13:12:11.5129378Z -rwxr--r-- 1 root root 33104 May 20 18:29 Microsoft.Win32.Registry.dll
|
||||
2026-07-04T13:12:11.5129670Z -rwxr--r-- 1 root root 9108480 Sep 14 2023 MudBlazor.dll
|
||||
2026-07-04T13:12:11.5129849Z -rwxr--r-- 1 root root 15184 May 20 18:31 System.AppContext.dll
|
||||
2026-07-04T13:12:11.5129943Z -rwxr--r-- 1 root root 15184 May 20 18:30 System.Buffers.dll
|
||||
2026-07-04T13:12:11.5130058Z -rwxr--r-- 1 root root 88912 May 20 18:29 System.Collections.Concurrent.dll
|
||||
2026-07-04T13:12:11.5130158Z -rwxr--r-- 1 root root 251216 May 20 18:29 System.Collections.Immutable.dll
|
||||
2026-07-04T13:12:11.5130255Z -rwxr--r-- 1 root root 47952 May 20 18:29 System.Collections.NonGeneric.dll
|
||||
2026-07-04T13:12:11.5130647Z -rwxr--r-- 1 root root 47952 May 20 18:29 System.Collections.Specialized.dll
|
||||
2026-07-04T13:12:11.5130743Z -rwxr--r-- 1 root root 112976 May 20 18:28 System.Collections.dll
|
||||
2026-07-04T13:12:11.5130828Z -rwxr--r-- 1 root root 102736 May 20 18:31 System.ComponentModel.Annotations.dll
|
||||
2026-07-04T13:12:11.5130924Z -rwxr--r-- 1 root root 16720 May 20 18:31 System.ComponentModel.DataAnnotations.dll
|
||||
2026-07-04T13:12:11.5131645Z -rwxr--r-- 1 root root 26448 May 20 18:29 System.ComponentModel.EventBasedAsync.dll
|
||||
2026-07-04T13:12:11.5131859Z -rwxr--r-- 1 root root 42320 May 20 18:29 System.ComponentModel.Primitives.dll
|
||||
2026-07-04T13:12:11.5131956Z -rwxr--r-- 1 root root 316752 May 20 18:31 System.ComponentModel.TypeConverter.dll
|
||||
2026-07-04T13:12:11.5132341Z -rwxr--r-- 1 root root 16208 May 20 18:29 System.ComponentModel.dll
|
||||
2026-07-04T13:12:11.5132542Z -rwxr--r-- 1 root root 19280 May 20 18:31 System.Configuration.dll
|
||||
2026-07-04T13:12:11.5132640Z -rwxr--r-- 1 root root 54096 May 20 18:31 System.Console.dll
|
||||
2026-07-04T13:12:11.5132722Z -rwxr--r-- 1 root root 23376 May 20 18:31 System.Core.dll
|
||||
2026-07-04T13:12:11.5132831Z -rwxr--r-- 1 root root 1018192 May 20 18:31 System.Data.Common.dll
|
||||
2026-07-04T13:12:11.5132916Z -rwxr--r-- 1 root root 15696 May 20 18:31 System.Data.DataSetExtensions.dll
|
||||
2026-07-04T13:12:11.5133215Z -rwxr--r-- 1 root root 25424 May 20 18:31 System.Data.dll
|
||||
2026-07-04T13:12:11.5133381Z -rwxr--r-- 1 root root 16208 May 20 18:31 System.Diagnostics.Contracts.dll
|
||||
2026-07-04T13:12:11.5133484Z -rwxr--r-- 1 root root 15696 May 20 18:30 System.Diagnostics.Debug.dll
|
||||
2026-07-04T13:12:11.5133567Z -rwxr--r-- 1 root root 202576 May 20 18:29 System.Diagnostics.DiagnosticSource.dll
|
||||
2026-07-04T13:12:11.5133677Z -rwxr--r-- 1 root root 22864 May 20 18:29 System.Diagnostics.FileVersionInfo.dll
|
||||
2026-07-04T13:12:11.5134356Z -rwxr--r-- 1 root root 56656 May 20 18:29 System.Diagnostics.Process.dll
|
||||
2026-07-04T13:12:11.5134723Z -rwxr--r-- 1 root root 25936 May 20 18:29 System.Diagnostics.StackTrace.dll
|
||||
2026-07-04T13:12:11.5135379Z -rwxr--r-- 1 root root 31568 May 20 18:31 System.Diagnostics.TextWriterTraceListener.dll
|
||||
2026-07-04T13:12:11.5135651Z -rwxr--r-- 1 root root 15184 May 20 18:30 System.Diagnostics.Tools.dll
|
||||
2026-07-04T13:12:11.5135753Z -rwxr--r-- 1 root root 58704 May 20 18:29 System.Diagnostics.TraceSource.dll
|
||||
2026-07-04T13:12:11.5135850Z -rwxr--r-- 1 root root 16208 May 20 18:28 System.Diagnostics.Tracing.dll
|
||||
2026-07-04T13:12:11.5136781Z -rwxr--r-- 1 root root 64848 May 20 18:29 System.Drawing.Primitives.dll
|
||||
2026-07-04T13:12:11.5137551Z -rwxr--r-- 1 root root 20304 May 20 18:31 System.Drawing.dll
|
||||
2026-07-04T13:12:11.5137863Z -rwxr--r-- 1 root root 16208 May 20 18:30 System.Dynamic.Runtime.dll
|
||||
2026-07-04T13:12:11.5138051Z -rwxr--r-- 1 root root 97104 May 20 18:29 System.Formats.Asn1.dll
|
||||
2026-07-04T13:12:11.5138659Z -rwxr--r-- 1 root root 38736 May 20 18:29 System.Formats.Tar.dll
|
||||
2026-07-04T13:12:11.5138889Z -rwxr--r-- 1 root root 15696 May 20 18:30 System.Globalization.Calendars.dll
|
||||
2026-07-04T13:12:11.5139082Z -rwxr--r-- 1 root root 15184 May 20 18:30 System.Globalization.Extensions.dll
|
||||
2026-07-04T13:12:11.5139781Z -rwxr--r-- 1 root root 15696 May 20 18:30 System.Globalization.dll
|
||||
2026-07-04T13:12:11.5139966Z -rwxr--r-- 1 root root 28496 May 20 18:29 System.IO.Compression.Brotli.dll
|
||||
2026-07-04T13:12:11.5140482Z -rwxr--r-- 1 root root 15184 May 20 18:31 System.IO.Compression.FileSystem.dll
|
||||
2026-07-04T13:12:11.5140771Z -rwxr--r-- 1 root root 53584 May 20 18:29 System.IO.Compression.ZipFile.dll
|
||||
2026-07-04T13:12:11.5141448Z -rwxr--r-- 1 root root 167760 May 20 18:31 System.IO.Compression.dll
|
||||
2026-07-04T13:12:11.5141798Z -rwxr--r-- 1 root root 32080 May 20 18:29 System.IO.FileSystem.AccessControl.dll
|
||||
2026-07-04T13:12:11.5141987Z -rwxr--r-- 1 root root 23888 May 20 18:29 System.IO.FileSystem.DriveInfo.dll
|
||||
2026-07-04T13:12:11.5142508Z -rwxr--r-- 1 root root 15184 May 20 18:30 System.IO.FileSystem.Primitives.dll
|
||||
2026-07-04T13:12:11.5142806Z -rwxr--r-- 1 root root 33104 May 20 18:29 System.IO.FileSystem.Watcher.dll
|
||||
2026-07-04T13:12:11.5142973Z -rwxr--r-- 1 root root 15696 May 20 18:30 System.IO.FileSystem.dll
|
||||
2026-07-04T13:12:11.5143485Z -rwxr--r-- 1 root root 35152 May 20 18:30 System.IO.IsolatedStorage.dll
|
||||
2026-07-04T13:12:11.5143788Z -rwxr--r-- 1 root root 50000 May 20 18:31 System.IO.MemoryMappedFiles.dll
|
||||
2026-07-04T13:12:11.5143959Z -rwxr--r-- 1 root root 78160 May 20 18:29 System.IO.Pipelines.dll
|
||||
2026-07-04T13:12:11.5144578Z -rwxr--r-- 1 root root 23376 May 20 18:29 System.IO.Pipes.AccessControl.dll
|
||||
2026-07-04T13:12:11.5144792Z -rwxr--r-- 1 root root 42320 May 20 18:29 System.IO.Pipes.dll
|
||||
2026-07-04T13:12:11.5146319Z -rwxr--r-- 1 root root 15696 May 20 18:30 System.IO.UnmanagedMemoryStream.dll
|
||||
2026-07-04T13:12:11.5146840Z -rwxr--r-- 1 root root 15696 May 20 18:30 System.IO.dll
|
||||
2026-07-04T13:12:11.5146996Z -rwxr--r-- 1 root root 92000 Jun 2 20:51 System.IdentityModel.Tokens.Jwt.dll
|
||||
2026-07-04T13:12:11.5147089Z -rwxr--r-- 1 root root 456528 May 20 18:29 System.Linq.AsyncEnumerable.dll
|
||||
2026-07-04T13:12:11.5147186Z -rwxr--r-- 1 root root 575312 May 20 18:29 System.Linq.Expressions.dll
|
||||
2026-07-04T13:12:11.5147308Z -rwxr--r-- 1 root root 223056 May 20 18:31 System.Linq.Parallel.dll
|
||||
2026-07-04T13:12:11.5147710Z -rwxr--r-- 1 root root 78672 May 20 18:31 System.Linq.Queryable.dll
|
||||
2026-07-04T13:12:11.5147887Z -rwxr--r-- 1 root root 201040 May 20 18:29 System.Linq.dll
|
||||
2026-07-04T13:12:11.5148086Z -rwxr--r-- 1 root root 55632 May 20 18:28 System.Memory.dll
|
||||
2026-07-04T13:12:11.5148201Z -rwxr--r-- 1 root root 56144 May 20 18:30 System.Net.Http.Json.dll
|
||||
2026-07-04T13:12:11.5148334Z -rwxr--r-- 1 root root 296272 May 20 18:31 System.Net.Http.dll
|
||||
2026-07-04T13:12:11.5148477Z -rwxr--r-- 1 root root 56144 May 20 18:30 System.Net.HttpListener.dll
|
||||
2026-07-04T13:12:11.5148679Z -rwxr--r-- 1 root root 105296 May 20 18:31 System.Net.Mail.dll
|
||||
2026-07-04T13:12:11.5148845Z -rwxr--r-- 1 root root 24400 May 20 18:31 System.Net.NameResolution.dll
|
||||
2026-07-04T13:12:11.5148996Z -rwxr--r-- 1 root root 42320 May 20 18:29 System.Net.NetworkInformation.dll
|
||||
2026-07-04T13:12:11.5149136Z -rwxr--r-- 1 root root 27984 May 20 18:29 System.Net.Ping.dll
|
||||
2026-07-04T13:12:11.5149310Z -rwxr--r-- 1 root root 107344 May 20 18:31 System.Net.Primitives.dll
|
||||
2026-07-04T13:12:11.5149483Z -rwxr--r-- 1 root root 39248 May 20 18:30 System.Net.Quic.dll
|
||||
2026-07-04T13:12:11.5149644Z -rwxr--r-- 1 root root 65872 May 20 18:30 System.Net.Requests.dll
|
||||
2026-07-04T13:12:11.5150001Z -rwxr--r-- 1 root root 114512 May 20 18:30 System.Net.Security.dll
|
||||
2026-07-04T13:12:11.5150166Z -rwxr--r-- 1 root root 40784 May 20 18:29 System.Net.ServerSentEvents.dll
|
||||
2026-07-04T13:12:11.5150253Z -rwxr--r-- 1 root root 15184 May 20 18:31 System.Net.ServicePoint.dll
|
||||
2026-07-04T13:12:11.5150402Z -rwxr--r-- 1 root root 74576 May 20 18:29 System.Net.Sockets.dll
|
||||
2026-07-04T13:12:11.5150564Z -rwxr--r-- 1 root root 56144 May 20 18:31 System.Net.WebClient.dll
|
||||
2026-07-04T13:12:11.5150716Z -rwxr--r-- 1 root root 33104 May 20 18:29 System.Net.WebHeaderCollection.dll
|
||||
2026-07-04T13:12:11.5150889Z -rwxr--r-- 1 root root 21840 May 20 18:31 System.Net.WebProxy.dll
|
||||
2026-07-04T13:12:11.5151238Z -rwxr--r-- 1 root root 52560 May 20 18:31 System.Net.WebSockets.Client.dll
|
||||
2026-07-04T13:12:11.5151418Z -rwxr--r-- 1 root root 108880 May 20 18:31 System.Net.WebSockets.dll
|
||||
2026-07-04T13:12:11.5151578Z -rwxr--r-- 1 root root 17232 May 20 18:31 System.Net.dll
|
||||
2026-07-04T13:12:11.5151715Z -rwxr--r-- 1 root root 15696 May 20 18:28 System.Numerics.Vectors.dll
|
||||
2026-07-04T13:12:11.5151802Z -rwxr--r-- 1 root root 15184 May 20 18:31 System.Numerics.dll
|
||||
2026-07-04T13:12:11.5151933Z -rwxr--r-- 1 root root 41296 May 20 18:29 System.ObjectModel.dll
|
||||
2026-07-04T13:12:11.5152093Z -rwxr--r-- 1 root root 4880208 May 20 18:19 System.Private.CoreLib.dll
|
||||
2026-07-04T13:12:11.5152307Z -rwxr--r-- 1 root root 859472 May 20 18:31 System.Private.DataContractSerialization.dll
|
||||
2026-07-04T13:12:11.5152488Z -rwxr--r-- 1 root root 105808 May 20 18:28 System.Private.Uri.dll
|
||||
2026-07-04T13:12:11.5152692Z -rwxr--r-- 1 root root 153936 May 20 18:30 System.Private.Xml.Linq.dll
|
||||
2026-07-04T13:12:11.5152975Z -rwxr--r-- 1 root root 3106128 May 20 18:30 System.Private.Xml.dll
|
||||
2026-07-04T13:12:11.5153163Z -rwxr--r-- 1 root root 38224 May 20 18:31 System.Reflection.DispatchProxy.dll
|
||||
2026-07-04T13:12:11.5153372Z -rwxr--r-- 1 root root 15696 May 20 18:29 System.Reflection.Emit.ILGeneration.dll
|
||||
2026-07-04T13:12:11.5153608Z -rwxr--r-- 1 root root 15696 May 20 18:29 System.Reflection.Emit.Lightweight.dll
|
||||
2026-07-04T13:12:11.5153879Z -rwxr--r-- 1 root root 133456 May 20 18:29 System.Reflection.Emit.dll
|
||||
2026-07-04T13:12:11.5153978Z -rwxr--r-- 1 root root 15184 May 20 18:30 System.Reflection.Extensions.dll
|
||||
2026-07-04T13:12:11.5154089Z -rwxr--r-- 1 root root 503632 May 20 18:29 System.Reflection.Metadata.dll
|
||||
2026-07-04T13:12:11.5154210Z -rwxr--r-- 1 root root 15696 May 20 18:28 System.Reflection.Primitives.dll
|
||||
2026-07-04T13:12:11.5154364Z -rwxr--r-- 1 root root 24400 May 20 18:31 System.Reflection.TypeExtensions.dll
|
||||
2026-07-04T13:12:11.5154528Z -rwxr--r-- 1 root root 16208 May 20 18:31 System.Reflection.dll
|
||||
2026-07-04T13:12:11.5154682Z -rwxr--r-- 1 root root 15184 May 20 18:31 System.Resources.Reader.dll
|
||||
2026-07-04T13:12:11.5154910Z -rwxr--r-- 1 root root 15696 May 20 18:30 System.Resources.ResourceManager.dll
|
||||
2026-07-04T13:12:11.5155087Z -rwxr--r-- 1 root root 26960 May 20 18:31 System.Resources.Writer.dll
|
||||
2026-07-04T13:12:11.5155192Z -rwxr--r-- 1 root root 15184 May 20 18:30 System.Runtime.CompilerServices.Unsafe.dll
|
||||
2026-07-04T13:12:11.5155391Z -rwxr--r-- 1 root root 17232 May 20 18:30 System.Runtime.CompilerServices.VisualC.dll
|
||||
2026-07-04T13:12:11.5155579Z -rwxr--r-- 1 root root 17744 May 20 18:30 System.Runtime.Extensions.dll
|
||||
2026-07-04T13:12:11.5155669Z -rwxr--r-- 1 root root 15696 May 20 18:30 System.Runtime.Handles.dll
|
||||
2026-07-04T13:12:11.5155753Z -rwxr--r-- 1 root root 89936 May 20 18:31 System.Runtime.InteropServices.JavaScript.dll
|
||||
2026-07-04T13:12:11.5155878Z -rwxr--r-- 1 root root 15184 May 20 18:31 System.Runtime.InteropServices.RuntimeInformation.dll
|
||||
2026-07-04T13:12:11.5156045Z -rwxr--r-- 1 root root 64848 May 20 18:29 System.Runtime.InteropServices.dll
|
||||
2026-07-04T13:12:11.5158325Z -rwxr--r-- 1 root root 17232 May 20 18:29 System.Runtime.Intrinsics.dll
|
||||
2026-07-04T13:12:11.5158590Z -rwxr--r-- 1 root root 15696 May 20 18:29 System.Runtime.Loader.dll
|
||||
2026-07-04T13:12:11.5158772Z -rwxr--r-- 1 root root 145232 May 20 18:29 System.Runtime.Numerics.dll
|
||||
2026-07-04T13:12:11.5158922Z -rwxr--r-- 1 root root 65872 May 20 18:29 System.Runtime.Serialization.Formatters.dll
|
||||
2026-07-04T13:12:11.5159089Z -rwxr--r-- 1 root root 15696 May 20 18:31 System.Runtime.Serialization.Json.dll
|
||||
2026-07-04T13:12:11.5159322Z -rwxr--r-- 1 root root 23376 May 20 18:30 System.Runtime.Serialization.Primitives.dll
|
||||
2026-07-04T13:12:11.5159494Z -rwxr--r-- 1 root root 16720 May 20 18:31 System.Runtime.Serialization.Xml.dll
|
||||
2026-07-04T13:12:11.5159654Z -rwxr--r-- 1 root root 17232 May 20 18:31 System.Runtime.Serialization.dll
|
||||
2026-07-04T13:12:11.5159852Z -rwxr--r-- 1 root root 44880 May 20 18:28 System.Runtime.dll
|
||||
2026-07-04T13:12:11.5160010Z -rwxr--r-- 1 root root 58192 May 20 18:29 System.Security.AccessControl.dll
|
||||
2026-07-04T13:12:11.5160171Z -rwxr--r-- 1 root root 55120 May 20 18:29 System.Security.Claims.dll
|
||||
2026-07-04T13:12:11.5160331Z -rwxr--r-- 1 root root 17232 May 20 18:31 System.Security.Cryptography.Algorithms.dll
|
||||
2026-07-04T13:12:11.5249058Z -rwxr--r-- 1 root root 16208 May 20 18:31 System.Security.Cryptography.Cng.dll
|
||||
2026-07-04T13:12:11.5249347Z -rwxr--r-- 1 root root 16208 May 20 18:31 System.Security.Cryptography.Csp.dll
|
||||
2026-07-04T13:12:11.5249535Z -rwxr--r-- 1 root root 15696 May 20 18:31 System.Security.Cryptography.Encoding.dll
|
||||
2026-07-04T13:12:11.5249760Z -rwxr--r-- 1 root root 15696 May 20 18:31 System.Security.Cryptography.OpenSsl.dll
|
||||
2026-07-04T13:12:11.5250033Z -rwxr--r-- 1 root root 15696 May 20 18:31 System.Security.Cryptography.Primitives.dll
|
||||
2026-07-04T13:12:11.5250216Z -rwxr--r-- 1 root root 16720 May 20 18:31 System.Security.Cryptography.X509Certificates.dll
|
||||
2026-07-04T13:12:11.5250674Z -rwxr--r-- 1 root root 654160 May 20 18:31 System.Security.Cryptography.dll
|
||||
2026-07-04T13:12:11.5250967Z -rwxr--r-- 1 root root 37712 May 20 18:29 System.Security.Principal.Windows.dll
|
||||
2026-07-04T13:12:11.5251315Z -rwxr--r-- 1 root root 15184 May 20 18:31 System.Security.Principal.dll
|
||||
2026-07-04T13:12:11.5251503Z -rwxr--r-- 1 root root 15696 May 20 18:30 System.Security.SecureString.dll
|
||||
2026-07-04T13:12:11.5251716Z -rwxr--r-- 1 root root 18256 May 20 18:31 System.Security.dll
|
||||
2026-07-04T13:12:11.5251870Z -rwxr--r-- 1 root root 16720 May 20 18:31 System.ServiceModel.Web.dll
|
||||
2026-07-04T13:12:11.5251960Z -rwxr--r-- 1 root root 15696 May 20 18:31 System.ServiceProcess.dll
|
||||
2026-07-04T13:12:11.5252050Z -rwxr--r-- 1 root root 742736 May 20 18:29 System.Text.Encoding.CodePages.dll
|
||||
2026-07-04T13:12:11.5252249Z -rwxr--r-- 1 root root 15696 May 20 18:28 System.Text.Encoding.Extensions.dll
|
||||
2026-07-04T13:12:11.5252419Z -rwxr--r-- 1 root root 15696 May 20 18:30 System.Text.Encoding.dll
|
||||
2026-07-04T13:12:11.5252574Z -rwxr--r-- 1 root root 65872 May 20 18:32 System.Text.Encodings.Web.dll
|
||||
2026-07-04T13:12:11.5252760Z -rwxr--r-- 1 root root 649040 May 20 18:30 System.Text.Json.dll
|
||||
2026-07-04T13:12:11.5252867Z -rwxr--r-- 1 root root 384848 May 20 18:30 System.Text.RegularExpressions.dll
|
||||
2026-07-04T13:12:11.5253087Z -rwxr--r-- 1 root root 33616 May 20 18:29 System.Threading.AccessControl.dll
|
||||
2026-07-04T13:12:11.5253251Z -rwxr--r-- 1 root root 66384 May 20 18:29 System.Threading.Channels.dll
|
||||
2026-07-04T13:12:11.5253433Z -rwxr--r-- 1 root root 15696 May 20 18:28 System.Threading.Overlapped.dll
|
||||
2026-07-04T13:12:11.5253553Z -rwxr--r-- 1 root root 185680 May 20 18:29 System.Threading.Tasks.Dataflow.dll
|
||||
2026-07-04T13:12:11.5253654Z -rwxr--r-- 1 root root 15696 May 20 18:30 System.Threading.Tasks.Extensions.dll
|
||||
2026-07-04T13:12:11.5253817Z -rwxr--r-- 1 root root 61264 May 20 18:31 System.Threading.Tasks.Parallel.dll
|
||||
2026-07-04T13:12:11.5253978Z -rwxr--r-- 1 root root 16720 May 20 18:31 System.Threading.Tasks.dll
|
||||
2026-07-04T13:12:11.5254084Z -rwxr--r-- 1 root root 15696 May 20 18:28 System.Threading.Thread.dll
|
||||
2026-07-04T13:12:11.5254257Z -rwxr--r-- 1 root root 15696 May 20 18:28 System.Threading.ThreadPool.dll
|
||||
2026-07-04T13:12:11.5254445Z -rwxr--r-- 1 root root 15184 May 20 18:30 System.Threading.Timer.dll
|
||||
2026-07-04T13:12:11.5254568Z -rwxr--r-- 1 root root 44880 May 20 18:28 System.Threading.dll
|
||||
2026-07-04T13:12:11.5254651Z -rwxr--r-- 1 root root 175952 May 20 18:30 System.Transactions.Local.dll
|
||||
2026-07-04T13:12:11.5254735Z -rwxr--r-- 1 root root 16720 May 20 18:31 System.Transactions.dll
|
||||
2026-07-04T13:12:11.5254887Z -rwxr--r-- 1 root root 15696 May 20 18:30 System.ValueTuple.dll
|
||||
2026-07-04T13:12:11.5255064Z -rwxr--r-- 1 root root 30032 May 20 18:31 System.Web.HttpUtility.dll
|
||||
2026-07-04T13:12:11.5255242Z -rwxr--r-- 1 root root 15184 May 20 18:31 System.Web.dll
|
||||
2026-07-04T13:12:11.5255373Z -rwxr--r-- 1 root root 15696 May 20 18:31 System.Windows.dll
|
||||
2026-07-04T13:12:11.5255459Z -rwxr--r-- 1 root root 15696 May 20 18:31 System.Xml.Linq.dll
|
||||
2026-07-04T13:12:11.5255542Z -rwxr--r-- 1 root root 21840 May 20 18:30 System.Xml.ReaderWriter.dll
|
||||
2026-07-04T13:12:11.5255636Z -rwxr--r-- 1 root root 16208 May 20 18:31 System.Xml.Serialization.dll
|
||||
2026-07-04T13:12:11.5255720Z -rwxr--r-- 1 root root 15696 May 20 18:31 System.Xml.XDocument.dll
|
||||
2026-07-04T13:12:11.5255803Z -rwxr--r-- 1 root root 15696 May 20 18:31 System.Xml.XPath.XDocument.dll
|
||||
2026-07-04T13:12:11.5255959Z -rwxr--r-- 1 root root 15696 May 20 18:30 System.Xml.XPath.dll
|
||||
2026-07-04T13:12:11.5256266Z -rwxr--r-- 1 root root 15696 May 20 18:31 System.Xml.XmlDocument.dll
|
||||
2026-07-04T13:12:11.5256385Z -rwxr--r-- 1 root root 17744 May 20 18:31 System.Xml.XmlSerializer.dll
|
||||
2026-07-04T13:12:11.5256471Z -rwxr--r-- 1 root root 23376 May 20 18:31 System.Xml.dll
|
||||
2026-07-04T13:12:11.5256551Z -rwxr--r-- 1 root root 50000 May 20 18:32 System.dll
|
||||
2026-07-04T13:12:11.5256633Z -rw-r--r-- 1 root root 156672 Jul 4 13:09 TaxBaik.Application.dll
|
||||
2026-07-04T13:12:11.5256719Z -rw-r--r-- 1 root root 38472 Jul 4 13:09 TaxBaik.Application.pdb
|
||||
2026-07-04T13:12:11.5256811Z -rw-r--r-- 1 root root 37888 Jul 4 13:09 TaxBaik.Domain.dll
|
||||
2026-07-04T13:12:11.5256910Z -rw-r--r-- 1 root root 24100 Jul 4 13:09 TaxBaik.Domain.pdb
|
||||
2026-07-04T13:12:11.5257068Z -rw-r--r-- 1 root root 713216 Jul 4 13:11 TaxBaik.Web.Client.dll
|
||||
2026-07-04T13:12:11.5257222Z -rw-r--r-- 1 root root 373100 Jul 4 13:11 TaxBaik.Web.Client.pdb
|
||||
2026-07-04T13:12:11.5257428Z -rw-r--r-- 1 root root 2546 Jul 4 13:11 TaxBaik.Web.Client.runtimeconfig.json
|
||||
2026-07-04T13:12:11.5257634Z -rw-r--r-- 1 root root 1007340 Jul 4 13:11 TaxBaik.Web.Client.staticwebassets.endpoints.json
|
||||
2026-07-04T13:12:11.5257811Z -rw-r--r-- 1 root root 78064 Jul 4 13:11 TaxBaik.Web.Client.staticwebassets.runtime.json
|
||||
2026-07-04T13:12:11.5257978Z -rwxr--r-- 1 root root 16208 May 20 18:31 WindowsBase.dll
|
||||
2026-07-04T13:12:11.5258134Z -rwxr--r-- 1 root root 37898 May 20 18:42 dotnet.js
|
||||
2026-07-04T13:12:11.5258235Z -rwxr--r-- 1 root root 51818 May 20 18:42 dotnet.js.map
|
||||
2026-07-04T13:12:11.5258317Z -rwxr--r-- 1 root root 145050 May 20 18:43 dotnet.native.js
|
||||
2026-07-04T13:12:11.5258513Z -rwxr--r-- 1 root root 3002101 May 20 18:43 dotnet.native.wasm
|
||||
2026-07-04T13:12:11.5258681Z -rwxr--r-- 1 root root 198479 May 20 18:42 dotnet.runtime.js
|
||||
2026-07-04T13:12:11.5258817Z -rwxr--r-- 1 root root 276757 May 20 18:42 dotnet.runtime.js.map
|
||||
2026-07-04T13:12:11.5258967Z -rwxr--r-- 1 root root 956416 Apr 2 19:04 icudt_CJK.dat
|
||||
2026-07-04T13:12:11.5259148Z -rwxr--r-- 1 root root 550832 Apr 2 19:04 icudt_EFIGS.dat
|
||||
2026-07-04T13:12:11.5259308Z -rwxr--r-- 1 root root 1107168 Apr 2 19:04 icudt_no_CJK.dat
|
||||
2026-07-04T13:12:11.5259459Z -rwxr--r-- 1 root root 59728 May 20 18:31 mscorlib.dll
|
||||
2026-07-04T13:12:11.5259612Z -rwxr--r-- 1 root root 100688 May 20 18:32 netstandard.dll
|
||||
2026-07-04T13:12:11.5259759Z drwxr-xr-x 3 root root 4096 Jul 4 13:11 wwwroot
|
||||
2026-07-04T13:12:11.5260131Z total 4352
|
||||
2026-07-04T13:12:11.5260302Z drwxr-xr-x 8 root root 4096 Jul 4 13:11 .
|
||||
2026-07-04T13:12:11.5260470Z drwxr-xr-x 3 root root 4096 Jul 4 13:11 ..
|
||||
2026-07-04T13:12:11.5260626Z -rw-r--r-- 1 root root 196 Jul 4 13:11 .NETCoreApp,Version=v10.0.AssemblyAttributes.cs
|
||||
2026-07-04T13:12:11.5260784Z -rw-r--r-- 1 root root 137 Jul 4 13:11 EmbeddedAttribute.cs
|
||||
2026-07-04T13:12:11.5260941Z -rw-r--r-- 1 root root 0 Jul 4 13:11 TaxBaik..C36EE7CA.Up2Date
|
||||
2026-07-04T13:12:11.5261222Z -rw-r--r-- 1 root root 1008 Jul 4 13:11 TaxBaik.Web.Client.AssemblyInfo.cs
|
||||
2026-07-04T13:12:11.5261405Z -rw-r--r-- 1 root root 65 Jul 4 13:11 TaxBaik.Web.Client.AssemblyInfoInputs.cache
|
||||
2026-07-04T13:12:11.5261503Z -rw-r--r-- 1 root root 16355 Jul 4 13:11 TaxBaik.Web.Client.GeneratedMSBuildEditorConfig.editorconfig
|
||||
2026-07-04T13:12:11.5261615Z -rw-r--r-- 1 root root 433 Jul 4 13:11 TaxBaik.Web.Client.GlobalUsings.g.cs
|
||||
2026-07-04T13:12:11.5261703Z -rw-r--r-- 1 root root 0 Jul 4 13:11 TaxBaik.Web.Client.MvcApplicationPartsAssemblyInfo.cache
|
||||
2026-07-04T13:12:11.5261801Z -rw-r--r-- 1 root root 27329 Jul 4 13:11 TaxBaik.Web.Client.assets.cache
|
||||
2026-07-04T13:12:11.5261889Z -rw-r--r-- 1 root root 20456 Jul 4 13:11 TaxBaik.Web.Client.csproj.AssemblyReference.cache
|
||||
2026-07-04T13:12:11.5262031Z -rw-r--r-- 1 root root 65 Jul 4 13:11 TaxBaik.Web.Client.csproj.CoreCompileInputs.cache
|
||||
2026-07-04T13:12:11.5262202Z -rw-r--r-- 1 root root 136894 Jul 4 13:11 TaxBaik.Web.Client.csproj.FileListAbsolute.txt
|
||||
2026-07-04T13:12:11.5262340Z -rw-r--r-- 1 root root 713216 Jul 4 13:11 TaxBaik.Web.Client.dll
|
||||
2026-07-04T13:12:11.5262508Z -rw-r--r-- 1 root root 65 Jul 4 13:11 TaxBaik.Web.Client.genruntimeconfig.cache
|
||||
2026-07-04T13:12:11.5262662Z -rw-r--r-- 1 root root 373100 Jul 4 13:11 TaxBaik.Web.Client.pdb
|
||||
2026-07-04T13:12:11.5262819Z -rw-r--r-- 1 root root 276 Jul 4 13:11 ValidatableTypeAttribute.cs
|
||||
2026-07-04T13:12:11.5263027Z -rw-r--r-- 1 root root 3 Jul 4 13:11 blazor.build.boot-extension.json
|
||||
2026-07-04T13:12:11.5263190Z drwxr-xr-x 2 root root 20480 Jul 4 13:11 compressed
|
||||
2026-07-04T13:12:11.5263357Z -rw-r--r-- 1 root root 93392 Jul 4 13:11 dotnet.js
|
||||
2026-07-04T13:12:11.5263509Z -rw-r--r-- 1 root root 276597 Jul 4 13:11 rbcswa.dswa.cache.json
|
||||
2026-07-04T13:12:11.5263673Z drwxr-xr-x 2 root root 4096 Jul 4 13:11 ref
|
||||
2026-07-04T13:12:11.5263819Z drwxr-xr-x 2 root root 4096 Jul 4 13:11 refint
|
||||
2026-07-04T13:12:11.5263960Z -rw-r--r-- 1 root root 322 Jul 4 13:11 rjimswa.dswa.cache.json
|
||||
2026-07-04T13:12:11.5264120Z -rw-r--r-- 1 root root 3444 Jul 4 13:11 rjsmcshtml.dswa.cache.json
|
||||
2026-07-04T13:12:11.5264302Z -rw-r--r-- 1 root root 3444 Jul 4 13:11 rjsmrazor.dswa.cache.json
|
||||
2026-07-04T13:12:11.5264451Z -rw-r--r-- 1 root root 4223 Jul 4 13:11 rpswa.dswa.cache.json
|
||||
2026-07-04T13:12:11.5264608Z drwxr-xr-x 2 root root 4096 Jul 4 13:11 staticwebassets
|
||||
2026-07-04T13:12:11.5264772Z -rw-r--r-- 1 root root 1007340 Jul 4 13:11 staticwebassets.build.endpoints.json
|
||||
2026-07-04T13:12:11.5265812Z -rw-r--r-- 1 root root 1564906 Jul 4 13:11 staticwebassets.build.json
|
||||
2026-07-04T13:12:11.5266004Z -rw-r--r-- 1 root root 44 Jul 4 13:11 staticwebassets.build.json.cache
|
||||
2026-07-04T13:12:11.5266531Z -rw-r--r-- 1 root root 78064 Jul 4 13:11 staticwebassets.development.json
|
||||
2026-07-04T13:12:11.5266758Z -rw-r--r-- 1 root root 0 Jul 4 13:11 swae.build.ex.cache
|
||||
2026-07-04T13:12:11.5266937Z drwxr-xr-x 2 root root 4096 Jul 4 13:11 tmp-webcil
|
||||
2026-07-04T13:12:11.5267094Z drwxr-xr-x 2 root root 20480 Jul 4 13:11 webcil
|
||||
2026-07-04T13:13:34.6836583Z ✓ Publish Web elapsed: 153s
|
||||
2026-07-04T13:13:34.6849747Z -rw-r--r-- 1 root root 2.2M Jul 4 13:13 ./publish-logs/publish-web.binlog
|
||||
2026-07-04T13:13:34.7923863Z ::group::Run set -e
|
||||
2026-07-04T13:13:34.7924256Z set -e
|
||||
2026-07-04T13:13:34.7924366Z mkdir -p ./publish-logs
|
||||
2026-07-04T13:13:34.7924451Z # Proxy is not part of the solution restore graph, so restore it once
|
||||
2026-07-04T13:13:34.7924551Z # here before publishing to avoid NETSDK1004 in CI.
|
||||
2026-07-04T13:13:34.7924841Z dotnet restore src/TaxBaik.Proxy/
|
||||
2026-07-04T13:13:34.7924955Z dotnet build src/TaxBaik.Proxy/TaxBaik.Proxy.csproj -c Release --no-restore
|
||||
2026-07-04T13:13:34.7925079Z start=$(date +%s)
|
||||
2026-07-04T13:13:34.7925160Z dotnet publish src/TaxBaik.Proxy/ \
|
||||
2026-07-04T13:13:34.7925249Z -c Release \
|
||||
2026-07-04T13:13:34.7925335Z -o ./publish/proxy \
|
||||
2026-07-04T13:13:34.7925418Z --no-restore \
|
||||
2026-07-04T13:13:34.7925492Z --no-build \
|
||||
2026-07-04T13:13:34.7925570Z -p:PublishReadyToRun=false \
|
||||
2026-07-04T13:13:34.7925644Z -p:PerformanceSummary=true \
|
||||
2026-07-04T13:13:34.7925719Z -clp:Summary \
|
||||
2026-07-04T13:13:34.7925787Z -bl:./publish-logs/publish-proxy.binlog
|
||||
2026-07-04T13:13:34.7925861Z end=$(date +%s)
|
||||
2026-07-04T13:13:34.7925930Z echo "✓ Publish Proxy elapsed: $((end - start))s"
|
||||
2026-07-04T13:13:34.7926017Z ls -lh ./publish-logs/publish-proxy.binlog
|
||||
2026-07-04T13:13:34.7926277Z shell: bash --noprofile --norc -e -o pipefail {0}
|
||||
2026-07-04T13:13:34.7926600Z ::endgroup::
|
||||
2026-07-04T13:13:35.6339899Z Determining projects to restore...
|
||||
2026-07-04T13:13:36.1800562Z Restored /workspace/***/taxbaik/src/TaxBaik.Proxy/TaxBaik.Proxy.csproj (in 118 ms).
|
||||
2026-07-04T13:13:37.4722382Z TaxBaik.Proxy -> /workspace/***/taxbaik/src/TaxBaik.Proxy/bin/Release/net10.0/TaxBaik.Proxy.dll
|
||||
2026-07-04T13:13:37.5109572Z
|
||||
2026-07-04T13:13:37.5197832Z Build succeeded.
|
||||
2026-07-04T13:13:37.5199998Z 0 Warning(s)
|
||||
2026-07-04T13:13:37.5200383Z 0 Error(s)
|
||||
2026-07-04T13:13:37.5201755Z
|
||||
2026-07-04T13:13:37.5208860Z Time Elapsed 00:00:00.99
|
||||
2026-07-04T13:13:38.5576411Z TaxBaik.Proxy -> /workspace/***/taxbaik/publish/proxy/
|
||||
2026-07-04T13:13:38.5714883Z
|
||||
2026-07-04T13:13:38.5723906Z Build succeeded.
|
||||
2026-07-04T13:13:38.5727824Z 0 Warning(s)
|
||||
2026-07-04T13:13:38.5729672Z 0 Error(s)
|
||||
2026-07-04T13:13:38.5732538Z
|
||||
2026-07-04T13:13:38.5734158Z Time Elapsed 00:00:00.66
|
||||
2026-07-04T13:13:38.6053620Z ✓ Publish Proxy elapsed: 1s
|
||||
2026-07-04T13:13:38.6067767Z -rw-r--r-- 1 root root 335K Jul 4 13:13 ./publish-logs/publish-proxy.binlog
|
||||
2026-07-04T13:13:38.7226853Z ::group::Run set -e
|
||||
2026-07-04T13:13:38.7227437Z set -e
|
||||
2026-07-04T13:13:38.7227615Z JWT_SECRET_KEY="***"
|
||||
2026-07-04T13:13:38.7227847Z TELEGRAM_BOT_TOKEN="***"
|
||||
2026-07-04T13:13:38.7228015Z TELEGRAM_CHAT_ID="***"
|
||||
2026-07-04T13:13:38.7228313Z TELEGRAM_INQUIRY_CHAT_ID=""
|
||||
2026-07-04T13:13:38.7228460Z TELEGRAM_SYSTEM_CHAT_ID=""
|
||||
2026-07-04T13:13:38.7228660Z [ -z "$JWT_SECRET_KEY" ] && { echo "Missing TAXBAIK_JWT_SECRET_KEY" >&2; exit 1; }
|
||||
2026-07-04T13:13:38.7228859Z [ -z "$TELEGRAM_BOT_TOKEN" ] && { echo "Missing TAXBAIK_TELEGRAM_BOT_TOKEN" >&2; exit 1; }
|
||||
2026-07-04T13:13:38.7229026Z [ -z "$TELEGRAM_CHAT_ID" ] && { echo "Missing TAXBAIK_TELEGRAM_CHAT_ID" >&2; exit 1; }
|
||||
2026-07-04T13:13:38.7229366Z [ -z "$TELEGRAM_INQUIRY_CHAT_ID" ] && TELEGRAM_INQUIRY_CHAT_ID="$TELEGRAM_CHAT_ID"
|
||||
2026-07-04T13:13:38.7229534Z [ -z "$TELEGRAM_SYSTEM_CHAT_ID" ] && TELEGRAM_SYSTEM_CHAT_ID="-5585148480"
|
||||
2026-07-04T13:13:38.7229688Z JWT_SECRET_KEY="$JWT_SECRET_KEY" \
|
||||
2026-07-04T13:13:38.7229858Z TELEGRAM_BOT_TOKEN="$TELEGRAM_BOT_TOKEN" \
|
||||
2026-07-04T13:13:38.7230034Z TELEGRAM_CHAT_ID="$TELEGRAM_CHAT_ID" \
|
||||
2026-07-04T13:13:38.7230350Z TELEGRAM_INQUIRY_CHAT_ID="$TELEGRAM_INQUIRY_CHAT_ID" \
|
||||
2026-07-04T13:13:38.7230502Z TELEGRAM_SYSTEM_CHAT_ID="$TELEGRAM_SYSTEM_CHAT_ID" \
|
||||
2026-07-04T13:13:38.7230685Z python3 -c '
|
||||
2026-07-04T13:13:38.7230820Z import json, os, pathlib
|
||||
2026-07-04T13:13:38.7230963Z pathlib.Path("./publish/appsettings.Production.json").write_text(
|
||||
2026-07-04T13:13:38.7231485Z json.dumps({
|
||||
2026-07-04T13:13:38.7231673Z "Jwt": {"SecretKey": os.environ["JWT_SECRET_KEY"]},
|
||||
2026-07-04T13:13:38.7231827Z "Telegram": {
|
||||
2026-07-04T13:13:38.7231965Z "BotToken": os.environ["TELEGRAM_BOT_TOKEN"],
|
||||
2026-07-04T13:13:38.7232155Z "ChatId": os.environ["TELEGRAM_CHAT_ID"],
|
||||
2026-07-04T13:13:38.7232301Z "InquiryChatId": os.environ["TELEGRAM_INQUIRY_CHAT_ID"],
|
||||
2026-07-04T13:13:38.7232446Z "SystemChatId": os.environ["TELEGRAM_SYSTEM_CHAT_ID"]
|
||||
2026-07-04T13:13:38.7232591Z }
|
||||
2026-07-04T13:13:38.7232753Z }, ensure_ascii=False, indent=2),
|
||||
2026-07-04T13:13:38.7233027Z encoding="utf-8"
|
||||
2026-07-04T13:13:38.7233158Z )'
|
||||
2026-07-04T13:13:38.7233325Z test -s ./publish/appsettings.Production.json || { echo "appsettings.Production.json is empty" >&2; exit 1; }
|
||||
2026-07-04T13:13:38.7233447Z shell: bash --noprofile --norc -e -o pipefail {0}
|
||||
2026-07-04T13:13:38.7233563Z ::endgroup::
|
||||
2026-07-04T13:13:38.9869961Z ::group::Run test -s ./publish/proxy/TaxBaik.Proxy.dll || { echo "TaxBaik.Proxy.dll missing" >&2; exit 1; }
|
||||
2026-07-04T13:13:38.9870335Z test -s ./publish/proxy/TaxBaik.Proxy.dll || { echo "TaxBaik.Proxy.dll missing" >&2; exit 1; }
|
||||
2026-07-04T13:13:38.9870463Z test -s ./publish/proxy/TaxBaik.Proxy.runtimeconfig.json || { echo "TaxBaik.Proxy.runtimeconfig.json missing" >&2; exit 1; }
|
||||
2026-07-04T13:13:38.9870578Z shell: bash --noprofile --norc -e -o pipefail {0}
|
||||
2026-07-04T13:13:38.9870689Z ::endgroup::
|
||||
2026-07-04T13:13:39.1581439Z ::group::Run mkdir -p ./publish/db && cp -r db/migrations ./publish/db/ || true
|
||||
2026-07-04T13:13:39.1581828Z mkdir -p ./publish/db && cp -r db/migrations ./publish/db/ || true
|
||||
2026-07-04T13:13:39.1581945Z shell: bash --noprofile --norc -e -o pipefail {0}
|
||||
2026-07-04T13:13:39.1582057Z ::endgroup::
|
||||
2026-07-04T13:13:39.3269319Z ::group::Run bash scripts/validate_migrations.sh db/migrations
|
||||
2026-07-04T13:13:39.3270166Z bash scripts/validate_migrations.sh db/migrations
|
||||
2026-07-04T13:13:39.3271314Z shell: bash --noprofile --norc -e -o pipefail {0}
|
||||
2026-07-04T13:13:39.3272003Z ::endgroup::
|
||||
2026-07-04T13:13:39.4174922Z Duplicate version check passed.
|
||||
2026-07-04T13:13:39.5287374Z ::group::Run bash scripts/validate_kst_timestamps.sh
|
||||
2026-07-04T13:13:39.5287938Z bash scripts/validate_kst_timestamps.sh
|
||||
2026-07-04T13:13:39.5288057Z shell: bash --noprofile --norc -e -o pipefail {0}
|
||||
2026-07-04T13:13:39.5288185Z ::endgroup::
|
||||
2026-07-04T13:13:39.5845000Z KST timestamp harness passed.
|
||||
2026-07-04T13:13:39.6981958Z ::group::Run COMMIT_HASH=$(git rev-parse --short HEAD)
|
||||
2026-07-04T13:13:39.6982433Z COMMIT_HASH=$(git rev-parse --short HEAD)
|
||||
2026-07-04T13:13:39.6982554Z BUILD_TIME=$(TZ=Asia/Seoul date +'%Y-%m-%d %H:%M:%S KST')
|
||||
2026-07-04T13:13:39.6982657Z mkdir -p ./publish/wwwroot
|
||||
2026-07-04T13:13:39.6982775Z printf '{\n "version": "%s",\n "built": "%s"\n}\n' "$COMMIT_HASH" "$BUILD_TIME" > ./publish/wwwroot/version.json
|
||||
2026-07-04T13:13:39.6982913Z echo "✓ Build: $COMMIT_HASH @ $BUILD_TIME"
|
||||
2026-07-04T13:13:39.6983012Z shell: bash --noprofile --norc -e -o pipefail {0}
|
||||
2026-07-04T13:13:39.6983143Z ::endgroup::
|
||||
2026-07-04T13:13:39.7666694Z ✓ Build: 333089a @ 2026-07-04 22:13:39 KST
|
||||
2026-07-04T13:13:39.8839119Z ::group::Run mkdir -p ~/.ssh
|
||||
2026-07-04T13:13:39.8839443Z mkdir -p ~/.ssh
|
||||
2026-07-04T13:13:39.8839565Z SSH_KEY_B64="***"
|
||||
2026-07-04T13:13:39.8839697Z SSH_KEY_RAW="***"
|
||||
2026-07-04T13:13:39.8839828Z if [ -n "$SSH_KEY_B64" ]; then
|
||||
2026-07-04T13:13:39.8839904Z printf '%s' "$SSH_KEY_B64" | base64 -d > ~/.ssh/id_ed25519
|
||||
2026-07-04T13:13:39.8839987Z elif [ -n "$SSH_KEY_RAW" ]; then
|
||||
2026-07-04T13:13:39.8840064Z if printf '%s' "$SSH_KEY_RAW" | grep -q 'BEGIN .*PRIVATE KEY'; then
|
||||
2026-07-04T13:13:39.8840162Z printf '%b\n' "$SSH_KEY_RAW" > ~/.ssh/id_ed25519
|
||||
2026-07-04T13:13:39.8840244Z else
|
||||
2026-07-04T13:13:39.8840311Z printf '%s' "$SSH_KEY_RAW" | base64 -d > ~/.ssh/id_ed25519
|
||||
2026-07-04T13:13:39.8840401Z fi
|
||||
2026-07-04T13:13:39.8840468Z else
|
||||
2026-07-04T13:13:39.8840542Z echo "Missing DEPLOY_SSH_KEY_B64 or DEPLOY_SSH_KEY" >&2; exit 1
|
||||
2026-07-04T13:13:39.8840634Z fi
|
||||
2026-07-04T13:13:39.8840694Z sed -i 's/\r$//' ~/.ssh/id_ed25519
|
||||
2026-07-04T13:13:39.8840774Z chmod 600 ~/.ssh/id_ed25519
|
||||
2026-07-04T13:13:39.8840843Z ssh-keyscan -H "***" >> ~/.ssh/known_hosts 2>/dev/null || true
|
||||
2026-07-04T13:13:39.8840934Z shell: bash --noprofile --norc -e -o pipefail {0}
|
||||
2026-07-04T13:13:39.8841160Z ::endgroup::
|
||||
2026-07-04T13:13:40.2940162Z ::group::Run cp deploy_gb.sh ./publish/deploy_gb.sh
|
||||
2026-07-04T13:13:40.2940570Z cp deploy_gb.sh ./publish/deploy_gb.sh
|
||||
2026-07-04T13:13:40.2940686Z mkdir -p ./publish/scripts
|
||||
2026-07-04T13:13:40.2940784Z cp scripts/validate_migrations.sh ./publish/scripts/validate_migrations.sh
|
||||
2026-07-04T13:13:40.2941234Z chmod +x ./publish/scripts/validate_migrations.sh
|
||||
2026-07-04T13:13:40.2941324Z tar -czf taxbaik_deploy.tgz -C ./publish .
|
||||
2026-07-04T13:13:40.2941443Z echo "✓ Package: $(du -sh taxbaik_deploy.tgz | cut -f1)"
|
||||
2026-07-04T13:13:40.2941550Z shell: bash --noprofile --norc -e -o pipefail {0}
|
||||
2026-07-04T13:13:40.2941809Z ::endgroup::
|
||||
2026-07-04T13:13:42.8131179Z ✓ Package: 23M
|
||||
2026-07-04T13:13:42.9209145Z ::group::Run set -e
|
||||
2026-07-04T13:13:42.9209698Z set -e
|
||||
2026-07-04T13:13:42.9209813Z export TAXBAIK_DEPLOY_FROM_CI=1
|
||||
2026-07-04T13:13:42.9209918Z TIMESTAMP=$(TZ=Asia/Seoul date +%Y%m%d_%H%M%S)
|
||||
2026-07-04T13:13:42.9210001Z COMMIT=$(git rev-parse --short HEAD)
|
||||
2026-07-04T13:13:42.9210082Z DEPLOY_HOST="***"
|
||||
2026-07-04T13:13:42.9210164Z DEPLOY_USER="***"
|
||||
2026-07-04T13:13:42.9210250Z TELEGRAM_BOT_TOKEN="***"
|
||||
2026-07-04T13:13:42.9210333Z TELEGRAM_SYSTEM_CHAT_ID=""
|
||||
2026-07-04T13:13:42.9210638Z TELEGRAM_CHAT_ID="${TELEGRAM_SYSTEM_CHAT_ID:--5585148480}"
|
||||
2026-07-04T13:13:42.9210723Z
|
||||
2026-07-04T13:13:42.9210789Z send_telegram() {
|
||||
2026-07-04T13:13:42.9210862Z local text="$1"
|
||||
2026-07-04T13:13:42.9210940Z if [ -z "$TELEGRAM_BOT_TOKEN" ]; then
|
||||
2026-07-04T13:13:42.9211349Z echo "Skipping Telegram notification: missing TAXBAIK_TELEGRAM_BOT_TOKEN" >&2
|
||||
2026-07-04T13:13:42.9211471Z return 0
|
||||
2026-07-04T13:13:42.9211617Z fi
|
||||
2026-07-04T13:13:42.9211684Z
|
||||
2026-07-04T13:13:42.9211765Z curl -fsS -X POST "https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/sendMessage" \
|
||||
2026-07-04T13:13:42.9211858Z -d "chat_id=${TELEGRAM_CHAT_ID}" \
|
||||
2026-07-04T13:13:42.9211937Z --data-urlencode "text=${text}" \
|
||||
2026-07-04T13:13:42.9212171Z -d "parse_mode=HTML" >/dev/null || true
|
||||
2026-07-04T13:13:42.9212250Z }
|
||||
2026-07-04T13:13:42.9212314Z
|
||||
2026-07-04T13:13:42.9212381Z notify_failure() {
|
||||
2026-07-04T13:13:42.9212515Z local exit_code=$?
|
||||
2026-07-04T13:13:42.9212586Z send_telegram "❌ <b>TaxBaik 배포 실패</b>
|
||||
2026-07-04T13:13:42.9212681Z
|
||||
2026-07-04T13:13:42.9212751Z 커밋: <code>${COMMIT}</code>
|
||||
2026-07-04T13:13:42.9212978Z 시간: <code>${TIMESTAMP}</code>
|
||||
2026-07-04T13:13:42.9213060Z 단계: CI/CD deploy"
|
||||
2026-07-04T13:13:42.9213158Z exit "$exit_code"
|
||||
2026-07-04T13:13:42.9213233Z }
|
||||
2026-07-04T13:13:42.9213297Z
|
||||
2026-07-04T13:13:42.9213422Z trap notify_failure ERR
|
||||
2026-07-04T13:13:42.9213514Z
|
||||
2026-07-04T13:13:42.9213577Z echo "=== Deploying TaxBaik $COMMIT ($TIMESTAMP) ==="
|
||||
2026-07-04T13:13:42.9213809Z
|
||||
2026-07-04T13:13:42.9213873Z # 1. 아티팩트 업로드
|
||||
2026-07-04T13:13:42.9213948Z scp -i ~/.ssh/id_ed25519 -o StrictHostKeyChecking=yes \
|
||||
2026-07-04T13:13:42.9214028Z taxbaik_deploy.tgz "$DEPLOY_USER@$DEPLOY_HOST:/tmp/taxbaik_${TIMESTAMP}.tgz"
|
||||
2026-07-04T13:13:42.9214119Z
|
||||
2026-07-04T13:13:42.9214188Z # 2. 서버에서 배포 + 헬스 체크 (SSH 1회 연결로 처리, Green-Blue 지원)
|
||||
2026-07-04T13:13:42.9214335Z ssh -i ~/.ssh/id_ed25519 -o StrictHostKeyChecking=yes \
|
||||
2026-07-04T13:13:42.9214557Z -o ServerAliveInterval=10 \
|
||||
2026-07-04T13:13:42.9214642Z "$DEPLOY_USER@$DEPLOY_HOST" TAXBAIK_DEPLOY_FROM_CI=1 bash << REMOTE
|
||||
2026-07-04T13:13:42.9214727Z set -e
|
||||
2026-07-04T13:13:42.9214797Z DEPLOY_HOME="/home/***"
|
||||
2026-07-04T13:13:42.9214873Z DEPLOY_DIR="\$DEPLOY_HOME/deployments/taxbaik_${TIMESTAMP}"
|
||||
2026-07-04T13:13:42.9214973Z TIMESTAMP="${TIMESTAMP}"
|
||||
2026-07-04T13:13:42.9215054Z COMMIT="${COMMIT}"
|
||||
2026-07-04T13:13:42.9215187Z
|
||||
2026-07-04T13:13:42.9215400Z echo "--- [1/5] 압축 해제 ---"
|
||||
2026-07-04T13:13:42.9215489Z mkdir -p "\$DEPLOY_DIR"
|
||||
2026-07-04T13:13:42.9215560Z tar -xzf "/tmp/taxbaik_\${TIMESTAMP}.tgz" -C "\$DEPLOY_DIR"
|
||||
2026-07-04T13:13:42.9215639Z rm -f "/tmp/taxbaik_\${TIMESTAMP}.tgz"
|
||||
2026-07-04T13:13:42.9215721Z
|
||||
2026-07-04T13:13:42.9215783Z echo "--- [2/5] 운영 설정 검증 ---"
|
||||
2026-07-04T13:13:42.9215859Z test -s "\$DEPLOY_DIR/appsettings.Production.json" \
|
||||
2026-07-04T13:13:42.9215934Z || { echo "FATAL: appsettings.Production.json 없음" >&2; exit 1; }
|
||||
2026-07-04T13:13:42.9216271Z test -s "\$DEPLOY_DIR/proxy/TaxBaik.Proxy.dll" \
|
||||
2026-07-04T13:13:42.9216359Z || { echo "FATAL: TaxBaik.Proxy.dll 없음" >&2; exit 1; }
|
||||
2026-07-04T13:13:42.9216437Z
|
||||
2026-07-04T13:13:42.9216510Z echo "--- [3/5] 마이그레이션 사전 검증 ---"
|
||||
2026-07-04T13:13:42.9216586Z test -x "\$DEPLOY_DIR/scripts/validate_migrations.sh" \
|
||||
2026-07-04T13:13:42.9216660Z || { echo "FATAL: validate_migrations.sh 없음" >&2; exit 1; }
|
||||
2026-07-04T13:13:42.9216745Z "\$DEPLOY_DIR/scripts/validate_migrations.sh" "\$DEPLOY_DIR/db/migrations" "postgresql://taxbaik:taxbaik123@localhost:5432/taxbaikdb"
|
||||
2026-07-04T13:13:42.9216847Z
|
||||
2026-07-04T13:13:42.9217059Z echo "--- [4/5] Green-Blue 배포 실행 ---"
|
||||
2026-07-04T13:13:42.9217221Z chmod +x "\$DEPLOY_DIR/deploy_gb.sh"
|
||||
2026-07-04T13:13:42.9217308Z "\$DEPLOY_DIR/deploy_gb.sh" "\$DEPLOY_DIR"
|
||||
2026-07-04T13:13:42.9217386Z
|
||||
2026-07-04T13:13:42.9217447Z echo "--- [4.5/5] Nginx 설정 검증 ---"
|
||||
2026-07-04T13:13:42.9217520Z # 실제 로드되는 파일은 sites-enabled/의 심볼릭 링크 대상만이다.
|
||||
2026-07-04T13:13:42.9217605Z # sites-available/에 다른 파일(예: default)이 있어도 sites-enabled에
|
||||
2026-07-04T13:13:42.9218091Z # 링크되어 있지 않으면 nginx는 그 내용을 절대 읽지 않는다.
|
||||
2026-07-04T13:13:42.9218382Z NGINX_CONF=""
|
||||
2026-07-04T13:13:42.9218490Z for f in /etc/nginx/sites-enabled/*; do
|
||||
2026-07-04T13:13:42.9218573Z if [ -e "\$f" ] && grep -q "location /taxbaik" "\$f" 2>/dev/null; then
|
||||
2026-07-04T13:13:42.9218869Z NGINX_CONF=\$(readlink -f "\$f")
|
||||
2026-07-04T13:13:42.9218950Z break
|
||||
2026-07-04T13:13:42.9219016Z fi
|
||||
2026-07-04T13:13:42.9219102Z done
|
||||
2026-07-04T13:13:42.9219233Z
|
||||
2026-07-04T13:13:42.9219312Z if [ -z "\$NGINX_CONF" ]; then
|
||||
2026-07-04T13:13:42.9219390Z echo "❌ FATAL: sites-enabled/ 안에서 'location /taxbaik'를 정의한 파일을 찾을 수 없음" >&2
|
||||
2026-07-04T13:13:42.9219652Z echo " sites-available/에 파일을 수정해도 sites-enabled에 심볼릭 링크되어 있지 않으면 반영되지 않는다." >&2
|
||||
2026-07-04T13:13:42.9219759Z exit 1
|
||||
2026-07-04T13:13:42.9219835Z fi
|
||||
2026-07-04T13:13:42.9219908Z echo "실제 로드되는 설정 파일: \$NGINX_CONF"
|
||||
2026-07-04T13:13:42.9219986Z
|
||||
2026-07-04T13:13:42.9220131Z # 불변식: '/'와 '/taxbaik' location 모두 반드시 127.0.0.1:5001 (TaxBaik.Proxy)을
|
||||
2026-07-04T13:13:42.9220223Z # 가리켜야 한다. 5003/5004를 직접 하드코딩하면 Green-Blue 포트 전환 시
|
||||
2026-07-04T13:13:42.9220456Z # 죽은 포트를 가리키게 되어 502/404가 발생한다 (실제 발생했던 장애).
|
||||
2026-07-04T13:13:42.9220549Z if grep -E "proxy_pass\s+http://127\.0\.0\.1:500[34]" "\$NGINX_CONF" > /dev/null 2>&1; then
|
||||
2026-07-04T13:13:42.9220651Z echo "❌ FATAL: \$NGINX_CONF 가 포트 5003/5004를 직접 참조함 (Green-Blue 전환 시 502 발생)" >&2
|
||||
2026-07-04T13:13:42.9220753Z echo " 수정: sudo sed -i 's|127.0.0.1:500[34]|127.0.0.1:5001|g' \$NGINX_CONF && sudo nginx -t && sudo systemctl reload nginx" >&2
|
||||
2026-07-04T13:13:42.9220848Z exit 1
|
||||
2026-07-04T13:13:42.9220987Z fi
|
||||
2026-07-04T13:13:42.9221466Z
|
||||
2026-07-04T13:13:42.9221529Z # proxy_pass에 URI(끝 슬래시)가 있으면 nginx가 요청 경로를 재작성하며,
|
||||
2026-07-04T13:13:42.9221630Z # location 접두사와 슬래시 개수가 안 맞으면 백엔드로 이중 슬래시(//)가
|
||||
2026-07-04T13:13:42.9221713Z # 전달되어 404가 발생한다 (실제 발생했던 장애). 접두사 location에서는
|
||||
2026-07-04T13:13:42.9221797Z # proxy_pass에 URI를 붙이지 않는다.
|
||||
2026-07-04T13:13:42.9221894Z if grep -E "location\s+/taxbaik\s*\{" -A 1 "\$NGINX_CONF" | grep -qE "proxy_pass\s+http://127\.0\.0\.1:5001/;"; then
|
||||
2026-07-04T13:13:42.9221999Z echo "❌ FATAL: location /taxbaik 의 proxy_pass 에 불필요한 trailing slash가 있음 (이중 슬래시로 인한 404 위험)" >&2
|
||||
2026-07-04T13:13:42.9222362Z exit 1
|
||||
2026-07-04T13:13:42.9222534Z fi
|
||||
2026-07-04T13:13:42.9222682Z
|
||||
2026-07-04T13:13:42.9222792Z echo "✓ Nginx 설정 검증 통과 (실제 로드 파일 확인 + 포트 5001 고정 + trailing slash 없음)"
|
||||
2026-07-04T13:13:42.9223150Z
|
||||
2026-07-04T13:13:42.9223222Z echo "--- [5/5] 헬스 체크 (최대 60초) ---"
|
||||
2026-07-04T13:13:42.9223338Z ATTEMPTS=20
|
||||
2026-07-04T13:13:42.9223421Z for i in \$(seq 1 \$ATTEMPTS); do
|
||||
2026-07-04T13:13:42.9223498Z STATUS=\$(curl -sf -o /dev/null -w '%{http_code}' http://127.0.0.1:5001/taxbaik/healthz 2>/dev/null || echo "000")
|
||||
2026-07-04T13:13:42.9223594Z if [ "\$STATUS" = "200" ]; then
|
||||
2026-07-04T13:13:42.9223668Z echo "✓ [1/6] 헬스 체크 완료"
|
||||
2026-07-04T13:13:42.9223743Z
|
||||
2026-07-04T13:13:42.9223966Z # 검증 1: 메인 페이지 로드. curl -L + -w 는 리다이렉트 체인의 상태코드를
|
||||
2026-07-04T13:13:42.9224061Z # 이어붙이므로, 첫 응답 코드만 받아 200/3xx를 허용한다.
|
||||
2026-07-04T13:13:42.9224147Z MAIN_STATUS=\$(curl -fsS -o /dev/null -w '%{http_code}' http://127.0.0.1:5001/taxbaik/ 2>/dev/null || echo "000")
|
||||
2026-07-04T13:13:42.9224234Z if ! printf '%s' "\$MAIN_STATUS" | grep -Eq '^(200|301|302|307|308)$'; then
|
||||
2026-07-04T13:13:42.9224320Z echo "❌ 메인 페이지 로드 실패 (상태: \$MAIN_STATUS)" >&2
|
||||
2026-07-04T13:13:42.9224399Z exit 1
|
||||
2026-07-04T13:13:42.9224479Z fi
|
||||
2026-07-04T13:13:42.9224543Z echo "✓ [2/6] 메인 페이지 로드 완료"
|
||||
2026-07-04T13:13:42.9224985Z
|
||||
2026-07-04T13:13:42.9225055Z # 검증 2: CSS 파일 로드
|
||||
2026-07-04T13:13:42.9225135Z CSS_STATUS=\$(curl -sf -o /dev/null -w '%{http_code}' http://127.0.0.1:5001/taxbaik/css/admin.css 2>/dev/null || echo "000")
|
||||
2026-07-04T13:13:42.9225232Z if [ "\$CSS_STATUS" != "200" ]; then
|
||||
2026-07-04T13:13:42.9225309Z echo "❌ CSS 파일 로드 실패 (상태: \$CSS_STATUS)" >&2
|
||||
2026-07-04T13:13:42.9225387Z exit 1
|
||||
2026-07-04T13:13:42.9225462Z fi
|
||||
2026-07-04T13:13:42.9225738Z echo "✓ [3/6] CSS 파일 로드 완료"
|
||||
2026-07-04T13:13:42.9225831Z
|
||||
2026-07-04T13:13:42.9225896Z # 검증 3: 버전 정보. 파일 존재만 보면 5001이 잘못된 구 프로세스를
|
||||
2026-07-04T13:13:42.9225979Z # 가리키는 장애를 놓치므로, HTTP 응답이 이번 커밋인지 확인한다.
|
||||
2026-07-04T13:13:42.9226283Z if [ ! -s "\$DEPLOY_DIR/wwwroot/version.json" ]; then
|
||||
2026-07-04T13:13:42.9226386Z echo "❌ version.json 누락" >&2
|
||||
2026-07-04T13:13:42.9226486Z exit 1
|
||||
2026-07-04T13:13:42.9226563Z fi
|
||||
2026-07-04T13:13:42.9226631Z VERSION_JSON=\$(curl -fsS http://127.0.0.1:5001/taxbaik/version.json 2>/dev/null || true)
|
||||
2026-07-04T13:13:42.9226716Z if ! printf '%s' "\$VERSION_JSON" | grep -q "\"version\": \"\$COMMIT\""; then
|
||||
2026-07-04T13:13:42.9226807Z echo "❌ 5001 프록시가 이번 배포 버전을 제공하지 않음" >&2
|
||||
2026-07-04T13:13:42.9226891Z echo " expected: \$COMMIT" >&2
|
||||
2026-07-04T13:13:42.9227320Z echo " actual: \$VERSION_JSON" >&2
|
||||
2026-07-04T13:13:42.9227405Z echo " 확인: 5001 포트가 TaxBaik.Proxy.dll인지, /home/***/taxbaik_port가 새 포트인지 점검" >&2
|
||||
2026-07-04T13:13:42.9227514Z exit 1
|
||||
2026-07-04T13:13:42.9227584Z fi
|
||||
2026-07-04T13:13:42.9227652Z echo "✓ [4/6] 버전 정보 확인 완료"
|
||||
2026-07-04T13:13:42.9228126Z
|
||||
2026-07-04T13:13:42.9228198Z # 검증 4: 5001 프록시 확인
|
||||
2026-07-04T13:13:42.9228275Z if ! ss -tlnp | grep -q ':5001 '; then
|
||||
2026-07-04T13:13:42.9228357Z echo "❌ 5001 프록시가 실행 중이 아님" >&2
|
||||
2026-07-04T13:13:42.9228453Z exit 1
|
||||
2026-07-04T13:13:42.9229006Z fi
|
||||
2026-07-04T13:13:42.9229214Z echo "✓ [5/6] 5001 프록시 확인 완료"
|
||||
2026-07-04T13:13:42.9229372Z
|
||||
2026-07-04T13:13:42.9230132Z # 검증 5: 관리자 로그인 페이지
|
||||
2026-07-04T13:13:42.9230248Z LOGIN_STATUS=\$(curl -fsSL -o /dev/null -w '%{http_code}' http://127.0.0.1:5001/taxbaik/admin/login 2>/dev/null || echo "000")
|
||||
2026-07-04T13:13:42.9230348Z if [ "\$LOGIN_STATUS" != "200" ]; then
|
||||
2026-07-04T13:13:42.9230444Z echo "❌ 관리자 로그인 페이지 로드 실패 (상태: \$LOGIN_STATUS)" >&2
|
||||
2026-07-04T13:13:42.9230527Z exit 1
|
||||
2026-07-04T13:13:42.9230609Z fi
|
||||
2026-07-04T13:13:42.9231221Z echo "✓ [6/6] 관리자 페이지 로드 완료"
|
||||
2026-07-04T13:13:42.9231399Z
|
||||
2026-07-04T13:13:42.9231522Z echo "✓ 서비스 정상 (시도 \$i/\$ATTEMPTS)"
|
||||
2026-07-04T13:13:42.9231640Z # 구 배포 디렉토리 정리 (최근 5개 보존)
|
||||
2026-07-04T13:13:42.9232008Z ls -1dt \$DEPLOY_HOME/deployments/taxbaik_* 2>/dev/null \
|
||||
2026-07-04T13:13:42.9232103Z | tail -n +6 | xargs rm -rf 2>/dev/null || true
|
||||
2026-07-04T13:13:42.9232179Z exit 0
|
||||
2026-07-04T13:13:42.9232248Z fi
|
||||
2026-07-04T13:13:42.9232315Z if [ "\$i" -eq "\$ATTEMPTS" ]; then
|
||||
2026-07-04T13:13:42.9232391Z echo "=== FATAL: 서비스가 \$ATTEMPTS회 시도 후에도 응답하지 않음 ===" >&2
|
||||
2026-07-04T13:13:42.9232495Z echo "--- 5001 listener ---" >&2
|
||||
2026-07-04T13:13:42.9232780Z ss -tlnp 2>/dev/null | grep ':5001 ' >&2 || true
|
||||
2026-07-04T13:13:42.9232863Z echo "--- active port file ---" >&2
|
||||
2026-07-04T13:13:42.9232938Z cat "\$DEPLOY_HOME/taxbaik_port" >&2 || true
|
||||
2026-07-04T13:13:42.9233014Z echo "--- 신규 앱 로그 ---" >&2
|
||||
2026-07-04T13:13:42.9233103Z ACTIVE_PORT=\$(cat "\$DEPLOY_HOME/taxbaik_port" 2>/dev/null | tr -d '[:space:]' || true)
|
||||
2026-07-04T13:13:42.9233190Z if [ -n "\$ACTIVE_PORT" ] && [ -s "\$DEPLOY_DIR/web_\${ACTIVE_PORT}.log" ]; then
|
||||
2026-07-04T13:13:42.9233273Z tail -n 80 "\$DEPLOY_DIR/web_\${ACTIVE_PORT}.log" >&2
|
||||
2026-07-04T13:13:42.9233657Z else
|
||||
2026-07-04T13:13:42.9233743Z ls -la "\$DEPLOY_DIR" >&2 || true
|
||||
2026-07-04T13:13:42.9233817Z fi
|
||||
2026-07-04T13:13:42.9233890Z echo "--- proxy 로그 ---" >&2
|
||||
2026-07-04T13:13:42.9233962Z tail -n 80 "\$DEPLOY_HOME/taxbaik_proxy.log" >&2 || true
|
||||
2026-07-04T13:13:42.9234041Z exit 1
|
||||
2026-07-04T13:13:42.9234471Z fi
|
||||
2026-07-04T13:13:42.9234554Z echo " 대기 중... (\$i/\$ATTEMPTS, HTTP \$STATUS)"
|
||||
2026-07-04T13:13:42.9234634Z sleep 3
|
||||
2026-07-04T13:13:42.9234703Z done
|
||||
2026-07-04T13:13:42.9234766Z REMOTE
|
||||
2026-07-04T13:13:42.9234830Z
|
||||
2026-07-04T13:13:42.9234892Z echo "✓ 배포 완료: taxbaik_${TIMESTAMP} @ $DEPLOY_HOST"
|
||||
2026-07-04T13:13:42.9235262Z
|
||||
2026-07-04T13:13:42.9235341Z echo "--- 실제 공개 도메인 종단 간 검증 (Nginx/Cloudflare 경유, 최대 3회 재시도) ---"
|
||||
2026-07-04T13:13:42.9235432Z ROOT_URL="https://www.taxbaik.com/" \
|
||||
2026-07-04T13:13:42.9235507Z ADMIN_URL="https://www.taxbaik.com/taxbaik/admin/login" \
|
||||
2026-07-04T13:13:42.9236287Z PUBLIC_MARKER="백원숙 세무회계" \
|
||||
2026-07-04T13:13:42.9236462Z PUBLIC_FORBIDDEN="관리자" \
|
||||
2026-07-04T13:13:42.9236552Z ADMIN_MARKER="관리자 로그인" \
|
||||
2026-07-04T13:13:42.9236627Z MAX_RETRIES=3 \
|
||||
2026-07-04T13:13:42.9236949Z RETRY_SLEEP_SECONDS=5 \
|
||||
2026-07-04T13:13:42.9237040Z bash ./scripts/taxbaik-smoke.sh
|
||||
2026-07-04T13:13:42.9237112Z echo "✓ 실제 공개 도메인 전체 정상"
|
||||
2026-07-04T13:13:42.9237191Z
|
||||
2026-07-04T13:13:42.9237252Z send_telegram "✅ <b>TaxBaik 배포 완료</b>
|
||||
2026-07-04T13:13:42.9237340Z
|
||||
2026-07-04T13:13:42.9237406Z 커밋: <code>${COMMIT}</code>
|
||||
2026-07-04T13:13:42.9237491Z 시간: <code>${TIMESTAMP}</code>
|
||||
2026-07-04T13:13:42.9237760Z 대상: <code>${DEPLOY_HOST}</code>
|
||||
2026-07-04T13:13:42.9237851Z 채널: <code>${TELEGRAM_CHAT_ID}</code>"
|
||||
2026-07-04T13:13:42.9237934Z shell: bash --noprofile --norc -e -o pipefail {0}
|
||||
2026-07-04T13:13:42.9238036Z ::endgroup::
|
||||
2026-07-04T13:13:42.9795782Z === Deploying TaxBaik 333089a (20260704_221342) ===
|
||||
2026-07-04T13:13:43.7626459Z --- [1/5] 압축 해제 ---
|
||||
2026-07-04T13:13:44.0253437Z --- [2/5] 운영 설정 검증 ---
|
||||
2026-07-04T13:13:44.0253925Z --- [3/5] 마이그레이션 사전 검증 ---
|
||||
2026-07-04T13:13:44.2657668Z Migration dry-run validation passed.
|
||||
2026-07-04T13:13:44.2662938Z --- [4/5] Green-Blue 배포 실행 ---
|
||||
2026-07-04T13:13:44.2760328Z ===== 🚀 TaxBaik Green/Blue Deployment Script =====
|
||||
2026-07-04T13:13:44.2794538Z Active Port: 5003
|
||||
2026-07-04T13:13:44.2795229Z Target Port: 5004
|
||||
2026-07-04T13:13:44.2795392Z Deploy Directory: /home/***/deployments/taxbaik_20260704_221342
|
||||
2026-07-04T13:13:44.3288519Z === Starting New App on Port 5004 ===
|
||||
2026-07-04T13:13:46.3487972Z === Health Checking Port 5004 ===
|
||||
2026-07-04T13:13:46.6511505Z ✓ Health check passed on port 5004 (Attempt 1/20)
|
||||
2026-07-04T13:13:46.6512033Z === Switching Traffic to Port 5004 ===
|
||||
2026-07-04T13:13:46.6515819Z ✓ Traffic routed to 5004 (via TaxBaik.Proxy on 5001)
|
||||
2026-07-04T13:13:46.6516256Z === Stopping Old App on Port 5003 ===
|
||||
2026-07-04T13:13:46.6678440Z Killing old process PID: 4173589
|
||||
2026-07-04T13:13:46.6679064Z ✓ Old process terminated
|
||||
2026-07-04T13:13:46.6679183Z === Cleaning Up Old Deployments ===
|
||||
2026-07-04T13:13:46.6852709Z ✓ Cleanup completed
|
||||
2026-07-04T13:13:46.6853598Z ===== ✅ Green/Blue Deployment Completed Successfully =====
|
||||
2026-07-04T13:13:46.6856960Z --- [4.5/5] Nginx 설정 검증 ---
|
||||
2026-07-04T13:13:46.6948415Z 실제 로드되는 설정 파일: /etc/nginx/sites-available/taxbaik-domains.conf
|
||||
2026-07-04T13:13:46.6964877Z ✓ Nginx 설정 검증 통과 (실제 로드 파일 확인 + 포트 5001 고정 + trailing slash 없음)
|
||||
2026-07-04T13:13:46.6967831Z --- [5/5] 헬스 체크 (최대 60초) ---
|
||||
2026-07-04T13:13:46.7499335Z ✓ [1/6] 헬스 체크 완료
|
||||
2026-07-04T13:13:47.0229067Z ✓ [2/6] 메인 페이지 로드 완료
|
||||
2026-07-04T13:13:47.0535305Z ✓ [3/6] CSS 파일 로드 완료
|
||||
2026-07-04T13:13:47.0710321Z ✓ [4/6] 버전 정보 확인 완료
|
||||
2026-07-04T13:13:47.0814650Z ✓ [5/6] 5001 프록시 확인 완료
|
||||
2026-07-04T13:13:47.2865630Z ✓ [6/6] 관리자 페이지 로드 완료
|
||||
2026-07-04T13:13:47.2869510Z ✓ 서비스 정상 (시도 1/20)
|
||||
2026-07-04T13:13:47.2972427Z ✓ 배포 완료: taxbaik_20260704_221342 @ ***
|
||||
2026-07-04T13:13:47.2972968Z --- 실제 공개 도메인 종단 간 검증 (Nginx/Cloudflare 경유, 최대 3회 재시도) ---
|
||||
2026-07-04T13:13:47.7455427Z ✓ https://www.taxbaik.com/ -> HTTP 200
|
||||
2026-07-04T13:13:48.0299000Z ✓ https://www.taxbaik.com/taxbaik/ -> HTTP 200
|
||||
2026-07-04T13:13:48.3635834Z ✓ https://www.taxbaik.com/taxbaik/admin/login -> HTTP 200
|
||||
2026-07-04T13:13:48.3636757Z ✓ public/admin smoke passed
|
||||
2026-07-04T13:13:48.3636921Z ✓ 실제 공개 도메인 전체 정상
|
||||
2026-07-04T13:13:48.9939879Z evaluating expression 'success()'
|
||||
2026-07-04T13:13:48.9940693Z expression 'success()' evaluated to 'true'
|
||||
2026-07-04T13:13:48.9940826Z ⭐ Run Post Setup .NET
|
||||
2026-07-04T13:13:48.9941279Z Writing entry to tarball workflow/outputcmd.txt len:0
|
||||
2026-07-04T13:13:48.9941448Z Writing entry to tarball workflow/statecmd.txt len:0
|
||||
2026-07-04T13:13:48.9941556Z Writing entry to tarball workflow/pathcmd.txt len:0
|
||||
2026-07-04T13:13:48.9941653Z Writing entry to tarball workflow/envs.txt len:0
|
||||
2026-07-04T13:13:48.9941730Z Writing entry to tarball workflow/SUMMARY.md len:0
|
||||
2026-07-04T13:13:48.9941978Z Extracting content to '/var/run/act'
|
||||
2026-07-04T13:13:49.0352151Z run post step for 'Setup .NET'
|
||||
2026-07-04T13:13:49.0353027Z executing remote job container: [node /var/run/act/actions/2d637816dd86ec9ff59dad9ec3547bf90b88133b3029538a91ec96ac7f316336/dist/cache-save/index.js]
|
||||
2026-07-04T13:13:49.0709594Z 🐳 docker exec cmd=[node /var/run/act/actions/2d637816dd86ec9ff59dad9ec3547bf90b88133b3029538a91ec96ac7f316336/dist/cache-save/index.js] user= workdir=
|
||||
2026-07-04T13:13:49.0710046Z Exec command '[node /var/run/act/actions/2d637816dd86ec9ff59dad9ec3547bf90b88133b3029538a91ec96ac7f316336/dist/cache-save/index.js]'
|
||||
2026-07-04T13:13:49.0710678Z Working directory '/workspace/***/taxbaik'
|
||||
2026-07-04T13:13:50.0657531Z (node:1547) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
|
||||
2026-07-04T13:13:50.0658705Z (Use `node --trace-deprecation ...` to show where the warning was created)
|
||||
2026-07-04T13:13:50.0821237Z ✅ Success - Post Setup .NET
|
||||
2026-07-04T13:13:50.1480311Z evaluating expression 'always()'
|
||||
2026-07-04T13:13:50.1481264Z expression 'always()' evaluated to 'true'
|
||||
2026-07-04T13:13:50.1481402Z ⭐ Run Post Checkout code
|
||||
2026-07-04T13:13:50.1481857Z Writing entry to tarball workflow/outputcmd.txt len:0
|
||||
2026-07-04T13:13:50.1482072Z Writing entry to tarball workflow/statecmd.txt len:0
|
||||
2026-07-04T13:13:50.1482171Z Writing entry to tarball workflow/pathcmd.txt len:0
|
||||
2026-07-04T13:13:50.1482287Z Writing entry to tarball workflow/envs.txt len:0
|
||||
2026-07-04T13:13:50.1482592Z Writing entry to tarball workflow/SUMMARY.md len:0
|
||||
2026-07-04T13:13:50.1482764Z Extracting content to '/var/run/act'
|
||||
2026-07-04T13:13:50.1505527Z run post step for 'Checkout code'
|
||||
2026-07-04T13:13:50.1506785Z executing remote job container: [node /var/run/act/actions/c3fe249fe73091a17d6638fe1341e7bd0bcc3466ce52323c0688e83e2463a4ab/dist/index.js]
|
||||
2026-07-04T13:13:50.1812860Z 🐳 docker exec cmd=[node /var/run/act/actions/c3fe249fe73091a17d6638fe1341e7bd0bcc3466ce52323c0688e83e2463a4ab/dist/index.js] user= workdir=
|
||||
2026-07-04T13:13:50.1813559Z Exec command '[node /var/run/act/actions/c3fe249fe73091a17d6638fe1341e7bd0bcc3466ce52323c0688e83e2463a4ab/dist/index.js]'
|
||||
2026-07-04T13:13:50.1814311Z Working directory '/workspace/***/taxbaik'
|
||||
2026-07-04T13:13:50.4028369Z [command]/usr/bin/git version
|
||||
2026-07-04T13:13:50.4086493Z git version 2.54.0
|
||||
2026-07-04T13:13:50.4124253Z ***
|
||||
2026-07-04T13:13:50.4143368Z Temporarily overriding HOME='/tmp/799355da-5b84-4d6e-aa99-c0ced6989bd6' before making global git config changes
|
||||
2026-07-04T13:13:50.4145671Z Adding repository directory to the temporary git global config as a safe directory
|
||||
2026-07-04T13:13:50.4156595Z [command]/usr/bin/git config --global --add safe.directory /workspace/***/taxbaik
|
||||
2026-07-04T13:13:50.4203190Z [command]/usr/bin/git config --local --name-only --get-regexp core\.sshCommand
|
||||
2026-07-04T13:13:50.4509074Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'core\.sshCommand' && git config --local --unset-all 'core.sshCommand' || :"
|
||||
2026-07-04T13:13:50.4819706Z [command]/usr/bin/git config --local --name-only --get-regexp http\.http\:\/\/gitea\:3000\/\.extraheader
|
||||
2026-07-04T13:13:50.4856539Z http.http://gitea:3000/.extraheader
|
||||
2026-07-04T13:13:50.4896853Z [command]/usr/bin/git config --local --unset-all http.http://gitea:3000/.extraheader
|
||||
2026-07-04T13:13:50.4958619Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'http\.http\:\/\/gitea\:3000\/\.extraheader' && git config --local --unset-all 'http.http://gitea:3000/.extraheader' || :"
|
||||
2026-07-04T13:13:50.5348711Z [command]/usr/bin/git config --local --name-only --get-regexp ^includeIf\.gitdir:
|
||||
2026-07-04T13:13:50.5381463Z [command]/usr/bin/git submodule foreach --recursive git config --local --show-origin --name-only --get-regexp remote.origin.url
|
||||
2026-07-04T13:13:50.5732977Z ✅ Success - Post Checkout code
|
||||
2026-07-04T13:13:50.5817281Z Cleaning up container for job build-and-deploy
|
||||
2026-07-04T13:13:51.3647302Z Removed container: 08d700f8667717ce78a305700f60f13b228a0d19241928b95a601d63d13f1a22
|
||||
2026-07-04T13:13:51.3662848Z 🐳 docker volume rm GITEA-ACTIONS-TASK-1556-WORKFLOW-TaxBaik-CI-CD-JOB-build-and-de-6297a4cd6c76440083f1331088cff47725d01c4362935c7b8a69a7f486001683
|
||||
2026-07-04T13:13:51.5102730Z 🐳 docker volume rm GITEA-ACTIONS-TASK-1556-WORKFLOW-TaxBaik-CI-CD-JOB-build-and-de-6297a4cd6c76440083f1331088cff47725d01c4362935c7b8a69a7f486001683-env
|
||||
2026-07-04T13:13:51.8129561Z 🏁 Job succeeded
|
||||
@@ -1,12 +1,10 @@
|
||||
# TaxBaik Nginx 설정 (Option B: /taxbaik/ 프리픽스 제거)
|
||||
# 배포 시 이 파일이 /etc/nginx/sites-available/taxbaik-domains.conf 로 복사됨
|
||||
# TaxBaik Nginx 설정
|
||||
# https://www.taxbaik.com/ → http://127.0.0.1:5001/
|
||||
|
||||
# 1. TaxBaik 홈페이지 (taxbaik.com, www.taxbaik.com)
|
||||
server {
|
||||
server_name taxbaik.com www.taxbaik.com;
|
||||
client_max_body_size 512M;
|
||||
|
||||
# 루트 경로 요청을 /taxbaik 으로 프록싱하여 base href /taxbaik/ 에 대응
|
||||
location / {
|
||||
proxy_pass http://127.0.0.1:5001/;
|
||||
proxy_http_version 1.1;
|
||||
@@ -20,34 +18,13 @@ server {
|
||||
proxy_read_timeout 120s;
|
||||
}
|
||||
|
||||
listen 443 ssl; # managed by Certbot
|
||||
ssl_certificate /etc/letsencrypt/live/taxbaik.com/fullchain.pem; # managed by Certbot
|
||||
ssl_certificate_key /etc/letsencrypt/live/taxbaik.com/privkey.pem; # managed by Certbot
|
||||
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
|
||||
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
|
||||
listen 443 ssl;
|
||||
ssl_certificate /etc/letsencrypt/live/taxbaik.com/fullchain.pem;
|
||||
ssl_certificate_key /etc/letsencrypt/live/taxbaik.com/privkey.pem;
|
||||
include /etc/letsencrypt/options-ssl-nginx.conf;
|
||||
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
|
||||
}
|
||||
|
||||
# 2. Gitea (gitea.taxbaik.com)
|
||||
server {
|
||||
server_name gitea.taxbaik.com;
|
||||
client_max_body_size 512M;
|
||||
|
||||
location / {
|
||||
proxy_pass http://127.0.0.1:3000;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
}
|
||||
|
||||
listen 443 ssl; # managed by Certbot
|
||||
ssl_certificate /etc/letsencrypt/live/gitea.taxbaik.com/fullchain.pem; # managed by Certbot
|
||||
ssl_certificate_key /etc/letsencrypt/live/gitea.taxbaik.com/privkey.pem; # managed by Certbot
|
||||
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
|
||||
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
|
||||
}
|
||||
|
||||
# 3. Redirects
|
||||
server {
|
||||
if ($server_name = www.taxbaik.com) {
|
||||
return 301 https://$server_name$request_uri;
|
||||
@@ -55,11 +32,8 @@ server {
|
||||
if ($server_name = taxbaik.com) {
|
||||
return 301 https://$server_name$request_uri;
|
||||
}
|
||||
if ($server_name = gitea.taxbaik.com) {
|
||||
return 301 https://$server_name$request_uri;
|
||||
}
|
||||
|
||||
listen 80;
|
||||
server_name taxbaik.com www.taxbaik.com gitea.taxbaik.com;
|
||||
server_name taxbaik.com www.taxbaik.com;
|
||||
return 404;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,197 @@
|
||||
#!/bin/bash
|
||||
# TaxBaik 배포 전 검증 스크립트
|
||||
# 목적: 배포 대상 버전의 완전성과 안정성을 검증
|
||||
# 실행: bash scripts/validate-deploy.sh <target_port>
|
||||
|
||||
set -e
|
||||
|
||||
TARGET_PORT=${1:-5003}
|
||||
BASE_URL="http://127.0.0.1:$TARGET_PORT"
|
||||
MAX_RETRIES=10
|
||||
RETRY_DELAY=3
|
||||
TIMEOUT=60
|
||||
|
||||
echo "🔍 배포 전 검증 시작"
|
||||
echo "================================"
|
||||
echo "대상 포트: $TARGET_PORT"
|
||||
echo "Base URL: $BASE_URL"
|
||||
echo ""
|
||||
|
||||
# 색상 정의
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
NC='\033[0m'
|
||||
|
||||
# 검증 결과 추적
|
||||
VALIDATION_FAILED=0
|
||||
|
||||
# ============================================
|
||||
# 1️⃣ 프로세스 확인
|
||||
# ============================================
|
||||
echo "1️⃣ 포트 $TARGET_PORT 프로세스 확인..."
|
||||
|
||||
if ! netstat -tlnp 2>/dev/null | grep -q ":$TARGET_PORT "; then
|
||||
echo -e "${RED}❌ 포트 $TARGET_PORT에 프로세스가 없습니다${NC}"
|
||||
VALIDATION_FAILED=1
|
||||
else
|
||||
PROCESS_INFO=$(netstat -tlnp 2>/dev/null | grep ":$TARGET_PORT " | awk '{print $NF}')
|
||||
echo -e "${GREEN}✅ 프로세스 실행 중: $PROCESS_INFO${NC}"
|
||||
fi
|
||||
echo ""
|
||||
|
||||
# ============================================
|
||||
# 2️⃣ 헬스 체크 (재시도 포함)
|
||||
# ============================================
|
||||
echo "2️⃣ 헬스 체크: $BASE_URL/healthz"
|
||||
|
||||
HEALTH_OK=0
|
||||
for i in $(seq 1 $MAX_RETRIES); do
|
||||
echo -n " 시도 $i/$MAX_RETRIES... "
|
||||
|
||||
if RESPONSE=$(curl -sf --max-time 5 "$BASE_URL/healthz" 2>/dev/null); then
|
||||
if echo "$RESPONSE" | grep -q "Healthy"; then
|
||||
echo -e "${GREEN}✅ Healthy${NC}"
|
||||
HEALTH_OK=1
|
||||
break
|
||||
fi
|
||||
fi
|
||||
|
||||
echo -e "${YELLOW}대기 중${NC}"
|
||||
sleep $RETRY_DELAY
|
||||
done
|
||||
|
||||
if [ $HEALTH_OK -eq 0 ]; then
|
||||
echo -e "${RED}❌ 헬스 체크 실패${NC}"
|
||||
VALIDATION_FAILED=1
|
||||
fi
|
||||
echo ""
|
||||
|
||||
# ============================================
|
||||
# 3️⃣ 필수 API 엔드포인트 검증
|
||||
# ============================================
|
||||
echo "3️⃣ 필수 API 엔드포인트 검증..."
|
||||
|
||||
declare -a ENDPOINTS=(
|
||||
"/api/auth/login:POST"
|
||||
"/api/admin-dashboard/summary:GET"
|
||||
"/api/blog:GET"
|
||||
"/api/inquiry:GET"
|
||||
)
|
||||
|
||||
for ENDPOINT_DEF in "${ENDPOINTS[@]}"; do
|
||||
IFS=':' read -r ENDPOINT METHOD <<< "$ENDPOINT_DEF"
|
||||
echo -n " $METHOD $ENDPOINT... "
|
||||
|
||||
if [ "$METHOD" = "GET" ]; then
|
||||
HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" --max-time 5 "$BASE_URL$ENDPOINT" 2>/dev/null || echo "000")
|
||||
else
|
||||
HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" --max-time 5 -X $METHOD "$BASE_URL$ENDPOINT" 2>/dev/null || echo "000")
|
||||
fi
|
||||
|
||||
# GET: 200/404 허용 (리소스 없을 수 있음)
|
||||
# POST: 200/400/401/405 허용
|
||||
VALID=0
|
||||
case $HTTP_CODE in
|
||||
200|400|401|404|405) VALID=1 ;;
|
||||
esac
|
||||
|
||||
if [ $VALID -eq 1 ]; then
|
||||
echo -e "${GREEN}✅ ($HTTP_CODE)${NC}"
|
||||
else
|
||||
echo -e "${RED}❌ ($HTTP_CODE)${NC}"
|
||||
VALIDATION_FAILED=1
|
||||
fi
|
||||
done
|
||||
echo ""
|
||||
|
||||
# ============================================
|
||||
# 4️⃣ 데이터베이스 연결 확인
|
||||
# ============================================
|
||||
echo "4️⃣ 데이터베이스 연결 확인..."
|
||||
|
||||
# 간단한 API 호출로 DB 연결 검증
|
||||
if curl -sf --max-time 5 "$BASE_URL/api/blog?limit=1" > /dev/null 2>&1; then
|
||||
echo -e "${GREEN}✅ 데이터베이스 연결 정상${NC}"
|
||||
else
|
||||
echo -e "${RED}❌ 데이터베이스 연결 실패${NC}"
|
||||
VALIDATION_FAILED=1
|
||||
fi
|
||||
echo ""
|
||||
|
||||
# ============================================
|
||||
# 5️⃣ 로그 확인 (오류 없음)
|
||||
# ============================================
|
||||
echo "5️⃣ 애플리케이션 로그 확인..."
|
||||
|
||||
# 운영 서버의 배포 로그에서 FATAL, ERROR 확인
|
||||
DEPLOY_LOG_DIR="/home/kjh2064/deployments"
|
||||
if [ -d "$DEPLOY_LOG_DIR" ]; then
|
||||
LATEST_LOG=$(find "$DEPLOY_LOG_DIR" -name "web_*.log" -type f 2>/dev/null | sort -r | head -1)
|
||||
|
||||
if [ -n "$LATEST_LOG" ]; then
|
||||
if tail -100 "$LATEST_LOG" 2>/dev/null | grep -i "fatal\|exception\|error" | grep -v "INFO\|WARN" > /dev/null; then
|
||||
echo -e "${RED}❌ 로그에 오류가 있습니다${NC}"
|
||||
echo " 마지막 오류:"
|
||||
tail -100 "$LATEST_LOG" 2>/dev/null | grep -i "fatal\|exception\|error" | grep -v "INFO\|WARN" | tail -3
|
||||
VALIDATION_FAILED=1
|
||||
else
|
||||
echo -e "${GREEN}✅ 로그 정상 (오류 없음)${NC}"
|
||||
fi
|
||||
fi
|
||||
else
|
||||
echo -e "${YELLOW}⚠️ 로그 디렉토리 없음 (로컬 테스트 환경)${NC}"
|
||||
fi
|
||||
echo ""
|
||||
|
||||
# ============================================
|
||||
# 6️⃣ 메모리/CPU 사용량 확인
|
||||
# ============================================
|
||||
echo "6️⃣ 리소스 사용량 확인..."
|
||||
|
||||
if command -v ps > /dev/null; then
|
||||
PS_OUTPUT=$(ps aux | grep -E "dotnet.*$TARGET_PORT" | grep -v grep)
|
||||
if [ -n "$PS_OUTPUT" ]; then
|
||||
# CPU%, MEM% 확인
|
||||
CPU_USAGE=$(echo "$PS_OUTPUT" | awk '{print $3}')
|
||||
MEM_USAGE=$(echo "$PS_OUTPUT" | awk '{print $4}')
|
||||
|
||||
echo " CPU 사용률: $CPU_USAGE%"
|
||||
echo " 메모리 사용률: $MEM_USAGE%"
|
||||
|
||||
# 경고: CPU > 50% 또는 메모리 > 30%
|
||||
CPU_THRESHOLD=50
|
||||
MEM_THRESHOLD=30
|
||||
|
||||
CPU_CHECK=$(echo "$CPU_USAGE > $CPU_THRESHOLD" | bc 2>/dev/null || echo 0)
|
||||
MEM_CHECK=$(echo "$MEM_USAGE > $MEM_THRESHOLD" | bc 2>/dev/null || echo 0)
|
||||
|
||||
if [ "$CPU_CHECK" = "1" ] || [ "$MEM_CHECK" = "1" ]; then
|
||||
echo -e "${YELLOW}⚠️ 리소스 사용량이 높습니다 (경고)${NC}"
|
||||
# 경고만 (배포는 계속)
|
||||
else
|
||||
echo -e "${GREEN}✅ 리소스 사용량 정상${NC}"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
echo ""
|
||||
|
||||
# ============================================
|
||||
# 최종 결과
|
||||
# ============================================
|
||||
echo "================================"
|
||||
if [ $VALIDATION_FAILED -eq 0 ]; then
|
||||
echo -e "${GREEN}✅ 배포 전 검증 성공!${NC}"
|
||||
echo " 배포를 진행할 수 있습니다."
|
||||
exit 0
|
||||
else
|
||||
echo -e "${RED}❌ 배포 전 검증 실패!${NC}"
|
||||
echo " 배포를 중단합니다."
|
||||
echo ""
|
||||
echo "확인 사항:"
|
||||
echo " 1. 앱이 올바르게 시작되었는지 확인"
|
||||
echo " 2. 데이터베이스 연결 확인"
|
||||
echo " 3. 로그에서 오류 메시지 확인"
|
||||
echo " 4. Nginx 설정 확인"
|
||||
exit 1
|
||||
fi
|
||||
@@ -1,39 +1,63 @@
|
||||
<MudSimpleTable Striped="true" Dense="true" Class="admin-table mt-4">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>이름</th>
|
||||
<th>전화</th>
|
||||
<th>분야</th>
|
||||
<th>상태</th>
|
||||
<th>메시지</th>
|
||||
<th>날짜</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach (var inquiry in filteredInquiries)
|
||||
{
|
||||
<tr>
|
||||
<td>@inquiry.Name</td>
|
||||
<td>@inquiry.Phone</td>
|
||||
<td>@inquiry.ServiceType</td>
|
||||
<td>
|
||||
<MudChip T="string" Size="Size.Small" Color="@GetStatusColor(inquiry.Status)">
|
||||
@GetStatusLabel(inquiry.Status)
|
||||
</MudChip>
|
||||
</td>
|
||||
<td>@GetPreview(inquiry.Message)</td>
|
||||
<td>@inquiry.CreatedAt.ToString("yyyy-MM-dd")</td>
|
||||
<td>
|
||||
<MudButton Size="Size.Small" Variant="Variant.Outlined" Color="Color.Primary"
|
||||
Href="@($"./inquiries/{inquiry.Id}")">보기</MudButton>
|
||||
<MudButton Size="Size.Small" Variant="Variant.Outlined" Color="Color.Info"
|
||||
Href="@($"./inquiries/{inquiry.Id}/edit")">수정</MudButton>
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
</tbody>
|
||||
</MudSimpleTable>
|
||||
<MudDataGrid T="Domain.Entities.Inquiry"
|
||||
Items="@filteredInquiries"
|
||||
Dense="true"
|
||||
Hover="true"
|
||||
Striped="true"
|
||||
Virtualize="true"
|
||||
RowsPerPage="30"
|
||||
Class="admin-grid mt-4">
|
||||
|
||||
<Columns>
|
||||
<PropertyColumn Property="x => x.Id" Title="ID" Sortable="true"
|
||||
Style="width: 80px;" />
|
||||
|
||||
<PropertyColumn Property="x => x.Name" Title="이름" Sortable="true"
|
||||
Filterable="true" />
|
||||
|
||||
<PropertyColumn Property="x => x.Phone" Title="전화" Sortable="false" />
|
||||
|
||||
<PropertyColumn Property="x => x.ServiceType" Title="분야" Sortable="true"
|
||||
Filterable="true" />
|
||||
|
||||
<TemplateColumn Title="상태" Sortable="true">
|
||||
<CellTemplate>
|
||||
<MudChip T="string"
|
||||
Size="Size.Small"
|
||||
Color="@GetStatusColor(context.Item.Status)"
|
||||
Variant="Variant.Filled">
|
||||
@GetStatusLabel(context.Item.Status)
|
||||
</MudChip>
|
||||
</CellTemplate>
|
||||
</TemplateColumn>
|
||||
|
||||
<PropertyColumn Property="x => x.Message" Title="메시지"
|
||||
Sortable="false"
|
||||
CellStyleFunc="@(_ => "max-width: 200px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;")" />
|
||||
|
||||
<PropertyColumn Property="x => x.CreatedAt" Title="생성일"
|
||||
Sortable="true"
|
||||
Format="yyyy-MM-dd" />
|
||||
|
||||
<TemplateColumn Title="작업" CellStyleFunc="@(_ => "text-align: center;")">
|
||||
<CellTemplate>
|
||||
<MudButtonGroup Size="Size.Small" Variant="Variant.Outlined">
|
||||
<MudButton Color="Color.Primary"
|
||||
Href="@($"./inquiries/{context.Item.Id}")">
|
||||
@Icons.Material.Filled.Visibility
|
||||
</MudButton>
|
||||
<MudButton Color="Color.Info"
|
||||
Href="@($"./inquiries/{context.Item.Id}/edit")">
|
||||
@Icons.Material.Filled.Edit
|
||||
</MudButton>
|
||||
</MudButtonGroup>
|
||||
</CellTemplate>
|
||||
</TemplateColumn>
|
||||
</Columns>
|
||||
|
||||
<PagerContent>
|
||||
<MudDataGridPager T="Domain.Entities.Inquiry" />
|
||||
</PagerContent>
|
||||
</MudDataGrid>
|
||||
|
||||
@code {
|
||||
[Parameter, EditorRequired]
|
||||
@@ -57,15 +81,6 @@
|
||||
: Inquiries.Where(x => x.Status == Status).ToList();
|
||||
}
|
||||
|
||||
private static string GetPreview(string message)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(message))
|
||||
return "-";
|
||||
|
||||
var trimmed = message.Trim();
|
||||
return trimmed.Length <= 30 ? trimmed : $"{trimmed[..30]}...";
|
||||
}
|
||||
|
||||
private static Color GetStatusColor(string status) => status switch
|
||||
{
|
||||
"new" => Color.Warning,
|
||||
@@ -76,5 +91,14 @@
|
||||
_ => Color.Default
|
||||
};
|
||||
|
||||
private static string GetStatusLabel(string status) => InquiryStatusMapper.Labels.GetValueOrDefault(status, status);
|
||||
private static string GetStatusLabel(string status) =>
|
||||
status switch
|
||||
{
|
||||
"new" => "신규",
|
||||
"consulting" => "상담중",
|
||||
"contracted" => "계약완료",
|
||||
"rejected" => "거절",
|
||||
"closed" => "종결",
|
||||
_ => status
|
||||
};
|
||||
}
|
||||
|
||||
@@ -50,60 +50,84 @@
|
||||
}
|
||||
else
|
||||
{
|
||||
<MudSimpleTable Striped="true" Dense="true" Class="admin-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>이름</th>
|
||||
<th>회사명</th>
|
||||
<th>연락처</th>
|
||||
<th>서비스</th>
|
||||
<th>세금 유형</th>
|
||||
<th>상태</th>
|
||||
<th>유입 경로</th>
|
||||
<th>등록일</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach (var c in clients)
|
||||
{
|
||||
<tr>
|
||||
<td><strong>@c.Name</strong></td>
|
||||
<td>@(c.CompanyName ?? "—")</td>
|
||||
<td>@(c.Phone ?? "—")</td>
|
||||
<td>
|
||||
@if (!string.IsNullOrEmpty(c.ServiceType))
|
||||
{
|
||||
<MudChip T="string" Size="Size.Small" Color="Color.Primary">@c.ServiceType</MudChip>
|
||||
}
|
||||
</td>
|
||||
<td>@(c.TaxType ?? "—")</td>
|
||||
<td>
|
||||
@if (c.Status == "active")
|
||||
{
|
||||
<MudChip T="string" Size="Size.Small" Color="Color.Success">활성</MudChip>
|
||||
}
|
||||
else
|
||||
{
|
||||
<MudChip T="string" Size="Size.Small" Color="Color.Default">비활성</MudChip>
|
||||
}
|
||||
</td>
|
||||
<td>@(c.Source ?? "—")</td>
|
||||
<td class="small">@c.CreatedAt.ToLocalTime().ToString("yy.MM.dd")</td>
|
||||
<td>
|
||||
<MudButtonGroup Size="Size.Small" Variant="Variant.Outlined">
|
||||
<MudButton @onclick="@(() => Navigation.NavigateTo($"./clients/{c.Id}/edit"))">
|
||||
수정
|
||||
</MudButton>
|
||||
<MudButton Color="Color.Error" @onclick="@(() => DeleteAsync(c))">
|
||||
삭제
|
||||
</MudButton>
|
||||
</MudButtonGroup>
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
</tbody>
|
||||
</MudSimpleTable>
|
||||
<MudStack Row="true" AlignItems="AlignItems.Center" Justify="Justify.SpaceBetween" Class="mb-3 px-4">
|
||||
<MudText Typo="Typo.subtitle1">@($"검색 결과 {clients.Count}명 / 전체 {totalCount}명")</MudText>
|
||||
<MudText Typo="Typo.body2">페이지 @currentPage / @totalPages</MudText>
|
||||
</MudStack>
|
||||
|
||||
<MudDataGrid T="Client"
|
||||
Items="@clients"
|
||||
Dense="true"
|
||||
Hover="true"
|
||||
Striped="true"
|
||||
Virtualize="true"
|
||||
RowsPerPage="30"
|
||||
Class="admin-grid mt-4">
|
||||
|
||||
<Columns>
|
||||
<PropertyColumn Property="x => x.Id" Title="ID" Sortable="true"
|
||||
Style="width: 80px;" />
|
||||
|
||||
<PropertyColumn Property="x => x.Name" Title="이름" Sortable="true"
|
||||
Filterable="true" />
|
||||
|
||||
<PropertyColumn Property="x => x.CompanyName" Title="회사명" Sortable="true"
|
||||
Filterable="true" />
|
||||
|
||||
<PropertyColumn Property="x => x.Phone" Title="연락처" Sortable="false" />
|
||||
|
||||
<TemplateColumn Title="서비스">
|
||||
<CellTemplate>
|
||||
@if (!string.IsNullOrEmpty(context.Item.ServiceType))
|
||||
{
|
||||
<MudChip T="string" Size="Size.Small" Color="Color.Primary" Variant="Variant.Filled">
|
||||
@context.Item.ServiceType
|
||||
</MudChip>
|
||||
}
|
||||
else
|
||||
{
|
||||
<span class="text-muted">—</span>
|
||||
}
|
||||
</CellTemplate>
|
||||
</TemplateColumn>
|
||||
|
||||
<PropertyColumn Property="x => x.TaxType" Title="세금 유형" Sortable="true" />
|
||||
|
||||
<TemplateColumn Title="상태" Sortable="true">
|
||||
<CellTemplate>
|
||||
@{
|
||||
var isActive = context.Item.Status == "active";
|
||||
<MudChip T="string"
|
||||
Size="Size.Small"
|
||||
Color="@(isActive ? Color.Success : Color.Default)"
|
||||
Variant="Variant.Filled">
|
||||
@(isActive ? "활성" : "비활성")
|
||||
</MudChip>
|
||||
}
|
||||
</CellTemplate>
|
||||
</TemplateColumn>
|
||||
|
||||
<PropertyColumn Property="x => x.Source" Title="유입 경로" Sortable="true" />
|
||||
|
||||
<PropertyColumn Property="x => x.CreatedAt" Title="등록일" Sortable="true"
|
||||
Format="yyyy-MM-dd" />
|
||||
|
||||
<TemplateColumn Title="작업" CellStyleFunc="@(_ => "text-align: center;")">
|
||||
<CellTemplate>
|
||||
<MudButtonGroup Size="Size.Small" Variant="Variant.Outlined">
|
||||
<MudButton Color="Color.Primary"
|
||||
Href="@($"./clients/{context.Item.Id}/edit")">
|
||||
@Icons.Material.Filled.Edit
|
||||
</MudButton>
|
||||
<MudButton Color="Color.Error"
|
||||
@onclick="@(() => DeleteAsync(context.Item))">
|
||||
@Icons.Material.Filled.Delete
|
||||
</MudButton>
|
||||
</MudButtonGroup>
|
||||
</CellTemplate>
|
||||
</TemplateColumn>
|
||||
</Columns>
|
||||
</MudDataGrid>
|
||||
|
||||
@* 페이징 *@
|
||||
@if (totalPages > 1)
|
||||
@@ -114,7 +138,6 @@
|
||||
SelectedChanged="@OnPageChanged" />
|
||||
</div>
|
||||
}
|
||||
<MudText Typo="Typo.caption" Class="pa-2 text-muted">총 @(totalCount)명</MudText>
|
||||
}
|
||||
</AdminDataPanel>
|
||||
|
||||
@@ -170,6 +193,11 @@
|
||||
clients = items.ToList();
|
||||
totalCount = total;
|
||||
totalPages = (int)Math.Ceiling((double)total / PageSize);
|
||||
|
||||
if (clients.Count > 0)
|
||||
{
|
||||
Snackbar.Add($"고객 {clients.Count}명을 불러왔습니다.", Severity.Info);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
@@ -231,6 +259,5 @@
|
||||
{
|
||||
Snackbar.Add($"오류: {ex.Message}", Severity.Error);
|
||||
}
|
||||
await LoadAsync();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
@using TaxBaik.Application.Services
|
||||
@using TaxBaik.Web.Services
|
||||
@inject IInquiryBrowserClient InquiryClient
|
||||
@inject ISnackbar Snackbar
|
||||
|
||||
<PageTitle>문의 관리</PageTitle>
|
||||
|
||||
@@ -71,10 +72,16 @@
|
||||
{
|
||||
var (items, _) = await InquiryClient.GetPagedAsync(1, 200);
|
||||
allInquiries = items.ToList();
|
||||
|
||||
if (allInquiries.Count > 0)
|
||||
{
|
||||
Snackbar.Add($"문의 {allInquiries.Count}건을 불러왔습니다.", Severity.Info);
|
||||
}
|
||||
}
|
||||
catch
|
||||
catch (Exception ex)
|
||||
{
|
||||
allInquiries = [];
|
||||
Snackbar.Add($"데이터 로드 실패: {ex.Message}", Severity.Error);
|
||||
}
|
||||
finally
|
||||
{
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
|
||||
<div class="d-flex align-center mb-4">
|
||||
<MudCheckBox T="bool"
|
||||
@bind-Checked="rememberMe"
|
||||
@bind-Value="rememberMe"
|
||||
Label="아이디 기억하기"
|
||||
Color="Color.Primary"
|
||||
Class="ml-n3" />
|
||||
@@ -99,28 +99,12 @@
|
||||
await JS.InvokeVoidAsync("localStorage.removeItem", "admin_username_remembered");
|
||||
}
|
||||
|
||||
// 로그인 폼 제출 (기존 HTML 폼으로 처리)
|
||||
var form = await JS.InvokeAsync<dynamic>("document.getElementById", "admin-login-form");
|
||||
if (form != null)
|
||||
{
|
||||
// 숨겨진 필드에 값 설정
|
||||
await JS.InvokeVoidAsync("eval", @"
|
||||
(function() {
|
||||
const form = document.getElementById('admin-login-form');
|
||||
const usernameInput = form.querySelector('input[name=""username""]') || form.querySelector('input[autocomplete=""username""]');
|
||||
const passwordInput = form.querySelector('input[name=""password""]') || form.querySelector('input[autocomplete=""current-password""]');
|
||||
// 로그인 폼 제출 (Razor Pages로 리다이렉트)
|
||||
// eval() 제거하고 NavigationManager 사용
|
||||
var loginUrl = $"./login?username={Uri.EscapeDataString(username)}&remember={rememberMe}";
|
||||
|
||||
if (usernameInput) usernameInput.value = '" + username + @"';
|
||||
if (passwordInput) passwordInput.value = '" + password + @"';
|
||||
|
||||
// Razor Pages에서 처리하도록 폼 제출
|
||||
const action = form.getAttribute('action') || './login';
|
||||
form.action = action;
|
||||
form.method = 'POST';
|
||||
form.submit();
|
||||
})();
|
||||
");
|
||||
}
|
||||
// window.location으로 직접 이동 (폼 제출 대체)
|
||||
await JS.InvokeVoidAsync("window.location.assign", loginUrl);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user