Repository navigation
66 lines (57 loc) · 2.17 KB
/
Copy pathtest.yml
File metadata and controls
66 lines (57 loc) · 2.17 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
name: CI Tests
# push 시 자동으로 테스트 파이프라인이 동작한다. (배포 단계 없음 — 테스트 전용)
on:
push:
workflow_dispatch:
# 동일 브랜치에서 연속 push 시 이전 실행은 취소
concurrency:
group: ci-${{ github.ref }}
cancel-in-progress: true
# 최소 권한 — 이 워크플로는 저장소를 읽기만 한다
permissions:
contents: read
jobs:
test:
name: 통합 테스트
runs-on: ubuntu-latest
timeout-minutes: 60
steps:
- name: 소스 체크아웃
uses: actions/checkout@v7
with:
persist-credentials: false
- name: uv 설치
# setup-uv 는 v8+ 부터 공급망 보안 정책상 짧은 메이저 태그(@v9)를 발행하지
# 않는다. 반드시 정확한 버전 태그(@v9.0.0)로 핀할 것.
uses: astral-sh/setup-uv@v9.0.0
- name: 필수 도구 설치 (jq / curl / openssl / php-cli)
run: |
sudo apt-get update
sudo apt-get install -y jq curl openssl php-cli
- name: CI 테스트 실행 (실패/성공 모두 Slack·Telegram 통보)
run: bash script/ci/run-ci.sh
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
TELEGRAM_BOT_TOKEN: ${{ secrets.TELEGRAM_BOT_TOKEN }}
TELEGRAM_CHAT_ID: ${{ secrets.TELEGRAM_CHAT_ID }}
- name: 업로드 전 로그 비밀값 마스킹
id: mask
if: always()
run: |
. script/lib/mask_secrets.sh
if ! mask_secrets_files log/ci log/test_run; then
echo "::warning::로그 마스킹 실패 — 비밀값 유출 방지를 위해 로그를 삭제하고 단계를 실패 처리한다"
rm -rf log/ci log/test_run
exit 1
fi
- name: 테스트 로그 아티팩트 업로드
# 마스킹이 성공한 경우에만 업로드 (실패·건너뜀이면 비밀값이 남았을 수 있다)
if: always() && steps.mask.outcome == 'success'
uses: actions/upload-artifact@v7
with:
name: ci-logs
path: |
log/ci/
log/test_run/
if-no-files-found: ignore
retention-days: 14