# 릴리스가 Publish 되면 MEDIABROWSER 사이트(releases.json)를 자동 재배포한다. # 사이트 소스는 비공개 client 저장소에 있어 CLIENT_TOKEN(읽기 PAT)으로 체크아웃한다. # 수동 재배포는 workflow_dispatch 로도 가능. name: site-deploy on: release: types: [published] workflow_dispatch: jobs: deploy: runs-on: windows defaults: { run: { shell: pwsh } } steps: - name: client 저장소 체크아웃 (site/ 사용) env: { CLIENT_TOKEN: "${{ secrets.CLIENT_TOKEN }}" } run: | $u = [Uri]$env:GITHUB_SERVER_URL $url = "$($u.Scheme)://actions:$($env:CLIENT_TOKEN)@$($u.Authority)/Video-Downloader/client.git" if (-not (Test-Path .git)) { git init -q . } if (git remote | Select-String -Quiet '^origin$') { git remote set-url origin $url } else { git remote add origin $url } git fetch -q --depth 1 origin refs/heads/main if ($LASTEXITCODE -ne 0) { throw "fetch 실패" } git checkout -q -f FETCH_HEAD if ($LASTEXITCODE -ne 0) { throw "checkout 실패" } git clean -qfdx - name: releases.json 생성 + Cloudflare Pages 배포 env: CLOUDFLARE_API_TOKEN: "${{ secrets.CLOUDFLARE_API_TOKEN }}" CLOUDFLARE_ACCOUNT_ID: "${{ secrets.CLOUDFLARE_ACCOUNT_ID }}" run: | node site/fetch-releases.mjs if ($LASTEXITCODE -ne 0) { throw "releases.json 생성 실패" } npx wrangler pages deploy site --project-name mediabrowser --branch main --commit-dirty=true if ($LASTEXITCODE -ne 0) { throw "Pages 배포 실패" }