如何在 gitlab CI 构建中仅安装 ssh?

Posted

技术标签:

【中文标题】如何在 gitlab CI 构建中仅安装 ssh?【英文标题】:How to install only ssh in a gitlab CI build? 【发布时间】:2021-02-10 20:02:51 【问题描述】:

我想创建一个gitlab-ci 部署阶段,它应该通过ssh 上传文件。 我的 ubuntu 镜像不包含 ssh,所以我必须安装它。

image: adoptopenjdk/maven-openjdk11
...

deploy:
  stage: deploy
  script:
    - which ssh || (apt-get update -y && apt-get install -y ssh)
    ...

问题:因此我必须执行一个完整的apt-get install,它将拉取图像的所有最新更新。

结果:

Reading state information...
The following additional packages will be installed:
  dbus dmsetup file gir1.2-glib-2.0 libapparmor1 libargon2-0 libbsd0 libcap2
  libcryptsetup12 libdbus-1-3 libdevmapper1.02.1 libedit2
  [...]

The following NEW packages will be installed:
  dbus dmsetup file gir1.2-glib-2.0 libapparmor1 libargon2-0 libbsd0 libcap2
  libcryptsetup12 libdbus-1-3 libdevmapper1.02.1 libedit2
  [...]

这对于安装 ssh 客户端来说是没有必要的。 问题:有没有办法只安装ssh 客户端而不进行任何操作系统更新?

【问题讨论】:

【参考方案1】:

据我所知,apt-get update 将软件包列表更新为最新的,apt-get install ssh 仅安装 ssh 并且不更新“操作系统”(我猜你'正在使用基于 Docker 的运行器)。

您看到的额外包是 ssh 所需的依赖项。或者,请查看gitlab ci docs

【讨论】:

好的,我不知道这些包都属于 ssh。

以上是关于如何在 gitlab CI 构建中仅安装 ssh?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 gitlab-ci.yml 文件中通过 ssh 设置变量值

Gitlab - 无法对 CI 和 CD 构建的远程服务器进行身份验证

如何使用 Gitlab CI 构建 Java Maven 项目?

在 GitLab CI 包构建中缓存 gem

如何利用Gitlab-ci持续部署到远程机器?

如何从 GitLab CI 获取构建状态?