[详细] Github Actions自动部署hexo博客到阿里云OSS

1. 为什么我要持续部署

通过Hexo搭建的个人博客,虽然很强大、很方便,输入hexo clean&&hexo g -d就能快速生成静态页面并部署访问。但Hexo生成的是静态页面,无后端,这些工作都是在本地的电脑上操作的,如果更换电脑了,还需要在github上冲下拉取源代码,重新搭建环境再部署。若电脑不在身边想要随时编辑文章,就有点困难了。另外,每次在本机部署完,还要将源代码push到仓库。

这样操作显然是有些繁琐的。好在Github Actions提供了解决方案,可以为仓库添加自动化的操作,将Hexo博客源代码(不是生成的public文件夹,是整个项目代码)放在Github上,编写Github Actions的工作流程后,每次只需将本地pushGithubGithub Actions会帮我们自动完成所有的部署工作。

我的博客是部署到阿里云OSS,支持CDN加速,全站开启HTTPS访问,关键是费用超级低!

2. 总体部署思路

  • Hexo博客项目上传到Github
  • 在阿里云OSS中创建Bucket,并配置为静态页面托管
  • 拿到BucketAccessKeyIdAccessKeySecret,配置进Github仓库里
  • 编写Github Actions工作流程
  • 本地触发push命令时,Github Actions开始自动部署

3. 实现部署过程

3.1 上传Hexo项目

这个就不用说了吧,在Github上创建个私有仓库,将本地的hexo博客项目源代码上传上去。

另外说一点,我删除了.gitignore文件,将项目的全部文件都上传到仓库了(包括node_modules等等),这样每次Github Actions每次在部署时,不用重新下在所需的依赖包了,可能速度会快一点吧(我也不知道会不会快一点)。但是第一次Push时,所需的时间很长,自行考虑要不要这样做。

3.2 创建Bucket

在阿里云OSS中创建Bucket,注意创建的时候,读写权限一定要改为公共读

创建完成后,在基础设置中,找到静态页面,作如下配置:

随后可以配置该Bucket访问的域名,配置CDN加速,并上传HTTPS 证书。点击传输管理

3.3 获取AccessKey

将鼠标放到阿里云页面右上角的头像,点击AccessKey管理,获取AccessKeyIdAccessKeySecret,推荐使用子用户AccessKey

因为AccessKey权限很高,直接将其暴露在代码中非常危险,所以将其配置到Github仓库的Secrets中,相当于作为常量使用。

在存储Hexo源代码的仓库中点击Settings,找到Secrets,添加两项。名称为KEYSECRET,值分别为AccessKeyIdAccessKeySecret

3.4 编写工作流程

在存储Hexo源代码的仓库中点击Actions,点击set up a workflow yourself

将下面所有代码复制到代码区,并根据注释稍作修改

# workflow name
name: Hexo Blog CI

# 在main分支上有push命令时触发该流程
on:
    push:
        branches:
            - main

jobs:
    build:
        runs-on: ubuntu-latest

        steps:
            - name: Checkout Repository master branch
              uses: actions/checkout@master

            - name: Setup Node.js 10.x
              uses: actions/setup-node@master
              with:
                  node-version: '10.x'

            - name: Setup Hexo Dependencies
              run: |
                  # npm install  # 若没有上传依赖包,则把这行的注释解除
                  npm install -g hexo-cli
                  hexo clean
                  hexo generate
                  gulp  # 我安装了压缩静态文件的插件,若没有安装,将这行删除
            - name: setup aliyun oss
              uses: manyuanrong/setup-ossutil@master
              with:
                  endpoint: oss-cn-hangzhou.aliyuncs.com
                  access-key-id: ${{ secrets.KEY }} # 刚刚配置过的AccessKeyId
                  access-key-secret: ${{ secrets.SECRET }} # 刚刚配置过的AccessKeySecret
            - name: cp files to aliyun
              run: ossutil cp -rf public oss://xxxxx/ # 将xxxxx改为创建的Bucket名称,-rf表示覆盖

完成后点击Start commit按钮。

3.5 完成!

随后Github Actions便开始第一次工作,出现绿色勾勾则表示部署成功!快打开域名查看吧~

因为刚刚在远程仓库创建了main.yml,可以先在本地执行git pull,同步远程最新的文件,再进行push

4. 如何远程使用

完成部署后,我们就可以在脱离本地项目,在远程仓库发布、修改文章啦,即使电脑不在身边也不怕!

可以借助[HexoPlusPlus]实现一个类似后台的页面,在这上面发布新文章、修改文章等操作。

☑当然了,也可以直接在Github仓库中,管理文章。

5. 另外工作

如果电脑在身边,我还是习惯在本地管理博客,再push,虽然不用自己输入hexo clean&&hexo g -d,但是要自己输入git add .git commit -m 'xxx'git push,还是太麻烦了。

因为实在太懒,写了一个.BAT脚本文件,放在项目中。

@echo off
git pull
git add .
git commit -m 'WIN10'
git push

这样我在本地修改完后,只需双击运行该脚本即可,自动push到仓库,仓库又自动完成部署!


📘📘欢迎在我的博客上访问:
https://lzxjack.top/

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
可以的,Github Actions可以用来自动化前端项目的部署到云服务器。以下是一个简单的例子: 1. 首先,在你的Github仓库中创建一个`.github/workflows`文件夹,并在该文件夹下创建一个`deploy.yml`文件。 2. 在`deploy.yml`文件中设置触发部署的事件,例如push到master分支。然后设置一个`job`,该`job`会在触发事件后运行。 3. 在该`job`中,使用`actions/checkout` action拉取代码,并使用`actions/setup-node` action安装依赖。 4. 接下来,使用你喜欢的打包工具打包你的前端代码,例如webpack或者parcel。打包后的文件会被存储在一个`dist`文件夹中。 5. 然后,使用`appleboy/ssh-action` action将打包后的文件上传到云服务器。该action会使用SSH登录到你的服务器,并将文件复制到服务器上的指定目录。 下面是一个示例的`deploy.yml`文件: ```yml name: Deploy to Cloud Server on: push: branches: - master jobs: deploy: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v2 - name: Setup Node uses: actions/setup-node@v1 with: node-version: '12.x' - name: Install dependencies run: npm install - name: Build run: npm run build - name: Deploy to Cloud Server uses: appleboy/ssh-action@master with: host: ${{ secrets.HOST }} username: ${{ secrets.USERNAME }} password: ${{ secrets.PASSWORD }} port: ${{ secrets.PORT }} script: | cd /path/to/your/project rm -rf * scp -r /path/to/your/project/dist/* ./ ``` 这个例子是使用密码登录到云服务器的。如果你使用的是SSH Key,你需要相应地修改`deploy.yml`文件。此外,你需要在Github仓库的`Settings`中添加`secrets`,以保存你的服务器信息和登录凭证。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

火星飞鸟

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

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

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

打赏作者

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

抵扣说明:

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

余额充值