Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/183.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何使用bitbucket管道定位apk文件?_Android_Continuous Integration_Bitbucket_Devops_Bitbucket Pipelines - Fatal编程技术网

Android 如何使用bitbucket管道定位apk文件?

Android 如何使用bitbucket管道定位apk文件?,android,continuous-integration,bitbucket,devops,bitbucket-pipelines,Android,Continuous Integration,Bitbucket,Devops,Bitbucket Pipelines,我正在为Android CI使用BitBucket管道。我正在尝试将工件(生成的apk)导出到项目的下载部分 Mybitbucket pipelines.yml如下所示,但它找不到apk文件 image: openjdk:8 pipelines: default: - step: caches: - gradle - android-sdk script: # Download and unzip android sdk - w

我正在为Android CI使用BitBucket管道。我正在尝试将工件(生成的apk)导出到项目的下载部分

Mybitbucket pipelines.yml如下所示,但它找不到apk文件

image: openjdk:8

pipelines:
default:
- step:
    caches:
      - gradle
      - android-sdk

    script:
      # Download and unzip android sdk
      - wget --quiet --output-document=android-sdk.zip https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip
      - unzip -o -qq android-sdk.zip -d android-sdk

      # Define Android Home and add PATHs
      - export ANDROID_HOME="/opt/atlassian/pipelines/agent/build/android-sdk"
      - export PATH="$ANDROID_HOME/tools:$ANDROID_HOME/tools/bin:$ANDROID_HOME/platform-tools:$PATH"

      # Download packages.
      - yes | sdkmanager "platform-tools"
      - yes | sdkmanager "platforms;android-27"
      - yes | sdkmanager "build-tools;27.0.3"
      - yes | sdkmanager "extras;android;m2repository"
      - yes | sdkmanager "extras;google;m2repository"
      - yes | sdkmanager "extras;google;instantapps"
      - yes | sdkmanager --licenses

      # Build apk
      - chmod a+x ./gradlew
      - ./gradlew assembleDebug

      # Saving artifact
      - curl -X POST "https://${BB_AUTH_STRING}@api.bitbucket.org/2.0/repositories/${BITBUCKET_REPO_OWNER}/${BITBUCKET_REPO_SLUG}/downloads" --form files=@"**/*.apk"


definitions:
  caches:
     android-sdk: android-sdk
这个问题正在讨论中

- curl -X POST "https://${BB_AUTH_STRING}@api.bitbucket.org/2.0/repositories/${BITBUCKET_REPO_OWNER}/${BITBUCKET_REPO_SLUG}/downloads" --form files=@"**/*.apk"
我还尝试了以下方法,而不是
***.apk

./app/build/outputs/apk/*.apk
但到目前为止,没有任何东西能找到apk


以前有人遇到过这个问题吗?我刚刚开始接触Android的CI,如果有人能帮助我,我将不胜感激。

我能够通过在构建步骤后添加artifacts标记来解决这个问题。然后要发布apk文件,我必须指向特定的文件(对应于父文件夹的路径)

我的bitbucket pipelines.yml文件现在如下所示

image: openjdk:8

pipelines:
  default:
    - step:
      caches:
        - gradle
        - android-sdk

      script:
        # Download and unzip android sdk
        - wget --quiet --output-document=android-sdk.zip https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip
        - unzip -o -qq android-sdk.zip -d android-sdk

        # Define Android Home and add PATHs
        - export ANDROID_HOME="/opt/atlassian/pipelines/agent/build/android-sdk"
        - export PATH="$ANDROID_HOME/tools:$ANDROID_HOME/tools/bin:$ANDROID_HOME/platform-tools:$PATH"

        # Download packages.
        - yes | sdkmanager "platform-tools"
        - yes | sdkmanager "platforms;android-27"
        - yes | sdkmanager "build-tools;27.0.3"
        - yes | sdkmanager "extras;android;m2repository"
        - yes | sdkmanager "extras;google;m2repository"
        - yes | sdkmanager "extras;google;instantapps"
        - yes | sdkmanager --licenses

        # Build apk
        - chmod a+x ./gradlew
        - ./gradlew assembleDebug

      artifacts:
        - app/build/outputs/apk/debug/*.apk

  - step:
     script:
        # Saving artifact
        - curl -X POST "https://${BB_AUTH_STRING}@api.bitbucket.org/2.0/repositories/${BITBUCKET_REPO_OWNER}/${BITBUCKET_REPO_SLUG}/downloads" --form files=@"app/build/outputs/apk/debug/app-debug.apk"


definitions:
    caches:
        android-sdk: android-sdk

您可以使用此命令导出最新的apk

LATEST_APK=$(ls -lrt ./app/build/outputs/apk/debug/*.apk | tail -1 | awk -F" " '{ print $9 }')
然后使用curl post命令将其上载到Bitbucket的下载部分

curl -s -u "${BITBUCKET_REPO_OWNER}:${BB_AUTH_STRING}" -X POST "https://api.bitbucket.org/2.0/repositories/${BITBUCKET_REPO_OWNER}/${BITBUCKET_REPO_SLUG}/downloads" -F files=@"${LATEST_APK}" --verbose

当我在我的项目中设置配置文件时,我收到一个错误:“配置错误:bitbucket-pipelines.yml中的[pipelines>default>0]有一个错误。准确地说,步骤为空、null或缺少。”这可能是因为空格错误。你能把配置文件作为Gist共享吗?我已经重构了配置文件(只更改了空格)。也许它对某人有用-@PonomarenkoOleh是的,这可能是由于缩进造成的。谢谢你发布的要点,很高兴它为你解决了。