Skip to content

feat: Add workflow for PR preview deployment #3

feat: Add workflow for PR preview deployment

feat: Add workflow for PR preview deployment #3

Workflow file for this run

name: PR Preview
on:
pull_request:
branches:
- main
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Set ARCO_SITE_DOMAIN
run: echo "ARCO_SITE_DOMAIN=preview-${{ github.event.number }}-arco-design-mobile.surge.sh" >> $GITHUB_ENV
- name: Set up Node.js
uses: actions/setup-node@v2
with:
node-version: '16'
- name: Install dependencies
run: npm install
env:
ARCO_SITE_DOMAIN: ${{ env.ARCO_SITE_DOMAIN }}
- name: Build site:home
run: npm run site:home
env:
ARCO_SITE_DOMAIN: ${{ env.ARCO_SITE_DOMAIN }}
- name: Build site:pc
run: npm run site:pc
env:
ARCO_SITE_DOMAIN: ${{ env.ARCO_SITE_DOMAIN }}
- name: Build site:mobile
run: npm run site:mobile
env:
ARCO_SITE_DOMAIN: ${{ env.ARCO_SITE_DOMAIN }}
- name: Merge output directories
run: |
// 合并文件
cp -R output_resource/* output/page/
// 创建目标目录
mkdir -p merged_output/mobile/react/arco-design/pc
mkdir -p merged_output/mobile/react/arco-design/mobile
// 移动目录内容
mv output/page/home/* merged_output/mobile/react/
mv output/page/pc/* merged_output/mobile/react/arco-design/pc/
mv output/page/mobile/* merged_output/mobile/react/arco-design/mobile/
// 创建重定向 HTML 文件
echo '<html><head><meta http-equiv="refresh" content="0; url=/mobile/react/" /></head><body></body></html>' > merged_output/index.html
- name: Install Surge
run: npm install --global surge
- name: Deploy to Surge
env:
SURGE_TOKEN: ${{ secrets.SURGE_TOKEN }}
ARCO_SITE_DOMAIN: ${{ env.ARCO_SITE_DOMAIN }}
run: |
surge ./merged_output ${{ env.ARCO_SITE_DOMAIN }} --token $SURGE_TOKEN
- name: Comment PR with Preview Link
uses: actions/github-script@v6
env:
ARCO_SITE_DOMAIN: ${{ env.ARCO_SITE_DOMAIN }}
with:
script: |
const url = `https://${process.env.ARCO_SITE_DOMAIN}`
const message = `✨ **PR Preview Link**: ${url} \n **PR 预览链接**: ${url}`
github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: message.trim()
})