You need to enable JavaScript to run this app. 如何用actions/checkout@v2替代appleboy/ssh-action克隆GitHub仓库到远程服务器
优惠活动
大模型
产品
解决方案
定价
更多

如何用actions/checkout@v2替代appleboy/ssh-action克隆GitHub仓库到远程服务器

问题核心原因

两个Action的功能定位完全不同,直接替换uses字段的操作不可行:

  • appleboy/ssh-action的作用是通过SSH协议连接到你指定的个人远程服务器,在你的服务器内部执行预设的命令脚本,你原有配置的逻辑就是直接在自己的服务器上执行git clone拉取GitHub仓库代码
  • actions/checkout@v2的作用是把你的GitHub仓库代码,克隆到本次GitHub Action任务运行的临时公共Runner机器(也就是你配置里runs-on: ubuntu-latest对应的GitHub提供的临时服务器)上,完全不涉及和你个人远程服务器的交互
用actions/checkout实现部署的正确配置

如果要结合actions/checkout实现需求,整体逻辑会变成:先把代码拉到GitHub的临时Runner,可根据需要在Runner中完成代码构建、依赖安装等操作后,再把代码/构建产物同步到你的个人远程服务器,适合不想给个人服务器配置GitHub拉取权限、或者服务器未安装对应运行环境的场景,配置示例如下:

name: deploy to a server on push

on:
  push:
    branches: [ master ]

jobs:
  deploy-to-server:
    runs-on: ubuntu-latest
    steps:
      # 第一步:把代码克隆到GitHub临时Runner
      - uses: actions/checkout@v4
        with:
          # 如果需要拉取全量提交记录可以保留该参数,不需要可以删除
          fetch-depth: 0
      
      # 这里可以根据项目需要加构建、测试步骤,比如前端项目的npm install、npm run build等
      
      # 第二步:将代码/构建产物同步到你的远程服务器
      - uses: appleboy/ssh-action@master 
        with:
          host: 123.132.123.132
          username: tomas
          key: ${{ secrets.PRIVATE_KEY }}
          port: 59666
          script: |
            # 先判断目标目录是否存在,不存在就克隆,存在就拉取更新,避免重复克隆报错
            if [ ! -d "/path/to/your/deploy/directory" ]; then
              git clone https://github.com/Tomas-R/website.git /path/to/your/deploy/directory
            else
              cd /path/to/your/deploy/directory
              git pull origin master
            fi

如果你不需要在CI侧做构建、测试等操作,只是要实现服务器自动拉取最新代码,原有直接用appleboy/ssh-action的方案已经可以正常运行,不需要额外引入actions/checkout。

内容的提问来源于stack exchange,提问作者Tomas.R

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 06:06:00