Flutter版本管理或发布插件dart_release的使用

发布于 1周前 作者 bupafengyu 来自 Flutter

Flutter版本管理或发布插件dart_release的使用

dart_release 是一个用于构建和发布Dart应用程序的工具,例如在GitHub上发布或部署到Web服务器。也可以查看相应的GitHub操作:GitHub action

示例

构建

dart_release build \
 --main-path "bin/example.dart"  # Dart入口文件路径
 --app-name example               # 应用程序名称
 --app-version v0.0.1-alpha.1     # 应用程序版本号
 --build-arg=--define=DB_USER=user  # 构建参数,例如数据库用户名
 --build-arg=--define=DB_PASSWORD=12345678  # 构建参数,例如数据库密码
 --include-path README.md         # 包含的文件路径

如果命令未找到(不在PATH中),尝试运行:

dart pub global run dart_release ...

注意,传递给--build-arg的base64参数不应包含任何换行符:

MY_BASE_64=$(base64 --wrap=0 /myfile)

或者在传递之前删除换行符:

MY_BASE_64="${MY_BASE_64//$'\n'/}"

选项

  • main-path: Dart入口点
  • app-name: 应用程序可执行文件名
  • app-version: 版本号(语义化版本,如v1.2.3),参见 语义化版本

支持的功能

平台 Windows macOS Linux
构建 windows macos linux
发布 Microsoft Store ❌ Home Brew ❌ Snap ❌
部署 Windows Server ❌ Mac Server ❌ Linux Server ✓

其他应用分发商的支持正在计划中。

部署设置

  1. 在客户端生成密钥对:

    ssh-keygen -t ed25519 -f $HOME/.ssh/id_ed25519_dart_release -C dart_release
    

    不带 密码

  2. cat $HOME/.ssh/id_ed25519_dart_release.pub 的输出添加到服务器的 $HOME/.ssh/authorized_keys

  3. 将私钥转换为base64字符串:

    base64 --wrap=0 $HOME/.ssh/id_ed25519_dart_release
    
  4. 运行 dart_release 命令进行部署:

    dart_release deploy \
     --dry-run \                    # 干跑模式,不实际部署
     --app-name example \           # 应用程序名称
     --app-version v0.0.1-alpha.1 \ # 应用程序版本号
     --build-arg=--define=DB_USER=user \  # 构建参数,例如数据库用户名
     --build-arg=--define=DB_PASSWORD=12345678 \  # 构建参数,例如数据库密码
     --host=host.example.com \      # 目标主机地址
     --path=.local/share/example/ \ # 部署目标路径
     --ssh-port=22 \                # SSH端口
     --ssh-user=<user> \            # SSH用户
     --ssh-private-key-base64=<private-key> \ # SSH私钥的base64字符串
     --main-path bin/example.dart \ # Dart入口文件路径
     --include-path public \        # 包含的文件路径
     --include-path .env.example \  # 包含的文件路径
     --pre-script deploy-pre-run.sh \  # 预部署脚本
     --post-script deploy-post-run.sh  # 后部署脚本
    

更多关于Flutter版本管理或发布插件dart_release的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter版本管理或发布插件dart_release的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在处理Flutter版本管理或发布插件时,dart_release 是一个有用的工具,可以帮助你自动化版本发布流程。虽然dart_release本身不是一个广泛认知的标准Flutter插件(可能是由于Flutter社区中存在多种类似的工具和方法),但基于你的要求,我将展示一个假设的dart_release 或类似工具可能如何集成到Flutter项目中的示例代码。请注意,这里的代码示例是假设性的,旨在展示概念,因为具体的dart_release工具实现细节可能有所不同。

假设的dart_release工具使用示例

1. 安装依赖

首先,假设dart_release是一个Dart包,你可以通过pub工具安装它:

dart pub add dart_release

或者,如果它是一个全局命令行工具,你可能需要通过pub global activate来安装:

dart pub global activate dart_release

2. 配置pubspec.yaml

在Flutter项目的pubspec.yaml文件中,确保你的依赖项是最新的,并且准备好进行版本控制。

name: my_flutter_app
description: A new Flutter application.
version: 1.0.0+1  # 这里的版本号会在发布时更新

dependencies:
  flutter:
    sdk: flutter

dev_dependencies:
  build_runner: ^2.0.0
  dart_release: ^0.1.0  # 假设的版本号

3. 创建发布脚本

在项目的根目录下创建一个脚本文件,比如release.dart,用于处理版本更新和发布逻辑。

import 'package:dart_release/dart_release.dart' as release; // 假设的包导入路径

void main(List<String> arguments) async {
  // 检查命令行参数
  if (arguments.isEmpty) {
    print('Usage: dart release.dart <new-version>');
    return;
  }

  String newVersion = arguments.first;

  try {
    // 更新pubspec.yaml中的版本号
    await release.updateVersion(newVersion);

    // 执行其他发布前的准备工作,比如构建应用
    await release.buildApp();

    // 发布到相应的平台(这里只是示例,具体实现依赖于平台)
    await release.publishToPlatform();

    print('Version $newVersion has been successfully released.');
  } catch (e) {
    print('Error during release process: $e');
  }
}

注意:上述代码中的release.updateVersion, release.buildApp, 和 release.publishToPlatform 函数是假设存在的,实际使用时需要根据dart_release或你选择的发布工具的API进行调整。

4. 运行发布脚本

使用Dart命令行工具运行发布脚本,并指定新版本号:

dart release.dart 1.0.1+1

替代方案:使用其他工具

如果dart_release不符合你的需求或不存在,你可以考虑使用其他流行的Flutter发布工具,如flutter_launcher_icons, melos, 或changelog_generator等,结合自定义脚本实现版本管理和发布流程。

例如,使用melos进行多包管理:

melos bump --next-version patch
melos publish

或者使用changelog_generator生成变更日志,作为发布流程的一部分。

结论

虽然具体的dart_release工具细节可能有所不同,但上述示例展示了如何将版本管理和发布流程自动化集成到Flutter项目中。根据你的具体需求,你可能需要调整脚本和工具链以适应你的工作流程。

回到顶部