Github Action部署Hugo站点到阿里云
问题
基于hugo框架撰写博客后,想要发布到云服务器中,朴素的做法是到云服务器对应目录拉取最新代码,但每次从登录服务器到更新代码的过程枯燥且重复,于是考虑通过持续部署的方式部署站点:使得每次提交/合并代码到指定分支时,自动将最新站点代码部署到服务器中。
工作流程如下:
工具
基于Github Action完成
配置流程
新建.github/workflows/deploy.yaml,在其中定义部署工作流:
name: Alicloud-page-deployment
on:
push:
branches:
- gh-pages # Set a branch to deploy
pull_request:
jobs:
deploy:
runs-on: ubuntu-22.04
env:
HUGO_CACHEDIR: /tmp/hugo_cache
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
steps:
- uses: actions/checkout@v3
with:
submodules: true # Fetch Hugo themes (true OR recursive)
fetch-depth: 0 # Fetch all history for .GitInfo and .Lastmod
- name: Setup Hugo
uses: peaceiris/actions-hugo@v2
with:
hugo-version: '0.100.2'
# 是否启用 hugo extend
extended: true
- name: Build
run: hugo --minify
- name: Deploy
uses: burnett01/rsync-deployments@5.2
with:
switches: -avzr --delete
path: ./public
remote_path: /opt/spacetimelab/frontend/blog_coolacademic_pro/coolacademic/ # 需要先手动在远程主机创建该目录,否则会执行失败
remote_host: ${{ secrets.DEPLOY_HOST }} # 远程主机 IP
remote_port: ${{ secrets.DEPLOY_PORT }} # ssh 端口233333
remote_user: ${{ secrets.DEPLOY_USER }} # ssh user
remote_key: ${{ secrets.DEPLOY_KEY }} # ssh 私钥
配置仓库密钥变量
注意,配置私钥时,需要在—–END OPENSSH PRIVATE KEY—–后新建一行,否则部署时会出现解析错误问题。
效果验证
提交代码后,发现Github Action自动运行并最终成功,表明上述配置无误。