Как найти файл apk, используя bitbucket-конвейеры? - PullRequest
1 голос
/ 25 марта 2019

Я использую BitBucket-конвейеры для Android CI.Я пытаюсь экспортировать артефакт (сгенерированный apk) в раздел загрузок проекта.

My bitbucket-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.

Кто-нибудь сталкивался с этой проблемой раньше?Я только вхожу в CI с Android и буду благодарен, если кто-нибудь сможет помочь.

Ответы [ 2 ]

2 голосов
/ 26 марта 2019

Мне удалось решить проблему, добавив тег артефактов после этапа сборки.Затем, чтобы опубликовать файл 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
0 голосов
/ 07 мая 2019

Вы можете использовать эту команду для экспорта последней версии 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
...