hexo 超简单部署

本文同步至我的个人博客

前言

Hexo 本身提供了很多快速方便的一键部署功能,让您只需一条命令就能将网站部署到服务器上。
配置文件: _config.yml
但是在配置文件中使用 sftp 发布到服务器,需要一些明文信息。然后不希望将这些信息暴露出去。
在网上搜索了好大半天,发现文章篇幅都比较长 其实是我看不懂 😭 所以自己尝试了两个较简单的方法。

大前提是使用 sftp-sync-deploy 这个包来将自己的文件发布上去,hexo 部署是使用hexo-deployer-sftp (核心是 sftp-sync-deploy)。

sftp-sync-deploy

然后不想暴露密码,咱们可以

  • 使用 inquirer.js 实时输入账号密码等信息
  • 将私密信息添加到 github 上, 通过 github action 自动部署
准备

随便找个地方实现一个发布功能的文件 deploy.js

参考:

大概长得和这样它这样 sftp-sync-deploy

然后 package.json 中创建调用它的命令


inquirer.js

实时输入密码,作为变量传递

const { deploy } = require('sftp-sync-deploy')
const inquirer = require('inquirer')

const promptList = [
  {
    type: 'input',
    message: '请输入密码:',
    type: 'password',
    name: 'password',
  },
]

inquirer.prompt(promptList).then(({ password }) => {
  let config = {
    host: 'http://127.0.0.1/', // Required.
    username: 'root', // Required.
    password, // Optional.
    localDir: './public', // Required, Absolute or relative to cwd.
    remoteDir: '/', // Required, Absolute path only.
  }

  let options = {
    dryRun: false, // Enable dry-run mode. Default to false
    exclude: [
      // exclude patterns (glob)
      'node_modules',
      'src/**/*.spec.ts',
    ],
    excludeMode: 'remove', // Behavior for excluded files ('remove' or 'ignore'), Default to 'remove'.
    forceUpload: false, // Force uploading all files, Default to false(upload only newer files).
    concurrency: 100, // Max number of SFTP tasks processed concurrently. Default to 100.
  }

  return deploy(config, options)
})

Github Action

为了减少文章篇幅,关于 Github Action 可以参考

jobs:
  build:
    # ...
    steps:
      # ...
      env:
        HOST: ${{ secrets.HOST }}
        PASSWORD: ${{ secrets.PASSWORD }}
        REMOTEDIR: ${{ secrets.REMOTEDIR }}

具体可以参考我的 hexo schedule.yml

这时候需要修改一下 deploy.js
需要获取配置在 github > Secrets 的环境变量,大概长下面这样

const { deploy } = require('sftp-sync-deploy')
const { HOST: host, PASSWORD: password, REMOTEDIR: remoteDir } = process.env

let config = {
  host, // Required.
  username: 'root', // Required.
  password, // Optional.
  localDir: './public', // Required, Absolute or relative to cwd.
  remoteDir, // Required, Absolute path only.
}

let options = {
  dryRun: false, // Enable dry-run mode. Default to false
  exclude: [
    // exclude patterns (glob)
    'node_modules',
    'src/**/*.spec.ts',
  ],
  excludeMode: 'remove', // Behavior for excluded files ('remove' or 'ignore'), Default to 'remove'.
  forceUpload: false, // Force uploading all files, Default to false(upload only newer files).
  concurrency: 100, // Max number of SFTP tasks processed concurrently. Default to 100.
}

return deploy(config, options) // 需要返回给调用者

具体可以参考我的 hexo deploy.js


最后

如果用到账号什么的,大家注意不要明文展示哦,可以分配一个最小权限账号或者私钥
如果有更好的方法,一定要分享下给我!!!༼ つ ◕_◕ ༽つ

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

_pengliang

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

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

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

打赏作者

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

抵扣说明:

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

余额充值