代码之家  ›  专栏  ›  技术社区  ›  NickUnuchek Romulano

为什么Bitbucket管道不创建缓存?

  •  0
  • NickUnuchek Romulano  · 技术社区  · 7 年前

    以下是我的脚本之后服务器上的结果树:

    > pwd
    /opt/atlassian/pipelines/agent/build
    > tree -d
    .
    ├── android-sdk-linux
    │   ├── build-tools
    │   │   └── 28.0.3
    ...
    ├── app
    │   ├── build
    ...
    └── readme
    8005 directories
    

    这是我的剧本 https://opatry.net/2017/11/06/bitbucket-pipelines-for-android/ :

    ci_安装.sh

    #!/usr/bin/env bash
    
    set -eu
    
    cur_dir=$(cd "$(dirname "$0")"; pwd)
    origin_dir=$(cd "${cur_dir}/.."; pwd)
    app_dir="${origin_dir}/android"
    output_dir="${origin_dir}/artifacts"
    
    default_android_sdk_zip_version="3859397"
    android_sdk_zip_version=${1:-${default_android_sdk_zip_version}}
    
    case $(uname -s) in
      Linux)
        os="linux"
      ;;
      Darwin)
        os="darwin"
      ;;
      CYGWIN*|MINGW*)
        os="windows"
      ;;
      *)
        echo "!! Unsupported OS $(uname -s)"
        exit 1
      ;;
    esac
    
    export ANDROID_HOME="${origin_dir}/android-sdk-${os}"
    
    if [ ! -f "${ANDROID_HOME}/tools/bin/sdkmanager" ]; then
      # Download and unzip Android sdk
      echo "Downloading Android SDK '${android_sdk_zip_version}' for '${os}'"
      wget "https://dl.google.com/android/repository/sdk-tools-${os}-${android_sdk_zip_version}.zip"
      unzip "sdk-tools-${os}-${android_sdk_zip_version}.zip" -d "${ANDROID_HOME}"
      rm "sdk-tools-${os}-${android_sdk_zip_version}.zip"
    fi
    
    # Add Android binaries to PATH
    export PATH="${ANDROID_HOME}/tools:${ANDROID_HOME}/tools/bin:${ANDROID_HOME}/platform-tools:${PATH}"
    
    # Accept all licenses (source: http://stackoverflow.com/questions/38096225/automatically-accept-all-sdk-licences)
    echo "Auto Accepting licenses"
    mkdir -p "$ANDROID_HOME/licenses"
    echo -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > "${ANDROID_HOME}/licenses/android-sdk-license"
    echo -e "\n84831b9409646a918e30573bab4c9c91346d8abd" > "${ANDROID_HOME}/licenses/android-sdk-preview-license"
    
    # Update android sdk
    echo "Downloading packages described by ${cur_dir}/package_file.txt"
    cat "${cur_dir}/package_file.txt"
    ( sleep 5 && while [ 1 ]; do sleep 1; echo y; done ) | sdkmanager --package_file="${cur_dir}/package_file.txt"
    

    包文件.txt

    platform-tools
    build-tools;26.0.2
    platforms;android-26
    

    bitbucket-pipelines.yml:

    image: java:8
    
    pipelines:
      branches:
        master:
          - step:
              caches:
                - gradle
                - android-sdk
              script:
                - bash ./build/ci_install.sh
                - ANDROID_HOME=$PWD/android-sdk-linux bash ./build/android.sh
    
    definitions:
      caches:
        android-sdk: android-sdk-linux
        gradle: gradle
    

    结果:

    Build teardown
    You already have a 'gradle' cache so we won't create it again
    Assembling contents of new cache 'android-sdk'
    

    但在 管道 -gt; 高速缓存 -gt; 依赖缓存 高速缓存 android-sdk 不显示: enter image description here

    下次跑步时:

    Cache "android-sdk": Downloading
    Cache "android-sdk": Not found
    
    0 回复  |  直到 7 年前
        1
  •  0
  •   NickUnuchek Romulano    7 年前

    一切正常。我的 ci_install.sh 文件在 /MyProject/utils/pipelines/ci_install.sh 所以android sdk linux是在 /opt/atlassian/pipelines/agent/build/utils/android-sdk-linux 文件夹

    所以我移动了文件 ci_安装.sh /MyProject/pipelines/ci_install.sh 现在android sdk linux是在 /opt/atlassian/pipelines/agent/build/android-sdk-linux 文件夹

    已删除文件夹 utils 从我的项目

    推荐文章