如何在GitHub Actions中仅部署仓库内的指定文件夹?
仅部署特定文件夹的GitHub工作流示例
以下是修改后的工作流代码,只会将仓库中的dev文件夹部署到目标服务器:
name: DeployDev14 on: push: branches: - master # 可选:仅当dev文件夹内容变动时触发工作流,减少不必要的执行 paths: - 'dev/**' jobs: deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 # Setup key - run: set -eu - run: mkdir "$HOME/.ssh" - run: echo "${{ secrets.KEY }}" > "$HOME/.ssh/id_rsa" - run: chmod 600 "$HOME/.ssh/id_rsa" # Deploy:仅同步dev文件夹内的内容 - run: rsync -e "ssh -p 22 -i $HOME/.ssh/id_rsa -o StrictHostKeyChecking=no" --archive --compress --delete ./dev/ root@##.##.##.##:/home/sites/site.com
关键改动说明
- 修改rsync源路径:把原来的
.(仓库根目录)换成./dev/,末尾的斜杠确保rsync会将dev文件夹内的所有内容同步到目标目录,而不是把dev文件夹本身复制过去。 - 可选的路径触发条件:在
on.push下添加paths配置,只有当dev文件夹及其子目录的内容发生变动时,才会触发部署工作流,避免无关代码推送导致的无效部署。
注意事项
- 确保服务器上的
/home/sites/site.com目录已存在,若需要将dev文件夹本身同步过去(即目标路径变成/home/sites/site.com/dev),只需去掉源路径末尾的斜杠,写成./dev即可。 - 请替换代码中的
##.##.##.##为你的服务器实际IP地址。
内容的提问来源于stack exchange,提问作者John Galt
相关产品推荐
相关产品推荐

