59 lines
2.7 KiB
YAML
59 lines
2.7 KiB
YAML
name: deploy-site
|
|
|
|
on:
|
|
push:
|
|
branches: [main]
|
|
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 run build --prefix site
|
|
node -e "const fs=require('node:fs'); const v=require('./release/product-version.json').version; fs.writeFileSync('site/dist/release-identity.json', JSON.stringify({commit:process.env.GITHUB_SHA,version:v},null,2)+'\n')"
|
|
|
|
- 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 없음" >&2
|
|
exit 1
|
|
fi
|
|
|
|
- name: 공개 배포 식별자 검증
|
|
run: |
|
|
curl --fail --silent --show-error --retry 6 --retry-delay 5 \
|
|
https://d3ro.chanpaca.net/release-identity.json \
|
|
--output release-identity.live.json
|
|
node -e "const fs=require('node:fs'); const live=JSON.parse(fs.readFileSync('release-identity.live.json','utf8')); if(live.commit!==process.env.GITHUB_SHA) throw new Error('public commit mismatch'); const expected=require('./release/product-version.json').version; if(live.version!==expected) throw new Error('public version mismatch')"
|
|
curl --fail --silent --show-error https://d3ro.chanpaca.net/ --output /dev/null
|
|
curl --fail --silent --show-error https://d3ro.chanpaca.net/privacy/ --output /dev/null
|
|
curl --fail --silent --show-error https://d3ro.chanpaca.net/terms/ --output /dev/null
|
|
curl --fail --silent --show-error https://d3ro.chanpaca.net/delete-account/ --output /dev/null
|