如何用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
相关产品推荐
相关产品推荐

