betomorrow/ci-flutterci-flutter 是一个为 Gitlab CI/CD 流水线设计的便捷镜像,集成了多种开发、部署工具及云服务客户端,旨在简化 CI/CD 流程中的环境配置、代码拉取、依赖管理和应用部署等环节。
v17镜像默认提供 Bash shell,内置以下工具,可直接用于脚本执行:
curl、OpenSSH、jq、zip、git、python3、AWS CLI、Google Cloud CLI
镜像已预置 gitlab.com 和 github.com 的 SSH 主机密钥(详见文件),无需手动配置 StrictHostKeyChecking。
| 变量名 | 描述 |
|---|---|
CIBTO_SSH_KEY_[...] | 前缀为该值的变量会被写入磁盘,同时生成 CIBTO_SSH_KEY_[...]_PATH 变量存储文件路径,密钥会自动添加到 ssh-agent |
CIBTO_SSH_KNOWN_HOST_[...] | 前缀为该值的变量会被添加到 sshd 已知主机列表 |
| 变量名 | 描述 |
|---|---|
CIBTO_GIT_USER_EMAIL | 设置 Git 全局用户*** |
CIBTO_GIT_USER_NAME | 设置 Git 全局用户名 |
| 命令格式 | 描述 |
|---|---|
git-set-key <key_path> | 配置 Git 使用指定路径的 SSH 密钥,并禁用 StrictHostKeyChecking |
默认区域:eu-west-1
| 变量名 | 描述 |
|---|---|
CIBTO_AWS_ECR_AUTO_LOGIN | 启用 ECR 自动登录(默认:0,不启用) |
CIBTO_AWS_S3_ENDPOINT | 设置 S3 端点(例如 [***]) |
| 命令格式 | 描述 |
|---|---|
aws-ecr-login <region> | 登录指定区域的 AWS ECR 仓库 |
无特定环境变量或命令,可直接使用原生 az 命令。
| 变量名 | 描述 |
|---|---|
CIBTO_GCLOUD_AR_AUTO_LOGIN | 启用 Artifact Registry 自动登录(默认:0,不启用) |
CIBTO_AZURE_RM_SUBSCRIPTION_ID | 设置 Azure 订阅 ID(注:该变量实际为 Azure 配置,此处按原文档保留) |
CIBTO_AZURE_RM_TENANT_ID | 设置 Azure 订阅租户 ID(注:同上) |
CIBTO_AZURE_RM_CLIENT_ID | 设置 Azure 服务主体应用 ID(注:同上) |
CIBTO_AZURE_RM_CLIENT_SECRET | 设置 Azure 服务主体密钥(注:同上) |
提供 Web 和移动应用的预览部署功能,支持通知集成。
| 变量名 | 描述 |
|---|---|
CIBTO_PREVIEWS_SERVER_URL | 预览服务器 URL(例如 [***]) |
CIBTO_PREVIEWS_TOKEN | 预览服务器认证 JWT 令牌 |
CIBTO_PREVIEWS_SLACK_HOOK_URL | (可选)Slack 通知 Webhook URL,用于推送部署通知 |
| 命令格式 | 描述 |
|---|---|
push_web_preview <src_path|docker_tag> <app_name> | 部署 Web 预览: - 若为静态网站(SSG),传入静态文件目录路径(通常含 index.html); - 若为 Docker 镜像,传入镜像标签(镜像需监听 8080 端口); app_name 为自定义名称(如 backend/frontend、storybook) |
push_mobile_preview <filename> <filepath> <app_name> | 部署移动应用预览:filename 为下载时显示的文件名;filepath 为构建产物的系统路径;app_name 为自定义名称(如 android/ios) |
用于上传软件物料清单(BOM)至 Dependency Track 进行漏洞扫描。
| 变量名 | 描述 |
|---|---|
CIBTO_DTRACK_HOST | 设置 Dependency Track 主机地址 |
CIBTO_DTRACK_API_KEY | 设置 Dependency Track API 密钥 |
| 命令格式 | 描述 |
|---|---|
dtrack-upload -g <组名> -p <项目名> -b <BOM.json> | 上传 BOM 文件至 Dependency Track,需指定组名、项目名和 BOM 文件路径 |
| 变量名 | 描述 |
|---|---|
CIBTO_DEBUG | 设置任意值可启用镜像内置脚本的调试信息输出 |
yamlstages: - build - deploy-preview variables: CIBTO_GIT_USER_NAME: "CI Bot" CIBTO_GIT_USER_*** "***" CIBTO_SSH_KEY_MY_REPO: "$SSH_PRIVATE_KEY" # 注入 SSH 密钥 CIBTO_PREVIEWS_SERVER_URL: "[***]" CIBTO_PREVIEWS_TOKEN: "$PREVIEWS_JWT_TOKEN" CIBTO_PREVIEWS_SLACK_HOOK_URL: "$SLACK_HOOK" build_web: stage: build image: ci-flutter:v17 script: - git-set-key "$CIBTO_SSH_KEY_MY_REPO_PATH" # 使用注入的 SSH 密钥配置 Git - git clone ***:example/project.git # 拉取代码 - cd project && npm install && npm run build # 构建静态 Web 应用 - push_web_preview ./dist frontend # 部署 Web 预览 deploy_mobile_preview: stage: deploy-preview image: ci-flutter:v17 script: - flutter build appbundle # 构建 Flutter 应用 - push_mobile_preview "app-debug.aab" "build/app/outputs/bundle/debug/app-debug.aab" android # 部署移动预览
bash# 启动容器并挂载本地 SSH 密钥、设置调试模式 docker run -it --rm \ -e CIBTO_DEBUG=1 \ -e CIBTO_SSH_KEY_TEST="$HOME/.ssh/id_rsa" \ -e CIBTO_GIT_USER_NAME="Local Test" \ -e CIBTO_GIT_USER_EMAIL="***" \ ci-flutter:v17 /bin/bash # 在容器内执行命令 git-set-key "$CIBTO_SSH_KEY_TEST_PATH" # 配置 Git SSH git clone ***:example/repo.git # 测试代码拉取
bashdocker run -it --rm \ -e CIBTO_AWS_ECR_AUTO_LOGIN=1 \ -e AWS_ACCESS_KEY_ID="$AWS_ACCESS_KEY" \ -e AWS_SECRET_ACCESS_KEY="$AWS_SECRET_KEY" \ ci-flutter:v17 \ sh -c "aws-ecr-login us-east-1 && docker push ***.dkr.ecr.us-east-1.amazonaws.com/my-app:latest"




manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务