如何在Gitlab CI中使用rsync将构建文件同步到另一台服务器?

3
我不清楚如何使用rsync将Gitlab CI(托管在https://ci.gitlab.com)上的构建文件传输到我的个人服务器。

我已经设置了1个测试1个部署任务。

部署标签页下,我输入了bash命令:

  1. 安装rsync
  2. 更新软件包
  3. 最后使用rsync命令通过SSH将文件传输到我的个人服务器。

当我输入私人个人服务器的SSH凭据(开启了冗长模式),看起来SSH密钥是问题所在。在Gitlab中,我已经建立了部署密钥(用于挂钩 - 已测试并正常工作)。

我在哪里可以找到Gitlab部署实例的公共SSH密钥,以便我可以将该密钥安装在我的服务器上?

以下是在Gitlab CI部署作业脚本窗格中输入的确切脚本内容:

# Run as root
(
set -e
set -u
set -x
apt-get update -y
apt-get -y install rsync
)
git clone https://github.com/bla/deployments.git $HOME/deploy/deployments
SVR_WEB1_WEBSERVER="000.11.22.333"
USER1="franklin"
GROUP1="team1"
FROM_DIR="/gitlab-ci-runner/tmp/builds/myrepo-1/"
DEST1="subdomains/gitlab/myrepo"
EXCLUSIONS_LIST="${HOME}/deploy/deployments/exclusions/exclusions.txt"
ssh -v "$USER1@$SVR_WEB1_WEBSERVER"
/usr/bin/rsync -avzh --progress --delete -e ssh --group=$GROUP1 -p --exclude-from "$EXCLUSIONS_LIST" "$FROM_DIR" "$USER1@$SVR_WEB1_WEBSERVER:$DEST1"

我按照在 GitLab 上找到的一些说明进行尝试,但也没有成功。https://gitlab.com/gitlab-org/gitlab-ci-multi-runner/issues/2386 - lrkwz
1个回答

1
提供您的私有SSH密钥是危险的,除非您使用自己的GitLab-CI运行程序进行部署。这就是为什么最好使用rsync模块

不会向任何人或任何服务(例如Gitlab)提供我的私人SSH密钥。请理解这不是一个运行Gitlab/Gitlab CI的私人服务器,而是他们的Gitlab服务器,我使用它来部署。希望这能够澄清一些事情。如果您有从他们的Gitlab-CI服务rsync文件到私人服务器的经验,请提供一个示例。谢谢。 - vsiege
非常抱歉,我误读了您想使用的密钥类型。而且我从未使用过官方的gitlab/ci来托管/构建项目。无论如何,我相信每次提交时,runner都会创建一个全新的实例,该实例既没有私钥也没有公钥。在您的gitlab.yml中,您必须使用ssh-keygen命令创建它们。但是然后您将发现上传公钥到服务器存在问题。 请在之前提供的链接中查看,其中有一些有用的示例说明如何以守护程序模式运行rsync。 还有一个快速入门指南(http://transamrit.net/docs/rsync/)。 它将帮助您摆脱密钥。 - Theodor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接