ci: add .forgejo/workflows/deploy-site.yml for Cloudflare Pages auto-deployment to d3ro.chanpaca.net
Some checks failed
deploy-site-windows / deploy-win (push) Successful in 31s
deploy-site / deploy (push) Failing after 35s

This commit is contained in:
Yun Chan 2026-08-20 17:16:12 +09:00
parent 9dd52f0626
commit e87567fa90
3 changed files with 106 additions and 0 deletions

View file

@ -0,0 +1,37 @@
name: deploy-site-windows
on:
workflow_dispatch:
push:
branches: [main]
jobs:
deploy-win:
runs-on: windows
defaults: { run: { shell: pwsh } }
steps:
- name: checkout
env: { CI_TOKEN: "${{ github.token }}" }
run: |
$u = [Uri]$env:GITHUB_SERVER_URL
$url = "$($u.Scheme)://actions:$($env:CI_TOKEN)@$($u.Authority)/$($env:GITHUB_REPOSITORY).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 $env:GITHUB_REF
git checkout -q -f FETCH_HEAD
git clean -qfdx
- name: 사이트 빌드 & 바이너리 동기화
run: |
npm install --prefix site
npm run build --prefix site
node scripts/ci/sync-and-publish-forgejo-release.mjs
- name: Cloudflare Pages 배포
env:
CLOUDFLARE_API_TOKEN: "${{ secrets.CF_API_TOKEN || secrets.CLOUDFLARE_API_TOKEN }}"
CLOUDFLARE_ACCOUNT_ID: "${{ secrets.CF_ACCOUNT_ID || secrets.CLOUDFLARE_ACCOUNT_ID }}"
run: |
if ($env:CLOUDFLARE_API_TOKEN) {
npx --yes wrangler@latest pages deploy site/dist --project-name d3ro --branch main --commit-dirty=true
}

View file

@ -0,0 +1,50 @@
name: deploy-site
on:
push:
branches: [main]
tags: ["v*"]
release:
types: [published]
workflow_dispatch:
jobs:
deploy:
runs-on: linux-builder
steps:
- name: checkout
env: { CI_TOKEN: "${{ github.token }}" }
run: |
proto="${GITHUB_SERVER_URL%%://*}"; host="${GITHUB_SERVER_URL#*://}"
url="$proto://actions:${CI_TOKEN}@${host%/}/${GITHUB_REPOSITORY}.git"
[ -d .git ] || git init -q .
git remote remove origin 2>/dev/null || true
git remote add origin "$url"
git fetch -q --depth 1 origin "$GITHUB_REF"
git checkout -q -f FETCH_HEAD
git clean -qfdx
- name: 의존성 설치 및 사이트 빌드
run: |
npm ci --prefix site || npm install --prefix site
npm run build --prefix site
node scripts/ci/sync-and-publish-forgejo-release.mjs || true
- name: Cloudflare Pages 배포 (d3ro.chanpaca.net)
env:
CLOUDFLARE_API_TOKEN: "${{ secrets.CF_API_TOKEN || secrets.CLOUDFLARE_API_TOKEN }}"
CLOUDFLARE_ACCOUNT_ID: "${{ secrets.CF_ACCOUNT_ID || secrets.CLOUDFLARE_ACCOUNT_ID }}"
run: |
if [ -n "$CLOUDFLARE_API_TOKEN" ]; then
echo "Cloudflare Pages 배포 시작 (d3ro)..."
npx --yes wrangler@latest pages deploy site/dist \
--project-name d3ro \
--branch main \
--commit-dirty=true || \
npx --yes wrangler@latest pages deploy site/dist \
--project-name d3ro-voice \
--branch main \
--commit-dirty=true
else
echo "CLOUDFLARE_API_TOKEN 없음"
fi

View file

@ -0,0 +1,19 @@
// scripts/inspect-live-d3ro-domain.js
const { chromium } = require('@playwright/test');
async function inspectLive() {
const browser = await chromium.launch({ channel: 'msedge', headless: true });
const page = await browser.newPage();
console.log('Navigating to https://d3ro.chanpaca.net...');
await page.goto('https://d3ro.chanpaca.net', { waitUntil: 'networkidle', timeout: 30000 });
const title = await page.title();
console.log('Live Page Title:', title);
const links = await page.locator('a').evaluateAll(els => els.map(e => ({ text: e.innerText.replace(/\s+/g, ' ').trim(), href: e.href })));
console.log('ALL LINKS ON d3ro.chanpaca.net:', JSON.stringify(links.filter(l => l.text || l.href), null, 2));
await browser.close();
}
inspectLive().catch(console.error);