如何在Bitbucket管道中缓存APT包?

时间:2018-04-06 06:51:24

标签: docker apt bitbucket-pipelines

我正在尝试使用gradle,jdk 8构建项目,并使用ansible进行部署。

我无法找到包含所有这些的最新泊坞窗图像,因此我即时安装了ansible。

据称Bitbucket管道有能力创建自定义缓存但它似乎没有缓存apt目录

image: java:8

pipelines:
  default:
    - step:
        caches:
          - gradle
          - apt
        script:
          - echo 'deb http://ppa.launchpad.net/ansible/ansible/ubuntu trusty main' >> /etc/apt/sources.list
          - apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367
          - apt-get update && apt-get install -y ansible
          - bash ./gradlew clean bootJar
definitions:
  caches:
    apt: /var/cache/apt/archives

结果

Dependency caches
gradle: ~/.gradle/caches        158.37 MB   06 Apr 2018 
apt:    /var/cache/apt/archives 151 Bytes   06 Apr 2018 
编辑:我添加了一个列出目录的步骤,不仅没有任何内容,我无法在整个系统中找到任何deb文件

find /var/cache/
<1s
+ find /var/cache/
/var/cache/
/var/cache/apt
/var/cache/apt/archives
/var/cache/apt/archives/partial
/var/cache/apt/archives/lock
/var/cache/ldconfig
/var/cache/ldconfig/aux-cache
/var/cache/debconf
/var/cache/debconf/templates.dat
/var/cache/debconf/config.dat-old
/var/cache/debconf/config.dat
/var/cache/debconf/templates.dat-old
/var/cache/debconf/passwords.dat
/var/cache/fontconfig
/var/cache/fontconfig/d589a48862398ed80a3d6066f4f56f4c-le64.cache-4
/var/cache/fontconfig/7ef2298fde41cc6eeb7af42e48b7d293-le64.cache-4
/var/cache/fontconfig/3830d5c3ddfd5cd38a049b759396e72e-le64.cache-4
/var/cache/fontconfig/CACHEDIR.TAG
/var/cache/fontconfig/4c599c202bc5c08e2d34565a40eac3b2-le64.cache-4
find / -name "*.deb"
<1s
+ find / -name "*.deb"

1 个答案:

答案 0 :(得分:0)

在基于Ubuntu的Docker映像中,通常有一个apt钩子,可在安装后删除软件包。它位于/etc/apt/apt.conf.d/中。

ubuntu:19.04中,包含钩子的文件称为docker-clean。如果将其删除,则可以找到在/var/cache/apt/archives中下载的所有软件包。

因此,只需在管道的开头添加以下内容,即可使apt缓存按预期工作:

rm /etc/apt/apt.conf.d/docker-clean