其他分支的 GitHub 自托管运行器未拉取最新更改

问题描述 投票:0回答:1

我有以下 YAML 文件。每次推送到分支时,它都应该拉取最新的代码、构建并重新启动服务。每次推送时它都会成功运行,但是当我通过 SSH 连接到服务器时,更改不会被拉取。当我运行

git pull origin dev
时,才会拉出更改。我在同一组织中的另一个存储库中有类似的 YAML 作为前端,并且它工作得很好。

name: Node.js CI

on:
  push:
    branches: [ "dev" ]

jobs:
  build:

    runs-on: self-hosted

    strategy:
      matrix:
        node-version: [22.x]
    steps:
    - uses: actions/checkout@v4
    - name: Use Node.js ${{ matrix.node-version }}
      uses: actions/setup-node@v4
      with:
        node-version: ${{ matrix.node-version }}
        cache: 'npm'
    - run: cd /home/ubuntu/<project-name>-dev/<projec-name>-backend
    - run: git pull origin dev
    - name: Save environment variables
      run:
        echo "PORT=4000" >> .env &&
        echo "SOCKET_PORT=4002" >> .env
    - name: Test environment variables
      run:
        cat .env
    - run: npm ci
    - run: CI='' && npm run build
    - run: sudo systemctl restart <project-name>.service

附加信息:

我在组织中有两个存储库(用于前端和后端)。两者都部署在 EC2 上。最初,前端(主分支)只有一个操作和一个运行程序。现在,使用同一个运行器,我又添加了 3 个操作(前端开发、后端主要、后端开发),所有这些都显示了上述有问题的行为。

我本来期待:

  1. 每次按下
    dev
    (工作)
  2. 时都会运行操作
  3. 应将更改拉到服务器上(不起作用)
  4. 应该构建项目并重新启动服务(不工作)
node.js amazon-ec2 github-actions
1个回答
0
投票

这里很多事情可能都是错误的,所以这里是我的建议,以更好地缩小问题范围。

  1. 如果您希望项目位于特定路径中,请直接使用签出操作签出该项目。
  2. 在适用的情况下为后续步骤指定
    working-directory

您还应该注意,一步中的

cd
不会影响后续步骤。每一步都是一次新的 shell 调用。

我是这样写的:

name: Node.js CI

on:
  push:
    branches: [ "dev" ]

env:
  PROJECT_DIR: /home/ubuntu/<project-name>-dev/<projec-name>-backend
  
jobs:
  build:
    runs-on: self-hosted
    strategy:
      matrix:
        node-version: [22.x]
    steps:
    - uses: actions/checkout@v4
      with:
        path: ${{ env.PROJECT_DIR }}

    - name: Use Node.js ${{ matrix.node-version }}
      uses: actions/setup-node@v4
      with:
        node-version: ${{ matrix.node-version }}
        cache: 'npm'

    - name: Save environment variables
      run: |
        echo "PORT=4000" >> .env &&
        echo "SOCKET_PORT=4002" >> .env
      working-directory: ${{ env.PROJECT_DIR }}

    - name: Test environment variables
      run:
        cat .env
      working-directory: ${{ env.PROJECT_DIR }}

    - run: npm ci
      working-directory: ${{ env.PROJECT_DIR }}

    - run: CI='' && npm run build
      working-directory: ${{ env.PROJECT_DIR }}

    - run: sudo systemctl restart <project-name>.service
      working-directory: ${{ env.PROJECT_DIR }}
© www.soinside.com 2019 - 2024. All rights reserved.