gitlab管道配置gitlab-ci.yml文件

时间:2017-06-09 13:48:54

标签: android gitlab pipeline

我在Android Project工作,我使用gitlab 我配置gitlab-ci.yml文件,我尝试提交我的Android项目,但我在gitLab管道中有问题。
我正在迁移我的代码而我正在尝试构建我的应用程序,但我收到以下错误:

  

失败:构建因异常而失败。

     
      
  • 出了什么问题:   配置项目':app'时出现问题。   您尚未接受以下SDK组件的许可协议:   [ConstraintLayout for Android 1.0.2,Solver for ConstraintLayout 1.0.2]。   在构建项目之前,您需要接受许可协议并使用Android Studio SDK Manager完成缺少的组件的安装。   或者,要了解如何将许可协议从一个工作站转移到另一个工作站,请转到http://d.android.com/r/studio-ui/export-licenses.html

  •   
  • 尝试:   使用--stacktrace选项运行以获取堆栈跟踪。使用--info或--debug选项运行以获得更多日志输出。

  •   
     

建立失败

     

总时间:2分钟8.129秒   错误:作业失败:退出代码1

这是我的gitlab-ci.yml文件

image: openjdk:8-jdk
variables:
ANDROID_COMPILE_SDK: "25"
ANDROID_BUILD_TOOLS: "25.0.2"
ANDROID_SDK_TOOLS: "24.4.1"
before_script:
 - apt-get --quiet update --yes
 - apt-get --quiet install --yes wget tar unzip lib32stdc++6 lib32z1
 - wget --quiet --output-document=android-sdk.tgz https://dl.google.com/android/android-sdk_r${ANDROID_SDK_TOOLS}-linux.tgz
 - tar --extract --gzip --file=android-sdk.tgz
 - echo y | android-sdk-linux/tools/android --silent update sdk --no-ui --all --filter android-${ANDROID_COMPILE_SDK}
 - echo y | android-sdk-linux/tools/android --silent update sdk --no-ui --all --filter platform-tools
 - echo y | android-sdk-linux/tools/android --silent update sdk --no-ui --all --filter build-tools-${ANDROID_BUILD_TOOLS}
 - echo y | android-sdk-linux/tools/android --silent update sdk --no-ui --all --filter extra-android-m2repository
 - echo y | android-sdk-linux/tools/android --silent update sdk --no-ui --all --filter extra-google-google_play_services
 - echo y | android-sdk-linux/tools/android --silent update sdk --no-ui --all --filter extra-google-m2repository
 - export ANDROID_HOME=$PWD/android-sdk-linux
 - export PATH=$PATH:$PWD/android-sdk-linux/platform-tools/
 - chmod +x ./gradlew
stages:
 - build
 - test
build:
 stage: build
 script:
 - ./gradlew assembleDebug
artifacts:
 paths:
  - app/build/outputs/
 unitTests:
stage: test
script:
 - ./gradlew test
functionalTests:
 stage: test
 script:
  - wget --quiet --output-document=android-wait-for-emulator https://raw.githubusercontent.com/travis-ci/travis-cookbooks/0f497eb71291b52a703143c5cd63a217c8766dc9/community-cookbooks/android-sdk/files/default/android-wait-for-emulator
- chmod +x android-wait-for-emulator
- echo y | android-sdk-linux/tools/android --silent update sdk --no-ui --all --filter sys-img-x86-google_apis-${ANDROID_COMPILE_SDK}
- echo no | android-sdk-linux/tools/android create avd -n test -t android-${ANDROID_COMPILE_SDK} --abi google_apis/x86
- android-sdk-linux/tools/emulator64-x86 -avd test -no-window -no-audio &
- android update sdk --no-ui --filter build-tools-25.0.2,android-25,extra-android-m2repository
- ./android-wait-for-emulator
- adb shell input keyevent 82
- ./gradlew cAT
artifacts:
paths:
- app/build/reports/androidTests/

1 个答案:

答案 0 :(得分:0)

before_script部分的末尾添加以下行

  - export SDK_MANAGER="${ANDROID_HOME}/tools/bin/sdkmanager --sdk_root=${ANDROID_HOME}"
  - set +o pipefail
  - echo y | ${SDK_MANAGER} --licenses
  - set -o pipefail

完整的before_script可能看起来像这样

variables:
  ANDROID_COMPILE_SDK: "28"
  ANDROID_BUILD_TOOLS: "28.0.3"
  ANDROID_SDK_TOOLS:   "6609375_latest"

before_script:
  - echo ANDROID_COMPILE_SDK ${ANDROID_COMPILE_SDK}
  - echo ANDROID_BUILD_TOOLS ${ANDROID_BUILD_TOOLS}
  - echo ANDROID_SDK_TOOLS ${ANDROID_SDK_TOOLS}
  - apt-get --quiet update --yes
  - apt-get --quiet install --yes wget tar unzip lib32stdc++6 lib32z1
  - wget --quiet --output-document=android-sdk.zip https://dl.google.com/android/repository/commandlinetools-linux-${ANDROID_SDK_TOOLS}.zip
  - unzip -d android-sdk-linux android-sdk.zip
  - export ANDROID_SDK_ROOT=$PWD/android-sdk-linux
  - export SDK_MANAGER="${ANDROID_SDK_ROOT}/tools/bin/sdkmanager --sdk_root=${ANDROID_SDK_ROOT}"
  - echo y | ${SDK_MANAGER} "platforms;android-${ANDROID_COMPILE_SDK}" >/dev/null
  - echo y | ${SDK_MANAGER} "platform-tools" >/dev/null
  - echo y | ${SDK_MANAGER} "build-tools;${ANDROID_BUILD_TOOLS}" >/dev/null
  - export PATH=$PATH:${ANDROID_SDK_ROOT}/platform-tools/
  - chmod +x ./gradlew
  # temporarily disable checking for EPIPE error and use yes to accept all licenses
  - set +o pipefail
  - echo y | ${SDK_MANAGER} --licenses
  - set -o pipefail