基于GitHub Actions、Hugo的静态网站CI/CD实践

近期做了部署了一个基于Hugo的静态网站,每次更新完文章要手动生成网站,推送至服务器很麻烦,因此决定借助GitHub Actions进行CI/CD。
GitHub Actions官网简介,简而言之这是一款Github自带的CI/CD,帮助用户进行持续集成开发与部署。
GitHub Marketplace Actions里面包含了各种用于GitHub Action的模块,通过使用模块方便编辑yaml文件,省去很多造轮子的时间。

现有环境

  • 服务器
    • 静态网站文件夹/www/hugo/public
    • 未转换前的Markdown文章文件夹/www/hugo/content/post
    • 已安装hugo,在/www/hugo下执行hugo命令即可将Markdown文件转换为静态网页
  • GitHub仓库
    • content文件夹包含由本地推送到远程仓库的Markdown文件

流程分析

当新文章从从本地push到GitHub仓库或者新的pull request被合并时,将仓库的content文件夹镜像同步到服务器的/www/hugo/content文件夹并执行hugo命令生成静态网页。

yaml文件及分析

name: CI

#push时执行,由于pull request被合并时默认执行push,因此只限定push为触发行为即可
on:
  push:
    branches: [ master ]

#工作流
jobs:
  # 命名为build的单个job
  build:
    # 选定运行环境为Ubuntu最新版本
    runs-on: ubuntu-latest
    #步骤
    steps:
    #uses用来调用GitHub Marketplace中的模块,此模块用于选择分支
    - uses: actions/checkout@master
    
    #此模块用于使用私钥访问远程主机
    #key和known_host的值均在仓库的setting-sercerts中配置
    #key为私钥,known_host使用ssh-keyscan host命令获取
    - name: Install SSH Key
      uses: shimataro/ssh-key-action@v2
      with:
        key: ${{ secrets.SSH_KEY }}
        known_hosts: ${{ secrets.KNOWN_HOSTS }}
      
    #执行同步任务,host在setting-sercerts中配置
    - name: rsync
      run: rsync -a --delete content/ ec2-user@${{secrets.HOST}:/www/hugo/content/
   
    - name: make 
      run: ssh ec2-user@${{sercerts.HOST}} 'cd /www/hugo && sudo ./hugo'
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值