logo小熊博客
首页 代码速查表 fk标记语言示例 登录
目录
定时更新网站内容并部署到服务器

示例代码

name: 每天8点30执行一次
on:
  schedule:
     - cron: '30 0 * * *' # 定时任务
  workflow_dispatch:       # 手动运行

env: # 设置环境变量
  TZ: Asia/Shanghai # 时区(设置时区可使页面中的`最近更新时间`使用时区时间)

jobs:
  build: # 自定义名称
    runs-on: ubuntu-latest
    steps:
      - name: 🚜 拉取最新代码
        uses: actions/checkout@v3
        with:
          ref: 'master'
          repository: 'xcmake/CodeNotes'

      - name: ♻️ 编译静态文件
        run: |
          echo -e 'REF_URL=https://xxcxx.xin/nREF_LABEL=小熊博客' > .env
          npm install
          npm run build

      - name: 🚁 部署到服务器
        uses: wlixcc/SFTP-Deploy-Action@v1.0
        with:
          username: 'xxcxx'   #ssh user name
          port: '22' # 远程服务器ssh端口,默认22
          server: 'xxcxx.lat' # 远程服务器IP
          ssh_private_key: ${{ secrets.xixi }} # 认证服务器秘钥对的私钥
          local_path: './dist/*'  # 对应我们项目打包后的静态文件路径
          remote_path: 'xxcxx/xxc/xx' # 服务器上的路径

常见错误

  • Load key "../private_key.pem": invalid format
    • 私钥文件的内容是否完整,且没有换行或空格问题。
    • 私钥文件是否有正确的格式,应该以-----BEGIN OPENSSH PRIVATE KEY-----开头,以-----END OPENSSH PRIVATE KEY-----结尾。
    • 如果远程服务器没有正确的写权限或路径不对,文件部署会失败。
    • 确保:在 GitHub 仓库的 Settings -> Secrets and variables -> Actions 下,已经正确地添加了名为 xixi 的密钥,并且该密钥对应着远程服务器上的公钥。
  • root@xxcxx.lat: Permission denied (publickey,password).
    • 这表示 SSH 客户端在尝试通过公钥和密码进行认证时,都被拒绝了。
    • 确保公钥添加到服务器的 ~/.ssh/authorized_keys
    • 确保 ~/.ssh 目录和 ~/.ssh/authorized_keys 文件的权限正确
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

执行时间不一致问题

GitHub Actions 的 schedule 事件 始终使用 UTC 时区,而在配置中设置的 TZ: Asia/Shanghai 环境变量 只会影响 workflow 内部执行时的时区(如脚本中的时间显示),不会改变定时任务的触发时区。

您的 cron 配置 30 8 * * * 实际对应的是 UTC 时间每天 8:30,换算成北京时间是 16:30(UTC+8)。如果想要北京时间8:30执行的话,UTC时间应为 30 0 * * *

上一篇:按键闪光动画
下一篇:Kafka的使用
请我喝奶茶!
赞赏码
手机扫码访问
手机访问