1

我们使用 Jenkins 通过几个 git repos 的 VPN 部署到客户端服务器上的客户端文件夹。我已经设置了“签出到子目录选项”和“稀疏签出”。

我们只需要部署一个公共存储库的一些文件(其他文件是私有的)。但是如果.git文件夹在里面,查看其他文件就不难了。

对于 git,可以将 .git 文件放入 repo 文件夹并在此文件中指定 .git 文件夹的位置,例如:

my-repo-folder$ cat .git
gitdir: /home/user1/another-my-repo-folder.git

在此处查看有关 gitdir 的更多信息)

是否可以像上面那样为 git Jenkins 插件设置 .git 文件夹的另一个位置?

更新。这是上述的部署配置: 部署配置(稀疏结帐)

4

2 回答 2

1

另一个建议:

git不是一个部署工具(反正不是一个好工具)。

如果您需要从您的 repo 中选择一些文件,并仅将其复制到服务器,您可以:

  • 编写一个脚本(可能由 Jenkins 执行),它将在构建服务器上运行,该服务器使用您想要的文件构建一个存档
  • 将此存档复制到客户端基础架构中的生产服务器
于 2020-08-19T12:10:24.370 回答
0

我找到了解决方法:我在本地 repo 中创建了结帐后脚本(howto),并结帐到其中的不同工作区(howto)并在其中写入 .git 文件。结果,Jenkins 在本地 repo 中通过 git 插件提取并执行稀疏结帐,然后结帐脚本完成其余工作。

结帐后脚本:

#!/bin/sh
if [[ "$GIT_POST_CHECKOUT_SCRIPT_CALL" -ne 1 ]]
then
    GIT_WORK_TREE=S:/clients-repo-path/ # remote share should be connected as a drive for Windows
    GIT_POST_CHECKOUT_SCRIPT_CALL=1 # prevent infinite loop
    export GIT_POST_CHECKOUT_SCRIPT_CALL
    CUR_DIR=`pwd`
    CUR_DIR="${CUR_DIR:1:1}:${CUR_DIR:2}" # translate nix path to git for Windows. Remove for linux
    echo "gitdir: $CUR_DIR/.git" > "$GIT_WORK_TREE/.git" # now may run git commands in clients repo
    export GIT_WORK_TREE # git option for checkout
    git checkout -f # checkout to client's path
fi

于 2020-09-03T13:33:05.013 回答