Skip to content

前言

本着能自动化绝不手动的态度,终于弄懂了GitHub Actions呜呜呜

创建GitHub私有仓库

进入设置页面

创建仓库变量

ssh私钥添加

参考链接easingthemes/ssh-deploy: GitHub Action for deploying code via rsync over ssh. (with NodeJS)

bash
ssh-keygen -m PEM -t rsa -b 4096 #生成私钥
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys #将公钥复制到authorized_keys文件中
cat ~/.ssh/id_rsa #复制私钥

初始化Git

在本地前端项目或者Hexo博客根目录配置.git文件夹

bash
git init 
git remote add origin git@github.com:1225348331/blog.git
git add .
git commit -m "部署项目"
git push origin master

创建workflows

在github上创建workflows后,将其更新到本地

修改workflows

以hexo博客为例,修改.github/workflows/main.yml

yaml
name: 部署hexo博客

on:
  push:
    branches:
      - master
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: 1. 检出分支
        uses: actions/checkout@v3

      - name: 2. 安装 Node
        uses: actions/setup-node@v3
        with:
          node-version: 16

      - name: 3. 安装 Hexo
        run: |
          npm install hexo-cli -g

      - name: 4. 缓存 Hexo
        uses: actions/cache@v1
        id: cache
        with:
          path: node_modules
          key: ${{runner.OS}}-${{hashFiles('package.json')}}

      - name: 5. 安装依赖
        if: steps.cache.outputs.cache-hit != 'true'
        run: |
          npm install --save

      - name: 6. 生成静态文件
        run: |
          hexo clean
          hexo generate

      - name: 7. 推送到服务器私有仓库
        uses: easingthemes/ssh-deploy@main
        with:
          REMOTE_HOST: ${{ secrets.USER_HOST }} #登录IP
          REMOTE_USER: ${{ secrets.USER_NAME }} #登录用户名
          SSH_PRIVATE_KEY: ${{ secrets.USER_PASS }} #目标服务器git ssh私人密钥
          REMOTE_PORT: "8444" #ssh端口
          SOURCE: "public/"
          TARGET: "/opt/1panel/apps/openresty/openresty/www/sites/myblog/index" #目标服务器路径
          # EXCLUDE: "/dist/, /node_modules/" # 排除文件夹

最后用git把更改后的代码推送一下,就部署到服务器上啦~

ps:记得推送完后,去Actions上看一下部署进度,根据里面的错误信息去相应解决就可以啦

总结

GitHub Actions给我们提供了一站式的自动化部署体验,最重要的还是免费,让我们无需再去学会多的部署工具,如jenkens了,这种方式是多么的优雅。

除此之外,GitHub Actions可以部署我们的任何项目,其中的重点当然是yml脚本了。

Released under the MIT License.