Bitbucket Pipelines apt-get 停止工作

Posted

技术标签:

【中文标题】Bitbucket Pipelines apt-get 停止工作【英文标题】:Bitbucket Pipelines apt-get stopped working 【发布时间】:2019-08-17 06:37:33 【问题描述】:

我的 Bitbucket 管道配置了一段时间,但今天我的构建开始在 apt-get 命令上失败:

我使用 java 8 docker 镜像:

 image: java:8

我需要安装python

 # Install python
 - echo "Install python"
 - apt-get update
 - apt-get install python-pip -q -y

并且在“apt-get”命令上构建开始失败:

+ apt-get update
Get:1 http://security.debian.org jessie/updates InRelease [44.9 kB]
Ign http://deb.debian.org jessie InRelease
Ign http://deb.debian.org jessie-updates InRelease
Ign http://deb.debian.org jessie-backports InRelease
Get:2 http://deb.debian.org jessie Release.gpg [2420 B]
Ign http://deb.debian.org jessie-updates Release.gpg
Ign http://deb.debian.org jessie-backports Release.gpg
Get:3 http://deb.debian.org jessie Release [148 kB]
Ign http://deb.debian.org jessie-updates Release
Ign http://deb.debian.org jessie-backports Release
Err http://deb.debian.org jessie-backports/main amd64 Packages

Get:4 http://security.debian.org jessie/updates/main amd64 Packages [822 kB]
Get:5 http://deb.debian.org jessie/main amd64 Packages [9098 kB]
Err http://deb.debian.org jessie-updates/main amd64 Packages
404  Not Found
Err http://deb.debian.org jessie-backports/main amd64 Packages
404  Not Found
Fetched 10.1 MB in 7s (1395 kB/s)
W: Failed to fetch http://deb.debian.org/debian/dists/jessie-updates/main/binary-amd64/Packages  404  Not Found

W: Failed to fetch http://deb.debian.org/debian/dists/jessie-backports/main/binary-amd64/Packages  404  Not Found

E: Some index files failed to download. They have been ignored, or old ones used instead.
Skipping cache upload for failed step
Searching for test report files in directories named [test-results, failsafe-reports, test-reports, surefire-reports] down to a depth of 4
Finished scanning for test reports. Found 0 test report files.
Merged test suites, total number tests is 0, with 0 failures and 0 errors.

有什么变化吗?我需要调整我的配置吗?

【问题讨论】:

你为什么每次都安装pipfresh? Jessie 中的 pip 不再更改,因此您可以通过使用已经有 pip 的不同容器来节省构建时间和痛苦。 【参考方案1】:

作为引用的其他答案,Jessie and Wheezy repositories have been removed from their normal locations。当尝试在某些 Docker 镜像上运行 apt-get update 时,这将导致 404 错误。

除非您对 Docker 映像有非常特殊的需求,否则我建议您将其更改为使用 Debian Stretch 存储库的映像。

在您的情况下,使用 java:8 图像,这是 deprecated 支持 openjdk image。我已经测试了openjdk:8,发现它使用了 Stretch 并运行 apt-get update 很好。

我还写了一个official post on Atlassian Community 有类似的细节。如果我们发现任何其他可能与解决此问题相关的内容,我们将更新这篇文章。

【讨论】:

将“java:8”更改为“openjdk:8”有帮助。谢谢【参考方案2】:

由于年龄原因,Jessie 和 Wheezy 已从其正常的 repo 位置移除。

请参阅此问题以获取解决方案:https://unix.stackexchange.com/questions/508724/failed-to-fetch-jessie-backports-repository

【讨论】:

【参考方案3】:

也遇到了这个问题(因为它在 Pipeline 的机器上,甚至不是我自己的机器上)。

我在 apt-get update 之前运行了这个:sed -i '/jessie-updates/d' /etc/apt/sources.list

我的 pipelines.yml 的这一部分看起来像这样:

   - sed -i '/jessie-updates/d' /etc/apt/sources.list # Debian mirror-network drops Jessie, so don't use it
   - apt-get update # required to install zip
   - apt-get install -y zip # required for packaging up the application

完整答案here(引用另一个)

【讨论】:

【参考方案4】:

我的解决方案是改变

image: python:3.5.1

image: python:3.5.7

【讨论】:

【参考方案5】:

我使用的是 maven:3.6.3 Docker 映像,也遇到了这个问题。 Docker 映像现在似乎是基于 Red Hat 的,但不包括 yum。只能使用 rpm,因此可以选择手动下载 rpm 包并使用 rpm 或使用不同的 Docker 映像作为基础。

【讨论】:

以上是关于Bitbucket Pipelines apt-get 停止工作的主要内容,如果未能解决你的问题,请参考以下文章

如何从 bitbucket-pipelines.yml 执行 git push?

使用 Bitbucket Pipelines 和 Docker 的 Android CI

使用 BitBucket Pipelines 通过 SSH 访问部署到 VPS

Bitbucket Pipelines apt-get 停止工作

使用 Bitbucket Pipelines 从 docker 实例 SSH 到登台机器

Docker BitBucket管道中缺少区域设置nl_NL