ci: run CI only on Forgejo and delete the never-run GitHub workflows (WS-D)
The repository has Forgejo and GitLab remotes but no GitHub remote, so nothing under .github/workflows ever ran - including the daily Payple renewal job, which means Payple subscriptions were not being renewed. - Port payple-renew (daily cron + manual dispatch) to Forgejo. Requires the Forgejo secrets SUPABASE_URL and CRON_SECRET. - Port the CI checks (quality incl. version:check and contract:check, build, mobile quality, edge functions, API tests) to .forgejo/workflows/ci.yml. macOS and Android emulator jobs are dropped: no macOS runner here, and the signed Android release stays on GitLab mobile-production-release. - Keep one site deploy workflow (Linux, Cloudflare Pages); remove the manual Windows duplicate. The mobile release boundary self-test runs there. - Release verifiers read the Forgejo/GitLab workflows, fail if .github workflows come back, and check the rewritten site offers no mobile package. Policy: docs/REFACTOR_POLICY.md Wave 3, W3-7 and W3-8.
This commit is contained in:
parent
cd9d199dbf
commit
dc43884e3e
13 changed files with 269 additions and 1370 deletions
47
.forgejo/workflows/payple-renew.yml
Normal file
47
.forgejo/workflows/payple-renew.yml
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
name: payple-renew
|
||||
|
||||
# Payple 정기결제 자동 갱신 트리거. 매일 한 번 Supabase Edge Function `payple-renew`를 호출한다.
|
||||
# 예전 .github/workflows/payple-renew.yml은 GitHub 원격이 없어 한 번도 실행되지 않았다.
|
||||
#
|
||||
# 주의:
|
||||
# - Forgejo schedule은 기본 브랜치(main)에 이 파일이 있을 때만 등록된다.
|
||||
# - cron 시각은 Forgejo 서버 기준으로 해석된다. 서버가 UTC면 01:00 UTC = 10:00 KST.
|
||||
#
|
||||
# 필요한 시크릿:
|
||||
# SUPABASE_URL — https://<project-ref>.supabase.co (끝 슬래시 없이)
|
||||
# CRON_SECRET — Supabase Function 시크릿 CRON_SECRET 과 같은 값
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: "0 1 * * *"
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
renew:
|
||||
runs-on: linux-builder
|
||||
steps:
|
||||
- name: payple-renew Edge Function 호출
|
||||
env:
|
||||
SUPABASE_URL: "${{ secrets.SUPABASE_URL }}"
|
||||
CRON_SECRET: "${{ secrets.CRON_SECRET }}"
|
||||
run: |
|
||||
set -eu
|
||||
if [ -z "${SUPABASE_URL:-}" ] || [ -z "${CRON_SECRET:-}" ]; then
|
||||
echo "SUPABASE_URL / CRON_SECRET 시크릿이 없습니다." >&2
|
||||
exit 1
|
||||
fi
|
||||
response=$(curl --silent --show-error --max-time 300 -w "\n%{http_code}" -X POST \
|
||||
"${SUPABASE_URL%/}/functions/v1/payple-renew" \
|
||||
-H "Authorization: Bearer ${CRON_SECRET}" \
|
||||
-H "Content-Type: application/json")
|
||||
|
||||
http_code=$(printf '%s\n' "$response" | tail -n 1)
|
||||
body=$(printf '%s\n' "$response" | sed '$d')
|
||||
|
||||
echo "HTTP $http_code"
|
||||
printf '%s\n' "$body" | jq . 2>/dev/null || printf '%s\n' "$body"
|
||||
|
||||
if [ "$http_code" -ge 400 ]; then
|
||||
echo "갱신 실패: HTTP $http_code" >&2
|
||||
exit 1
|
||||
fi
|
||||
Loading…
Add table
Add a link
Reference in a new issue