利用GitHub Action编译Candy
前言
突然最近想玩玩静态网页,刚好(@innei)有一个静态网页程序,顺便clone下来玩下了
我搭建的candy:candy.iucky.cn,感觉很不错啊!
GitHub项目:https://github.com/Innei/candy
部署项目
innei给出的Deploy方法
innei给出的Host on Github方法是:
在 Github 上新建一个仓库, 然后把out
目录下的文件上传, 开启GitHub Pages
托管即可.
Deploy gh-pages
我感觉这样子编译,编译之后下载,下载再部署,好麻烦,干脆用GitHub action
实现(而且我的服务器CPU不够🧱)
name: Candy Deploy
on:
push:
schedule:
# 定时任务
- cron: '0 * * * *'
jobs:
build:
name: Build candy
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@v2
- name: Setup Node.js environment
uses: actions/[email protected]
- name: Candy Install
run: yarn
- name: Build Out Candy
run: yarn build
- name: Deploy
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./out
编译导出Artifact
干脆直接把生成的网页打包出来
name: Build
on:
push:
schedule:
# 定时任务
- cron: '0 * * * *'
jobs:
build:
name: Build candy
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@v2
- name: Setup Node.js environment
uses: actions/[email protected]
- name: Candy Install
run: yarn
- name: Build Out Candy
run: yarn build
- name: Upload Candy Build Artifact
uses: actions/[email protected]
with:
name: Out
path: ./out
这样子的话就会生成Artifact
,但是国内下载速度。。我没找到什么加速的方法
只能用NDM
下载,但是会依然出现time out情况
Git Push
name: Build
on:
push:
schedule:
# 定时任务
- cron: '0 * * * *'
jobs:
build:
name: Build candy
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@v2
- name: Setup Node.js environment
uses: actions/[email protected]
- name: Candy Install
run: yarn
- name: Build Out Candy
run: yarn build
- name: Upload Candy Build Artifact
uses: actions/[email protected]
with:
name: Out
path: ./out
- name: tar file
run: |
tar cf Out.tar.gz out
sudo rm -rf .next
sudo rm -rf out
sudo rm -rf node_modules
- name: Git Commit and Push
uses: github-actions-x/[email protected]
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
commit-message: Bot Build
email: [email protected]
name: wibus-wee
这个样子的话,就又生成Artifact
,又将生成的html打包push上项目,再用一些工具加速下载就好了
当然我们也可以在服务器上运行这么一个sh
echo "wget Out"
wget https://raw.githubusercontent.com/wibus-wee/candy_ACTION/main/Out.tar.gz
tar -xf Out.tar.gz
rm -rf Out.tar.gz
rm -rf /www/wwwroot/candy.iucky.cn/*
cp -rf out/* /www/wwwroot/candy.iucky.cn/
rm -rf out
candy.iucky.cn
是那个放置的目录,这些运行就直接同步了
但是缺点很明显,当我本地git push,必须先git pull,那个压缩文件挺大块头6.8 MB
(我指国内下载的话)
所以还在想新的方法,目前只能网页端上传文档
${{ secrets.GITHUB_TOKEN }}
Git push的yml有个变量,你需要去自己设置的
前往 https://github.com/settings/tokens
点击Generate new token
,根据下面的图片来操作
之后点击Generate token
即可
合起来的yml
name: Build
on:
push:
schedule:
# 定时任务
- cron: '0 1 * * 6'
jobs:
build:
name: Build candy
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@v2
- name: Setup Node.js environment
uses: actions/[email protected]
- name: Candy Install
run: yarn
- name: Build Out Candy
run: yarn build
- name: Upload Candy Build Artifact
uses: actions/[email protected]
with:
name: Out
path: ./out
- name: Deploy
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./out
- name: Git Commit and Push
uses: github-actions-x/[email protected]
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
commit-message: Bot Build
email: [email protected]
name: wibus-wee
🈶️三个动作:Git Push,deploy,upload artifact