You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

创建Github Actions的deploy.yaml工作流时遇报错求助

GitHub Actions工作流报错排查与修复

问题描述

我正在创建第一个GitHub Actions工作流,针对WordPress站点做基础部署,遇到了在线搜索无法解决的报错,报错提示指向fetch-depth: 0行。但只要移除该行下方的代码,工作流就能正常运行。我已经检查过缩进,也参考了在线示例,问题还是没解决。我的工作流代码如下:

name: deploy
on:
  push:
    branches:
      # Pushing to the `master` branch
      # will trigger our workflow
      - master
    paths-ignore:
      # Ignore files and folders
        - 'bin/**'
        - 'readme.html'
concurrency:
  #maximum of one deployment in progress and one deployment pending at a time
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true
permissions:
  actions: write
  contents: read
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        # Checkout our repository under `${GITHUB_WORKSPACE}`,
        # so our workflow can access it
        uses: actions/checkout@v4
        with:
          # Fetch the entire Git history. 
          fetch-depth: 0

      - name: Deploy via SFTP
          #Deploy via FTP details
          uses: actions/checkout@v4
          with:
            host: ${{ secrets.MW_FTP_SERVER }}
            port: ${{ secrets.MW_FTP_PORT }}
            user: ${{ secrets.MW_FTP_USER }}
            pass: ${{ secrets.MW_FTP_PASS }}
            remoteDir: '/httpdocs'
            options: '--verbose'

错误原因

报错的根源不在fetch-depth: 0,而是下方的Deploy via SFTP步骤存在两个致命问题:

  • 缩进错误:uses和with的缩进比同级的name多了一级,YAML对缩进要求严格,这种格式会导致解析失败
  • Action使用错误:你用了actions/checkout@v4(这个Action的作用是拉取代码仓库)来做SFTP部署,完全不对,应该使用专门的SFTP部署Action

修正后的工作流代码

name: deploy
on:
  push:
    branches:
      # 推送到`master`分支会触发工作流
      - master
    paths-ignore:
      # 忽略以下文件和文件夹
        - 'bin/**'
        - 'readme.html'
concurrency:
  # 同一时间最多允许一个部署进行中、一个部署等待
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true
permissions:
  actions: write
  contents: read
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        # 将仓库拉取到`${GITHUB_WORKSPACE}`,方便工作流访问
        uses: actions/checkout@v4
        with:
          # 获取完整的Git历史
          fetch-depth: 0

      - name: Deploy via SFTP
        # 通过SFTP部署代码
        uses: wlixcc/SFTP-Deploy-Action@v1.2.4
        with:
          host: ${{ secrets.MW_FTP_SERVER }}
          port: ${{ secrets.MW_FTP_PORT }}
          username: ${{ secrets.MW_FTP_USER }}
          password: ${{ secrets.MW_FTP_PASS }}
          remoteDir: '/httpdocs'
          args: '--verbose'

关键修正点

  1. 调整了Deploy via SFTP步骤中uses和with的缩进,使其与name保持同级,符合YAML格式规范
  2. 替换为专门的SFTP部署Action,同时适配了该Action的参数命名(比如user改为username、pass改为password、options改为args)

内容的提问来源于stack exchange,提问作者Shaun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 09:27:13