Проблема, с которой вы столкнулись при использовании `git` через `ssh` в Jenkins, может быть связана с тем, что `git` ожидает ввода данных, которых нет в вашем скрипте. Когда вы запускаете команду `git log` через `ssh`, она может пытаться получить доступ к терминалу для отображения информации, что может вызвать зависание в Jenkins.
Вот несколько предложений по решению проблемы:
### 1. Добавьте флаг `--no-pager`
Попробуйте добавить флаг `--no-pager` к вашей команде `git`. Это предотвратит использование pager'а (например, `less`), который требует интерфейса терминала:
```groovy
pipeline {
agent any
stages {
stage('SSH') {
steps {
sshagent(credentials: ['docker-work']) {
sh "ssh -tt -o StrictHostKeyChecking=no [email protected] git --git-dir=/home/CloudToDoList/CloudToDoList/.git --no-pager log"
}
}
}
}
}
```
### 2. Используйте `-q` или `-n`
Если вам не нужно выводить длинный журнал, можете использовать флаги `-q` (quiet mode) или `-n` для ограничения количества выводимых коммитов:
```groovy
pipeline {
agent any
stages {
stage('SSH') {
steps {
sshagent(credentials: ['docker-work']) {
sh "ssh -tt -o StrictHostKeyChecking=no [email protected] git --git-dir=/home/CloudToDoList/CloudToDoList/.git log -n 10"
}
}
}
}
}
```
### 3. Используйте `-C` для указания директории
Можно указать директорию с помощью параметра `-C`, если это подходит для вашего случая. Это позволяет не использовать `--git-dir`, а просто указать директорию, которая содержит `.git`:
```groovy
pipeline {
agent any
stages {
stage('SSH') {
steps {
sshagent(credentials: ['docker-work']) {
sh "ssh -tt -o StrictHostKeyChecking=no [email protected] git -C /home/CloudToDoList/CloudToDoList log --no-pager"
}
}
}
}
}
```
### 4. Логирование вывода
Если проблема сохраняется, добавьте логирование вывода команды в Jenkins, чтобы лучше понять, что происходит:
```groovy
pipeline {
agent any
stages {
stage('SSH') {
steps {
sshagent(credentials: ['docker-work']) {
script {
def output = sh(script: "ssh -tt -o StrictHostKeyChecking=no [email protected] git -C /home/CloudToDoList/CloudToDoList log --no-pager", returnStdout: true)
echo "${output}"
}
}
}
}
}
}
```
### 5. Проверка настроек git на сервере
Убедитесь, что `git` на вашем сервере настроен правильно и что SSH-ключи работают, а также проверьте, нет ли дополнительных параметров или настроек, которые могут влиять на выполнение команд.
Если ни один из вышеперечисленных методов не решает проблему, возможно, стоит проверить логи Jenkins для получения дополнительных подсказок о том, что могло пойти не так.