如何构建Azure Repos至Linux服务器的CI/CD同步流水线?
Azure Repos 同步至 Linux 服务器的 CI/CD 流水线实现方案
前提准备
- 在 Linux 服务器上生成 SSH 密钥对,将公钥写入服务器的
~/.ssh/authorized_keys文件,确保 Azure DevOps 能无密码 SSH 连接服务器 - 确认 Linux 服务器开放 SSH 端口(默认22),且 Azure DevOps 托管代理可访问该服务器
- 在 Azure DevOps 项目中创建新流水线
流水线配置步骤
1. 关联源代码源
创建流水线时选择「Azure Repos Git」作为代码源,绑定你的目标仓库。
2. 编写 YAML 流水线配置
使用以下模板,根据实际路径调整参数:
trigger: branches: include: - main # 替换为需要触发同步的分支 paths: include: - '*' # 监听所有文件变更,可按需指定特定文件夹 pool: vmImage: 'ubuntu-latest' # 使用Azure托管Ubuntu代理 steps: - checkout: self fetchDepth: 1 # 仅拉取最新代码,提升执行速度 - task: SSH@0 displayName: '同步代码至Linux服务器' inputs: sshEndpoint: '你的Linux服务器SSH服务连接' # 提前在Azure DevOps配置SSH服务连接 runOptions: 'commands' commands: | # 创建服务器目标目录(不存在则创建) mkdir -p /path/to/target/folder # 同步代码至服务器,排除.git目录 rsync -avz --delete --exclude='.git' $(Build.SourcesDirectory)/ user@server-ip:/path/to/target/folder/
3. 配置SSH服务连接
进入 Azure DevOps 项目的「项目设置」→「服务连接」,添加「SSH」类型连接,填入服务器IP、用户名、对应私钥,测试连接确保可用。
4. 验证流水线
提交代码变更到目标分支,触发流水线运行,检查 Linux 服务器目标目录是否同步最新文件。
可选优化
- 仅同步特定文件夹:修改
trigger.paths.include为具体路径,比如- '/src/*' - 错误通知:添加「Send Email」任务,流水线失败时发送告警邮件
- 增量同步:优化rsync参数,仅传输变更文件,降低带宽消耗
- 权限修正:同步完成后添加命令调整文件权限,比如
chmod -R 755 /path/to/target/folder/
内容的提问来源于stack exchange,提问作者Sony Balajisingh
相关产品推荐
相关产品推荐

