基于 GitHub Actions 的 Flutter action 移植的 CNB 插件,用于在云原生构建流水线中设置 Flutter SDK。
main:
push:
- stages:
- name: Setup Flutter
image: docker.cnb.cool/jacknic/docker/flutter-action:latest
settings:
channel: stable
version: 3.24.0
architecture: x64
main:
push:
- stages:
- name: Setup Flutter
image: docker.cnb.cool/jacknic/docker/flutter-action:latest
settings:
version_file: pubspec.yaml
main:
push:
- stages:
- name: Setup Flutter
image: docker.cnb.cool/jacknic/docker/flutter-action:latest
settings:
channel: stable
cache: true
pub_cache: true
main:
push:
- stages:
- name: Setup Flutter (master)
image: docker.cnb.cool/jacknic/docker/flutter-action:latest
settings:
channel: master
main:
push:
- stages:
- name: Check Flutter Version
image: docker.cnb.cool/jacknic/docker/flutter-action:latest
settings:
channel: stable
dry_run: true
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| channel | string | stable | Flutter 渠道 (stable/beta/master/main) |
| version | string | any | Flutter 版本号,如 "3.24.0" |
| version_file | string | - | 版本文件路径 (pubspec.yaml/.fvmrc/fvm_config.json) |
| architecture | string | x64 | CPU 架构 (x64/arm64) |
| cache | boolean | true | 是否启用 Flutter SDK 缓存 |
| cache_key | string | - | 自定义 Flutter 缓存 key |
| cache_path | string | - | 自定义 Flutter 缓存路径 |
| pub_cache | boolean | true | 是否启用 pub 依赖缓存 |
| pub_cache_key | string | - | 自定义 pub 缓存 key |
| pub_cache_path | string | default | 自定义 pub 缓存路径 |
| git_source | string | https://github.com/flutter/flutter.git | Flutter Git 源地址 |
| dry_run | boolean | false | 仅打印信息不安装 |
| storage_base_url | string | https://storage.googleapis.com | Flutter 存储基础 URL |
插件执行后会导出以下变量供后续任务使用:
| 变量名 | 说明 |
|---|---|
| CHANNEL | Flutter 渠道 |
| VERSION | Flutter 版本 |
| ARCHITECTURE | CPU 架构 |
| FLUTTER_ROOT | Flutter SDK 路径 |
| PUB_CACHE | Pub 缓存路径 |
cd cnb-plugin
docker build -t ${CNB_DOCKER_REGISTRY}/${CNB_REPO_SLUG_LOWERCASE}:latest .
docker push ${CNB_DOCKER_REGISTRY}/${CNB_REPO_SLUG_LOWERCASE}:latest
docker run --rm \
-e PLUGIN_CHANNEL="stable" \
-e PLUGIN_VERSION="3.24.0" \
-e PUB_HOSTED_URL="https://mirrors.tencent.com/dart-pub" \
-e FLUTTER_STORAGE_BASE_URL="https://mirrors.tencent.com/flutter" \
-e SDK_TEST_BASE_URL="https://mirrors.tencent.com/AndroidSDK/" \
-e PLUGIN_STORAGE_BASE_URL="https://mirrors.tencent.com/flutter" \
-e PLUGIN_GIT_SOURCE="https://cnb.cool/jacknic-lab/flutter/flutter" \
${CNB_DOCKER_REGISTRY}/${CNB_REPO_SLUG_LOWERCASE}:latest
# 测试文件系统访问
docker run --rm \
-e PLUGIN_CHANNEL="stable" \
-v $(pwd):$(pwd) \
-w $(pwd) \
${CNB_DOCKER_REGISTRY}/${CNB_REPO_SLUG_LOWERCASE}:latest \
flutter --version
main:
push:
- stages:
- name: Setup Flutter
image: docker.cnb.cool/jacknic/docker/flutter-action:latest
settings:
channel: stable
cache: true
pub_cache: true
- name: Get dependencies
image: docker.cnb.cool/jacknic/docker/flutter-action:latest
settings:
run: flutter pub get
- name: Analyze
image: docker.cnb.cool/jacknic/docker/flutter-action:latest
settings:
run: flutter analyze
- name: Build
image: docker.cnb.cool/jacknic/docker/flutter-action:latest
settings:
run: flutter build apk --release