build-demo.yml 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. # 当分支 main 有 push 事件,并且此次 push 包含了 demo 目录下的文件时触发,使用 GitHub Actions 自动构建 Demo 并部署到服务器(使用 ubuntu-latest),具体步骤如下:
  2. # 1. 安装 nodejs , python3 , pip
  3. # 2. pip 依次安装 aliyun-python-sdk-cdn , aliyun-python-sdk-core , logging
  4. # 3. 安装 pnpm
  5. # 4. cd demo 安装依赖 pnpm install
  6. # 5. 打包 npm run build
  7. # 6. 使用 appleboy/scp-action@master 将 demo/dist 目录下所有文件上传到服务器上 demo 目录下
  8. # 7. 执行 demo/Refresh-auto.py 刷新 CDN 缓存
  9. name: BUILD DEMO
  10. on:
  11. push:
  12. branches:
  13. - main
  14. paths:
  15. - 'demo/**'
  16. jobs:
  17. build-and-deploy:
  18. runs-on: ubuntu-latest
  19. steps:
  20. - name: Checkout
  21. uses: actions/checkout@v2
  22. - name: Setup Node.js environment
  23. uses: actions/setup-node@v1
  24. with:
  25. node-version: 18.x
  26. - name: Setup Python environment
  27. uses: actions/setup-python@v2
  28. with:
  29. python-version: 3.x
  30. - name: Install pip
  31. run: python3 -m pip install --upgrade pip
  32. - name: Install aliyun-python-sdk-cdn
  33. run: python3 -m pip install aliyun-python-sdk-cdn
  34. - name: Install aliyun-python-sdk-core
  35. run: python3 -m pip install aliyun-python-sdk-core
  36. - name: Install logging
  37. run: python3 -m pip install logging
  38. - name: Install pnpm
  39. run: npm install -g pnpm
  40. - name: Install dependencies and build
  41. run: |
  42. cd demo
  43. pnpm install
  44. npm run build
  45. - name: Upload
  46. uses: appleboy/scp-action@master
  47. with:
  48. host: ${{ secrets.ALIYUN_HOST }}
  49. username: ${{ secrets.ALIYUN_USERNAME }}
  50. port: ${{ secrets.ALIYUN_PORT }}
  51. password: ${{ secrets.ALIYUN_PRIVATE_KEY }}
  52. source: demo/dist/*
  53. target: /usr/share/nginx/demo_stdf/
  54. strip_components: 2
  55. - name: Refresh CDN
  56. env:
  57. ALIYUN_CDN_AK: ${{ secrets.ALIYUN_CDN_AK }}
  58. ALIYUN_CDN_SK: ${{ secrets.ALIYUN_CDN_SK }}
  59. run: python3 demo/Refresh-auto.py -r demo/cdn-list.txt -t clear -o Directory