You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过GitLab CI将Flutter模块生成的AAR文件上传至Google Artifact Registry

实现GitLab CI自动化构建Flutter AAR并上传至Google Artifact Registry

一、前置准备

  1. Google Cloud配置

    • 创建一个具备Artifact Registry Writer权限的服务账号,导出其JSON格式密钥文件
    • 提前在Google Artifact Registry中创建Maven类型的仓库,记录仓库所在区域(如us-central1)、项目ID和仓库名称
  2. GitLab CI/CD变量配置
    在GitLab项目的Settings > CI/CD > Variables中添加以下变量:

    • GCP_SERVICE_ACCOUNT_KEY:粘贴服务账号JSON密钥的内容(类型选File或Variable均可,推荐File避免转义问题)
    • GCP_PROJECT_ID:Google Cloud项目ID
    • GCP_REGION:Artifact Registry仓库所在区域
    • ARTIFACT_REGISTRY_REPO:Artifact Registry仓库名称
    • AAR_GROUP_ID:AAR的Maven GroupID(如com.yourcompany)
    • AAR_ARTIFACT_ID:AAR的Maven ArtifactID(如flutter_module)

二、编写GitLab CI配置文件

在项目根目录创建.gitlab-ci.yml,分构建、部署两个阶段:

1. 构建Flutter AAR阶段

build_aar:
  stage: build
  image: cirrusci/flutter:stable
  before_script:
    # 安装Android SDK必要组件(按需调整版本)
    - sdkmanager "platforms;android-33" "build-tools;33.0.0" --sdk_root=$ANDROID_SDK_ROOT
    - flutter pub get
  script:
    # 仅构建Release版本AAR,生成的产物在build/host/outputs/repo目录下
    - flutter build aar --no-debug --no-profile
  artifacts:
    paths:
      - build/host/outputs/repo/
    expire_in: 1 week # 产物保留1周,可按需调整
  only:
    - main # 仅在main分支触发构建,可改为tags或其他分支

2. 上传至Artifact Registry阶段

deploy_to_artifact_registry:
  stage: deploy
  image: google/cloud-sdk:latest
  dependencies:
    - build_aar # 依赖构建阶段的产物
  before_script:
    # 配置GCP认证
    - echo "$GCP_SERVICE_ACCOUNT_KEY" > service-account-key.json
    - gcloud auth activate-service-account --key-file=service-account-key.json
    - gcloud config set project $GCP_PROJECT_ID
    # 配置Maven settings,用于认证Artifact Registry
    - mkdir -p ~/.m2
    - |
      cat > ~/.m2/settings.xml << EOF
      <settings>
        <servers>
          <server>
            <id>artifact-registry</id>
            <username>_json_key</username>
            <password>`cat service-account-key.json`</password>
          </server>
        </servers>
      </settings>
      EOF
  script:
    # 自动获取构建生成的AAR和POM文件路径(需匹配你的模块结构)
    - AAR_VERSION=${CI_COMMIT_TAG:-SNAPSHOT-${CI_COMMIT_SHORT_SHA}}
    - AAR_PATH=build/host/outputs/repo/$AAR_GROUP_ID/$AAR_ARTIFACT_ID/$AAR_VERSION/$AAR_ARTIFACT_ID-$AAR_VERSION.aar
    - POM_PATH=build/host/outputs/repo/$AAR_GROUP_ID/$AAR_ARTIFACT_ID/$AAR_VERSION/$AAR_ARTIFACT_ID-$AAR_VERSION.pom
    # 使用Maven命令上传AAR到Artifact Registry
    - mvn deploy:deploy-file
      -DgroupId=$AAR_GROUP_ID
      -DartifactId=$AAR_ARTIFACT_ID
      -Dversion=$AAR_VERSION
      -Dpackaging=aar
      -Dfile=$AAR_PATH
      -DpomFile=$POM_PATH
      -Durl=https://$GCP_REGION-maven.pkg.dev/$GCP_PROJECT_ID/$ARTIFACT_REGISTRY_REPO
      -DrepositoryId=artifact-registry
  only:
    - tags # 仅在打Git标签时触发部署,可改为main分支或其他规则

三、关键细节说明

  • 版本号处理:示例中优先使用Git标签作为版本号,无标签时用SNAPSHOT-<短Commit哈希>作为临时版本
  • 镜像选择:构建阶段用cirrusci/flutter:stable已预装Flutter和基础Android SDK;部署阶段用google/cloud-sdk:latest自带gcloud和Maven工具
  • 权限验证:确保服务账号已被授予目标Artifact Registry仓库的Artifact Registry Writer角色,避免上传失败

内容的提问来源于stack exchange,提问作者tofigh rouhani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 07:41:11