当前位置: 首页 > 知识库问答 >
问题:

gitlab管道配置gitlab ci。yml文件

仉昂熙
2023-03-14

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

失败:构建失败,出现异常。

> < li>

哪里出错:配置项目时出现问题:app。您尚未接受以下SDK组件的许可协议:[constraint layout for Android 1 . 0 . 2,Solver for constraint layout 1 . 0 . 2]。在构建项目之前,您需要接受许可协议,并使用Android Studio SDK管理器完成缺失组件的安装。或者,要了解如何将许可协议从一个工作站转移到另一个工作站,请访问http://d.android.com/r/studio-ui/export-licenses.html

尝试:使用--stacktrac选项运行以获取堆栈跟踪。使用--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个答案

戚学
2023-03-14

将以下行添加到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
 类似资料:
  • 由于此错误,我无法运行gitlab管道

  • 我对gitlab ci子管道有问题。需要在具有多个应用程序的repo中的每次提交后自动触发ci管道。需要配置以检测哪些文件夹/文件被修改,以便知道要触发哪个应用程序管道 结构示例 Main“.gitlab ci.yml”是: appA1".gitlab-ci.yml"是: appA2“.gitlab ci.yml”是: 这种配置的目的是,例如,当我在应用**中更改文件时,管道会检测到更改并生成应用

  • 通常,我会通过Azure DevOps门户创建一个新的构建管道。然后,编辑器将带我完成选择项目源、存储库和模板的步骤。之后,我可以选择创建一个新分支或直接提交到主分支。 但是,这一次,我的分支中有一个现有的文件。我在本地使用文本编辑器创建了它,并将此分支推送到Azure运营模式。我想附加此文件,并让Azure管道创建新版本并将其排队。但是我找不到任何选择。导入生成管道选项仅接受JSON文件。 是否

  • 主要内容:锁定一个特定的Runner,受保护的Runner,运行未标记的作业GitLab runner是一个构建实例,用于在多台机器上运行作业,并将结果发送到GitLab,并可将其放置在单独的用户,服务器和本地计算机上。 安装后,您可以将runner注册为共享或特定的。 “GitLab安装”一章介绍了runner的安装。 您可以通过使用特定或共享runner来为作业提供服务。 共享runner 这些runner对于多个具有相似要求的项目很有用。 您可以使用单个或少量Run

  • 我在网上找不到直接的答案。 Spring Boot的yml文件是否相互“继承”?我的意思是如果我有: 和只有 因此,如果我以作为活动配置文件启动Spring Boot,我还将拥有属性设置为?