示例代码
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 * * *



