|
15 | 15 | runs-on: ubuntu-latest |
16 | 16 | env: |
17 | 17 | TZ: Asia/Shanghai |
| 18 | + permissions: |
| 19 | + contents: write |
18 | 20 | concurrency: |
19 | 21 | group: ${{ github.workflow }}-${{ github.ref_name }} |
20 | 22 |
|
@@ -44,83 +46,21 @@ jobs: |
44 | 46 |
|
45 | 47 | - name: 安装项目依赖 |
46 | 48 | run: | |
| 49 | + # 这一步会根据新的 package.json 安装所有东西 |
| 50 | + # 包括:hexo核心、渲染器(pug/stylus)、gulp、bangumi插件 |
47 | 51 | yarn install --immutable |
48 | 52 |
|
49 | | - - name: 校验 Rainyun 部署参数 |
50 | | - env: |
51 | | - RAINYUN_HOST: ${{ secrets.RAINYUN_HOST }} |
52 | | - RAINYUN_PORT: ${{ secrets.RAINYUN_PORT }} |
53 | | - RAINYUN_USER: ${{ secrets.RAINYUN_USER }} |
54 | | - RAINYUN_TARGET_DIR: ${{ secrets.RAINYUN_TARGET_DIR }} |
55 | | - RAINYUN_SSH_KEY: ${{ secrets.RAINYUN_SSH_KEY }} |
56 | | - run: | |
57 | | - for key in RAINYUN_HOST RAINYUN_USER RAINYUN_TARGET_DIR RAINYUN_SSH_KEY; do |
58 | | - if [ -z "${!key}" ]; then |
59 | | - echo "::error::缺少 GitHub Secret: ${key}" |
60 | | - exit 1 |
61 | | - fi |
62 | | - done |
63 | | -
|
64 | | - if [ -z "${RAINYUN_PORT}" ]; then |
65 | | - echo "RAINYUN_PORT 未配置,使用默认端口 22" |
66 | | - fi |
67 | | -
|
68 | | - - name: 覆盖站点 URL |
69 | | - env: |
70 | | - SITE_URL: ${{ secrets.SITE_URL }} |
71 | | - SITE_ROOT: ${{ secrets.SITE_ROOT }} |
72 | | - run: | |
73 | | - if [ -z "${SITE_URL}" ] && [ -z "${SITE_ROOT}" ]; then |
74 | | - exit 0 |
75 | | - fi |
76 | | -
|
77 | | - node <<'EOF' |
78 | | - const fs = require('fs'); |
79 | | - const path = '_config.yml'; |
80 | | - let text = fs.readFileSync(path, 'utf8'); |
81 | | -
|
82 | | - if (process.env.SITE_URL) { |
83 | | - text = text.replace(/^url:\s*.*/m, `url: ${process.env.SITE_URL}`); |
84 | | - } |
85 | | -
|
86 | | - if (process.env.SITE_ROOT) { |
87 | | - text = text.replace(/^root:\s*.*/m, `root: ${process.env.SITE_ROOT}`); |
88 | | - } |
89 | | -
|
90 | | - fs.writeFileSync(path, text); |
91 | | - EOF |
92 | | -
|
93 | 53 | - name: 生成静态文件 |
94 | 54 | run: | |
95 | 55 | npx hexo clean |
96 | 56 | npx hexo bangumi -u |
97 | 57 | npx hexo generate |
| 58 | + # 如果以后需要 gulp,取消注释即可,不需要再安装 gulp-cli |
| 59 | + # npx gulp |
98 | 60 |
|
99 | | - - name: 加载 SSH 私钥 |
100 | | - uses: webfactory/ssh-agent@v0.9.1 |
| 61 | + - name: Deploy |
| 62 | + uses: peaceiris/actions-gh-pages@v4 |
101 | 63 | with: |
102 | | - ssh-private-key: ${{ secrets.RAINYUN_SSH_KEY }} |
103 | | - |
104 | | - - name: 写入 known_hosts |
105 | | - env: |
106 | | - RAINYUN_HOST: ${{ secrets.RAINYUN_HOST }} |
107 | | - RAINYUN_PORT: ${{ secrets.RAINYUN_PORT }} |
108 | | - run: | |
109 | | - mkdir -p ~/.ssh |
110 | | - chmod 700 ~/.ssh |
111 | | - ssh-keyscan -p "${RAINYUN_PORT:-22}" -H "${RAINYUN_HOST}" >> ~/.ssh/known_hosts |
112 | | -
|
113 | | - - name: 部署到 Rainyun |
114 | | - env: |
115 | | - RAINYUN_HOST: ${{ secrets.RAINYUN_HOST }} |
116 | | - RAINYUN_PORT: ${{ secrets.RAINYUN_PORT }} |
117 | | - RAINYUN_USER: ${{ secrets.RAINYUN_USER }} |
118 | | - RAINYUN_TARGET_DIR: ${{ secrets.RAINYUN_TARGET_DIR }} |
119 | | - RAINYUN_POST_DEPLOY: ${{ secrets.RAINYUN_POST_DEPLOY }} |
120 | | - run: | |
121 | | - ssh -p "${RAINYUN_PORT:-22}" "${RAINYUN_USER}@${RAINYUN_HOST}" "mkdir -p '${RAINYUN_TARGET_DIR}'" |
122 | | - rsync -az --delete -e "ssh -p ${RAINYUN_PORT:-22}" ./public/ "${RAINYUN_USER}@${RAINYUN_HOST}:${RAINYUN_TARGET_DIR}/" |
123 | | -
|
124 | | - if [ -n "${RAINYUN_POST_DEPLOY}" ]; then |
125 | | - ssh -p "${RAINYUN_PORT:-22}" "${RAINYUN_USER}@${RAINYUN_HOST}" "${RAINYUN_POST_DEPLOY}" |
126 | | - fi |
| 64 | + github_token: ${{ secrets.GITHUB_TOKEN }} |
| 65 | + publish_dir: ./public |
| 66 | + publish_branch: gh-pages |
0 commit comments