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

GitHub自托管Runner无法拉取分支最新代码,构建重启失败求助

问题分析与解决方案

核心问题

  1. 步骤间工作目录不持久:每个run命令都是独立的Shell会话,cd /home/ubuntu/...仅在当前步骤生效,后续的git pull、npm ci等命令都会回到GitHub Runner默认的工作目录,而非你的项目部署目录,导致所有操作都没作用在目标路径上。
  2. 冗余的checkout步骤:你已经打算直接在部署目录执行git pull,前面的actions/checkout@v4会将代码拉取到Runner的临时工作目录,和你的部署目录无关,属于多余操作。
  3. 环境变量写入路径错误:echo ... >> .env是在Runner工作目录创建/修改.env文件,而非部署目录下的.env,对实际运行的服务无效。

修正后的配置示例

name: Node.js CI

on:
  push:
    branches: [ "dev" ]

jobs:
  build:
    runs-on: self-hosted
    strategy:
      matrix:
        node-version: [22.x]
    steps:
    - name: Use Node.js ${{ matrix.node-version }}
      uses: actions/setup-node@v4
      with:
        node-version: ${{ matrix.node-version }}
        cache: 'npm'
        # 缓存指定到项目部署目录,提升依赖安装速度
        cache-dependency-path: /home/ubuntu/<project-name>-dev/<projec-name>-backend/package-lock.json
    - name: Pull latest code
      working-directory: /home/ubuntu/<project-name>-dev/<projec-name>-backend
      run: git pull origin dev
    - name: Update environment variables
      working-directory: /home/ubuntu/<project-name>-dev/<projec-name>-backend
      run: |
        echo "PORT=4000" >> .env
        echo "SOCKET_PORT=4002" >> .env
    - name: Verify environment variables
      working-directory: /home/ubuntu/<project-name>-dev/<projec-name>-backend
      run: cat .env
    - name: Install dependencies
      working-directory: /home/ubuntu/<project-name>-dev/<projec-name>-backend
      run: npm ci
    - name: Build project
      working-directory: /home/ubuntu/<project-name>-dev/<projec-name>-backend
      run: CI='' && npm run build
    - name: Restart service
      run: sudo systemctl restart <project-name>.service

额外注意事项

  • 确保GitHub Runner用户对部署目录有读写权限,否则git pull、依赖安装等操作会静默失败。
  • 如果git pull需要身份验证,可在服务器上配置SSH密钥或HTTPS凭据,让Runner能免密拉取代码。
  • 复用Runner时,若多个Action的工作目录冲突,可给每个Job指定独立的工作区,或在步骤中明确指定路径避免干扰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 15:22:36