创建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'
关键修正点
- 调整了
Deploy via SFTP步骤中uses和with的缩进,使其与name保持同级,符合YAML格式规范 - 替换为专门的SFTP部署Action,同时适配了该Action的参数命名(比如
user改为username、pass改为password、options改为args)
内容的提问来源于stack exchange,提问作者Shaun
相关产品推荐
相关产品推荐

