Flutter GitHub Actions集成插件dart_github_actions的使用
Flutter GitHub Actions 集成插件 dart_github_actions
的使用
Dart Github Actions
该项目允许使用类型安全的 API 而不是 YAML 来编写 GitHub 工作流。
该插件受到了 github-actions-kotlin-dsl 的启发,并旨在填补 Kotlin 脚本的一些空白。这个项目绝不是替代品,而是一个替代方案。
版本 0.X
Dart Github Actions 目前仍在开发中,基本功能已经实现以开始编写和生成工作流。在 0.x
版本范围内,API 可能会根据实现更多的 GitHub 工作流语法而更改。
如果您发现任何问题或有功能请求,请提交一个 issue 或发起一个 讨论。
功能列表
通用语法
- ❌ 工作流
- ❌ 工作流并发
- ❌ 工作流权限
- ❌ 工作流环境变量
- ❌ 任务
- ✅ 任务输出
- ✅ 任务默认值
- ❌ 任务并发
- ❌ 任务策略
- ❌ 动作步骤
- ❌ 命令步骤
- ❌ 任务条件
- ❌ 任务环境变量
- ❌ 任务容器
- ❌ 任务服务
触发器
- ❌ 分支保护规则
- ❌ 检查运行
- ❌ 检查套件
- ❌ 创建
- ❌ 删除
- ❌ 部署
- ❌ 部署状态
- ❌ 讨论
- ❌ 讨论评论
- ❌ 分叉
- ❌ Gollum
- ❌ 问题评论
- ❌ 问题
- ❌ 标签
- ❌ 合并组
- ❌ 里程碑
- ❌ 页面构建
- ❌ 项目
- ❌ 项目卡片
- ❌ 项目列
- ❌ 公开
- ✅ Pull 请求
- ❌ Pull 请求评论(使用问题评论)
- ❌ Pull 请求审查
- ❌ Pull 请求审查评论
- ❌ Pull 请求目标
- ✅ 推送
- ❌ 注册包
- ❌ 发布
- ❌ 存储库调度
- ❌ 状态
- ❌ 关注
- ❌ 工作流调用
- ❌ 工作流调度
- ❌ 工作流运行
设置
-
在项目的
.github
文件夹中创建一个pubspec.yaml
文件,并将dart_github_actions
添加为依赖项。注意:目前最佳的方式是将
pubspec.yaml
文件放在.github
文件夹中,然后在 Visual Studio Code 中打开该文件夹以获得最佳的 IDE 体验。我发现打开根目录会导致 IDE 自动完成和错误识别出现问题。# .github/pubspec.yaml name: workflows description: 项目用于定义 dart_github_actions 工作流。 version: 1.0.0+1 publish_to: none environment: sdk: ">=2.17.0 <3.0.0" dependencies: dart_github_actions: latest
-
运行
dart pub get
。
编写工作流
-
为您的工作流创建一个 Dart 文件。您的文件应该包含一个异步的
main()
方法。// .github/workflows/workflow.dart import 'package:dart_github_actions/dart_github_actions.dart'; void main() async { await Workflow( name: 'workflow', on: [ Push( branches: ['master'], ) ], jobs: [ Job( id: 'job-1', runsOn: RunnerType.ubuntuLatest, ) ..run('echo step 1', name: 'Step 1') ..run('echo step 2', name: 'Step 1'), ], ).writeYamlToFile(); }
-
使用
dart workflow.dart
运行您的文件,将会生成以下内容:# 这个工作流已使用 dart_github_actions (https://github.com/scottbisaillon/dart_github_actions) 生成。 # 所有的修改都应该在 'workflow.dart' 中进行,并重新生成工作流。 name: workflow on: push: branches: - master jobs: job-1: runs-on: ubuntu-latest steps: - id: step-0 name: Step 1 run: echo step 1 - id: step-1 name: Step 1 run: echo step 2
完整示例
// .github/workflows/example.dart
import 'package:dart_github_actions/dart_github_actions.dart';
void main() async {
const basePath = 'packages/dart_github_actions';
await Workflow(
name: 'dart_github_actions',
on: [
Push(
branches: ['master', 'development'],
paths: [
'.github/workflows/build_dart_github_actions.yaml',
'$basePath/**',
],
)
],
jobs: [
Job(
id: 'build',
runsOn: RunnerType.ubuntuLatest,
defaults: const Defaults(
run: Run(workingDirectory: 'packages/dart_github_actions'),
),
)
..uses(
const CustomAction(
actionOwner: 'actions',
actionName: 'checkout',
actionVersion: 'v3',
),
)
..uses(
const CustomAction(
actionOwner: 'dart-lang',
actionName: 'setup-dart',
actionVersion: 'v1',
),
)
..run('dart pub get', name: 'Install Dependencies')
..run('dart format --set-exit-if-changed .', name: 'Format')
..run('dart analyze --fatal-infos --fatal-warnings .', name: 'Analyze')
..run('dart run coverage:test_with_coverage', name: 'Run Tests')
],
).writeYamlToFile();
}
更多关于Flutter GitHub Actions集成插件dart_github_actions的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter GitHub Actions集成插件dart_github_actions的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,下面是一个关于如何在Flutter项目中集成并使用dart_github_actions
插件的示例代码和配置说明。这个插件允许你在Flutter项目中通过Dart代码来与GitHub Actions进行交互。
第一步:添加依赖
首先,在你的pubspec.yaml
文件中添加dart_github_actions
的依赖:
dependencies:
flutter:
sdk: flutter
dart_github_actions: ^最新版本号 # 请替换为实际发布的最新版本号
然后运行flutter pub get
来安装依赖。
第二步:配置GitHub Actions
你需要在GitHub仓库中创建一个.github/workflows/your-workflow.yml
文件来定义你的GitHub Actions工作流。这里是一个简单的例子,用于在代码推送到主分支时触发一些操作:
name: Flutter CI
on:
push:
branches: [ "main" ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: Dart-Code/flutter-action@v1
with:
flutter-version: '稳定版' # 或者 'beta', 'dev', 'canary' 等
- run: flutter pub get
- run: flutter test
第三步:在Flutter项目中使用dart_github_actions
虽然dart_github_actions
这个包名可能听起来像是直接与GitHub Actions交互的,但实际上,Flutter和Dart生态中并没有一个直接名为dart_github_actions
的官方或广泛使用的包用于这种目的。通常,与GitHub Actions的交互是通过配置.github/workflows/
下的YAML文件来完成的,而不是通过Dart代码。
不过,如果你想要从Flutter应用中调用GitHub API(这可能与GitHub Actions的某些功能相关,比如触发工作流或检查状态),你可以使用像http
这样的Dart包来发送HTTP请求。下面是一个使用http
包来发送GET请求到GitHub API的示例:
import 'package:http/http.dart' as http;
import 'dart:convert';
Future<void> fetchGitHubData() async {
final client = http.Client();
try {
final response = await client.get(
Uri.parse('https://api.github.com/repos/your-username/your-repo/commits/main'),
headers: {
'Accept': 'application/vnd.github.v3+json',
'Authorization': 'Bearer YOUR_GITHUB_ACCESS_TOKEN'
}
);
// 确保响应状态码为200
response.raiseForStatus();
// 将响应体转换为JSON
final body = await response.body;
final jsonData = jsonDecode(body);
print(jsonData);
} catch (exception) {
print('Error fetching data: $exception');
} finally {
// 关闭客户端
client.close();
}
}
void main() {
fetchGitHubData();
}
在这个例子中,你需要将your-username
、your-repo
和YOUR_GITHUB_ACCESS_TOKEN
替换为你的实际值。注意,直接在代码中硬编码GitHub访问令牌是不安全的,你应该使用环境变量或其他安全的方式来管理这些敏感信息。
结论
虽然没有一个直接名为dart_github_actions
的包用于Flutter和Dart项目与GitHub Actions的直接交互,但你可以通过配置GitHub Actions的YAML文件和在Flutter应用中使用HTTP客户端来与GitHub API进行交互,从而间接地实现与GitHub Actions相关的功能。