【问题标题】:Why bitbucket-pipelines doesn't create cache?为什么 bitbucket-pipelines 不创建缓存?
【发布时间】:2019-02-18 22:32:14
【问题描述】:

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

> 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_install.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"

package_file.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'

但在 Pipelines -> Caches->Dependency caches 中,android-sdk 的缓存未显示:

在下一次运行时:

Cache "android-sdk": Downloading
Cache "android-sdk": Not found

【问题讨论】:

  • 您是否尝试过在定义部分使用:android-sdk: $PWD/android-sdk-linux
  • @SvenHakvoort 仍然不起作用。但在 Build teardown Assembling contents of new cache 'android-sdk' 中也会显示

标签: bitbucket bitbucket-pipelines


【解决方案1】:

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

所以我将文件ci_install.sh 移动到/MyProject/pipelines/ci_install.sh,现在在/opt/atlassian/pipelines/agent/build/android-sdk-linux 文件夹中创建了android-sdk-linux

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

【讨论】:

    猜你喜欢
    • 2019-11-30
    • 2018-02-08
    • 2019-06-11
    • 2020-01-22
    • 2013-02-02
    • 1970-01-01
    • 1970-01-01
    • 2017-12-10
    • 2013-11-07
    相关资源
    最近更新 更多