Git + GitHub Action + SSH 将静态网站自动部署到云服务器上

引言

这几天用 Hexo 框架的 Keep 主题搭建的一个静态博客。使用 hexo g 生成静态页面后,编辑配置文件中的部署相关参数,再使用 hexo d 命令即可实现网站的部署。

为实现更进一步的自动化,推荐使用 GitHub Action 自动化工作流程。即实现 Git 提交代码后,GitHub Action 能自动渲染 Markdown 文件,并将生成的静态页面自动部署到 GitHub Pages,腾讯云,阿里云等云服务器。

本教程不仅适用于 Hexo 生成的静态页面,对于其它任何静态网站页面也都适用。

准备

正式开始之前,你需要掌握 GitHub Action 的基础语法:

  • name: 工作流的名称。
  • on: 指定次工作流的触发器。push 表示只要有人将更改推送到仓库就会触发工作流运行。(点击这里了解如何指定特定分支,路径或标签)
  • jobs: 将工作流运行的所有作业组合到一起。
  • build-and-deploy: 定义的作业的名称。
  • runs-on: 将作业配置为在最新版本的 Ubuntu Linux 上运行。这意味着作业将在 GitHub 托管的新虚拟机上执行。有关使用其他运行器的语法示例,请参阅 GitHub 操作的工作流语法
  • steps: 将作业中运行的所有步骤组合在一起。嵌套在此部分下的每个项都是一个单独的操作或 shell 脚本。
  • uses: 指定需要运行的 action
  • env: 指定运行 action 时需要用到的环境变量的值。

部署

GitHub Pages

name: Deploying Hexo project to GitHub pages

on: [push]

jobs:
  build-and-deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@master

      - name: Build and Deploy
        uses: theme-keep/hexo-deploy-github-pages-action@master
        env:
          PERSONAL_TOKEN: ${{ secrets.HEXO_DEPLOY_GH }}
          PUBLISH_REPOSITORY: XavierJiezou/xavierjiezou.github.io
          BRANCH: gh-pages
          PUBLISH_DIR: ./public
  1. PERSONAL_TOKEN: GitHub 个人访问令牌。点击这里新建,可以命名为 HEXO_DEPLOY_GH,开启 repoworkflow 权限即可,有效日期设置为永久。

image

  1. 复制上一步获取的 token,打开你的静态网页托管的 GitHub 仓库,在 Settings-Secrets 中新建一个密钥,名称填 HEXO_DEPLOY_GH,值 Value 直接 Ctrl+V粘贴 token 的值。

image

  1. PUBLISH_REPOSITORY: GitHub 的公共仓库,用于展示 GitHub Pages。这里填 用户名/用户名.github.io,用户名是你 GitHub 的用户名。
  2. BRANCH: 分支,填 gh-pages 就行。
  3. PUBLISH_DIR: 网页的静态文件存放目录。Hexo 默认是 ./public

腾讯、阿里等云服务器

name: deploying Hexo project to GitHub pages
on:
  push:
    branches:
      - main # main 分支有 push 行为时就触发这个 action

jobs:
  build-and-deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@master

      - name: Build and Deploy
        uses: theme-keep/hexo-deploy-github-pages-action@master
        env:
          PERSONAL_TOKEN: ${{ secrets.HEXO_KEEP_DEPLOY }}
          PUBLISH_REPOSITORY: XavierJiezou/xavierjiezou.github.io
          BRANCH: gh-pages
          PUBLISH_DIR: ./public

      - name: Deploy to Server
        uses: easingthemes/ssh-deploy@main
        env:
            SSH_PRIVATE_KEY: ${{ secrets.SERVER_SSH_KEY }}
            ARGS: -rltgoDzvO --delete
            SOURCE: ./public/
            REMOTE_HOST: ghgxj.xyz
            REMOTE_USER: root
            TARGET: /www/wwwroot/ghgxj.xyz/
            EXCLUDE: 
  1. 部署到腾讯或阿里的 CentOS 服务器上需要用到 easingthemes/ssh-deploy@main
  2. SSH_PRIVATE_KEY: 是在服务器上生成的 SSH 私钥,可以使用命令 ssh-keygen -m PEM -t rsa -b 4096 生成,并配置到仓库的 Secrets 中。
  3. ARGS: 默认即可。
  4. SOURCE: 需要上传到服务器上的文件的目录。
  5. REMOTE_HOST: 服务器公网 IP 或域名。
  6. REMOTE_USER: 服务器 SSH 用户名。
  7. TARGET: 文件上传到服务器上保存的目录。
  8. EXCLUDE: 可指定部分文件不上传。

参考

https://github.com/easingthemes/ssh-deploy

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Xavier Jiezou

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值