You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

借助Azure DevOps CI/CD实现树莓派Python应用自动部署

基于Azure DevOps实现树莓派Python应用的自动化OTA更新流程

一、CI阶段:自动化构建适配树莓派的可执行文件

1. 配置Pipeline触发规则

在Azure DevOps Pipeline中设置触发条件,比如代码推送到main分支时自动启动构建流程。

2. 选择构建环境

由于树莓派是ARM架构,直接用Azure官方x86代理构建会生成不兼容的可执行文件,推荐两种方案:

  • 方案1:使用自托管树莓派代理
    在树莓派上安装Azure DevOps自托管代理,直接在目标架构环境中构建,避免交叉编译问题。
  • 方案2:使用ARM Docker镜像构建
    在Pipeline中使用arm32v7/python镜像(适配树莓派3/4的32位系统,若用64位则用arm64v8/python),通过容器完成构建。

3. 构建步骤示例(YAML片段)

trigger:
  branches:
    include:
      - main

pool:
  # 方案1:用自托管树莓派代理的名称
  # name: 'RaspberryPiAgentPool'
  # 方案2:用Azure托管代理+Docker镜像
  vmImage: 'ubuntu-latest'
  container: arm32v7/python:3.9-slim

steps:
- script: |
    pip install --upgrade pip
    pip install -r requirements.txt
    pip install pyinstaller
  displayName: '安装依赖'

- script: |
    pyinstaller --onefile --name your_app your_script.py
  displayName: '用PyInstaller构建可执行文件'

- publish: $(System.DefaultWorkingDirectory)/dist
  artifact: RaspberryPiApp
  displayName: '发布构建产物'

二、CD阶段:自动化部署到树莓派并重启应用

1. 配置SSH服务连接

在Azure DevOps的「项目设置」→「服务连接」中添加SSH连接,填入树莓派的IP地址、SSH用户名、密码或密钥,确保Pipeline能远程访问树莓派。

2. 部署步骤示例(YAML片段)

stages:
- stage: Deploy
  dependsOn: Build
  jobs:
  - job: DeployToPi
    pool:
      vmImage: 'ubuntu-latest'
    steps:
    - download: current
      artifact: RaspberryPiApp
      displayName: '下载构建产物'

    - task: CopyFilesOverSSH@0
      inputs:
        sshEndpoint: '你的树莓派SSH服务连接名称'
        sourceFolder: '$(Pipeline.Workspace)/RaspberryPiApp'
        contents: 'your_app'
        targetFolder: '/tmp/'
      displayName: '上传可执行文件到树莓派临时目录'

    - task: SSH@0
      inputs:
        sshEndpoint: '你的树莓派SSH服务连接名称'
        runOptions: 'commands'
        commands: |
          # 停止运行中的应用(假设用systemd管理)
          sudo systemctl stop your_app.service
          # 替换目标路径的可执行文件
          sudo cp /tmp/your_app /usr/local/bin/
          # 赋予执行权限
          sudo chmod +x /usr/local/bin/your_app
          # 重启应用
          sudo systemctl start your_app.service
          # 验证应用状态
          sudo systemctl status your_app.service --no-pager
      displayName: '部署并重启应用'

关键注意事项

  • 权限配置:确保树莓派的SSH用户拥有sudo权限,且配置免密sudo(编辑/etc/sudoers,添加your_user ALL=(ALL) NOPASSWD: /bin/systemctl, /bin/cp),避免部署时需要输入密码。
  • 应用管理:建议用systemd托管应用,创建/etc/systemd/system/your_app.service配置文件,实现可靠的启停、重启和开机自启。
  • 网络可达性:确保Azure DevOps代理(托管或自托管)能访问树莓派的IP,内网环境可通过VPN或Azure混合连接打通网络。
  • 版本验证:可在PyInstaller构建时注入版本信息(比如--version-file参数),部署后通过your_app --version验证更新是否生效。

内容的提问来源于stack exchange,提问作者kebberpee

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.11 10:04:55