Jenkins git checkout - поместите папку .git в другое место
Мы выполняем развертывание в папку клиента на сервере клиента с помощью Jenkins через VPN нескольких репозиториев git. Я установил опции "Выписка из подкаталога" и "Редкая выписка".
Нам нужно развернуть только несколько файлов из одного общего репозитория (другие файлы - частные). Но если внутри находится папка.git, другие файлы просмотреть несложно.
Для git можно поместить файл.git в папку репо и указать в этом файле место в папке.git, например:
my-repo-folder$ cat .git
gitdir: /home/user1/another-my-repo-folder.git
(подробнее о gitdir см. здесь)
Можно ли установить другое место в папке.git для плагина git Jenkins, как указано выше?
2 ответа
Другое предложение:
git
не является инструментом развертывания (во всяком случае, не лучшим).
Если вам нужно выбрать некоторые файлы из репо и скопировать только их на сервер, вы можете:
- напишите сценарий (возможно, выполненный Дженкинсом), который будет запускаться на сервере сборки, который создает архив с файлами, которые вы хотите
- скопируйте этот архив на рабочий сервер в инфраструктуре клиента
Я нашел обходной путь: я создал сценарий пост-проверки ( howto) в локальном репо, а также оформил заказ в другое рабочее пространство внутри них ( howto) и написал внутри них файл.git. В результате Дженкинс извлекает и выполняет разреженную проверку с помощью плагина 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