Github Actions配置求助:PR合并到master时触发服务器执行git pull不生效
问题根因
你当前的工作流完全运行在GitHub提供的公共Ubuntu运行器(GitHub官方的临时服务器)上,git pull操作的是运行器上临时拉取的代码副本,从未和你自己的开发服务器建立连接,自然不会更新你服务器上的代码。
日志显示「Already up to date」是因为actions/checkout@v2步骤已经把最新的master分支代码拉取到了运行器的临时工作目录,在这个目录下再次执行git pull origin master当然会提示代码已是最新。
修复方案
步骤1:配置SSH访问权限
- 在本地生成无密码的SSH密钥对:执行
ssh-keygen -t ed25519,全程按回车跳过密码设置 - 将生成的公钥(默认是
~/.ssh/id_ed25519.pub)内容追加到你开发服务器对应登录用户的~/.ssh/authorized_keys文件中,确保该用户对你服务器上代码仓库目录有读写和执行git命令的权限 - 进入你的GitHub仓库页面,打开「Settings → Secrets and variables → Actions」,点击「New repository secret」添加以下密钥:
SSH_PRIVATE_KEY:填入你刚才生成的私钥(默认是~/.ssh/id_ed25519的全部内容)SERVER_HOST:填入你的开发服务器公网IPSERVER_USER:填入你开发服务器的SSH登录用户名SERVER_WORK_DIR:填入你开发服务器上代码仓库的绝对路径,比如/var/www/your-projectSERVER_PORT:填入你开发服务器的SSH端口,默认是22
步骤2:替换工作流配置
把你原来的工作流yaml文件替换为以下内容:
name: Pull on Push to Master on: push: branches: [master] workflow_dispatch: jobs: deploy: runs-on: ubuntu-latest steps: - name: SSH to server and pull latest code uses: appleboy/ssh-action@v0.1.10 with: host: ${{ secrets.SERVER_HOST }} username: ${{ secrets.SERVER_USER }} key: ${{ secrets.SSH_PRIVATE_KEY }} port: ${{ secrets.SERVER_PORT }} script: cd ${{ secrets.SERVER_WORK_DIR }} && git pull origin master
内容的提问来源于stack exchange,提问作者harkul
相关产品推荐
相关产品推荐

