如何通过Azure Pipeline将Dart包发布至pub.dev
基于Azure Pipeline YAML自动发布Dart包到pub.dev
1. 获取pub.dev发布令牌
在本地环境执行pub token add pub.dev,按照提示完成身份验证后,复制生成的访问令牌(注意不要复制刷新令牌)。
2. 在Azure DevOps中配置保密变量
- 进入你的Azure DevOps项目,打开流水线 > 库 > 变量组(也可直接在目标流水线的变量设置中操作)
- 创建一个保密变量,命名为
PUB_DEV_TOKEN,填入刚才复制的令牌值,勾选保密选项确保令牌不会明文泄露。
3. 编写YAML流水线配置
优先选择Ubuntu代理(Dart环境配置更简便),完整示例如下:
trigger: branches: include: - main # 按需修改触发发布的分支 pool: vmImage: 'ubuntu-latest' variables: - group: 你的变量组名称 # 若使用变量组存储令牌,替换为实际名称;直接用流水线变量可删除此行 steps: - script: | # 安装Dart SDK sudo apt-get update sudo apt-get install dart # 将Dart加入系统环境变量 export PATH="$PATH:/usr/lib/dart/bin" # 验证Dart安装状态 dart --version displayName: '安装并配置Dart SDK' - script: | pub get pub publish --dry-run displayName: '安装依赖并预检查包合法性' - script: | # 创建pub缓存目录并写入认证信息 mkdir -p ~/.pub-cache echo '{"accessToken":"$(PUB_DEV_TOKEN)","refreshToken":"","tokenEndpoint":"https://accounts.google.com/o/oauth2/token","scopes":["openid","https://www.googleapis.com/auth/userinfo.email"],"expiration":null}' > ~/.pub-cache/credentials.json # 执行自动发布(--force跳过交互确认) pub publish --force displayName: '发布Dart包到pub.dev'
关键注意事项
- 令牌安全:
PUB_DEV_TOKEN必须设为保密变量,禁止在流水线脚本中明文写入令牌。 - 版本唯一性:pub.dev不允许重复版本号,需确保每次发布前更新
pubspec.yaml中的version字段,可结合流水线变量或脚本实现版本号自动递增。 - 预检查必做:
pub publish --dry-run会模拟发布流程,提前发现依赖缺失、格式错误等问题,避免发布失败。 - 代理选择:Ubuntu代理的Dart环境配置更简洁,Windows代理需额外手动配置环境变量,步骤更繁琐。
内容的提问来源于stack exchange,提问作者Batesias
相关产品推荐
相关产品推荐

