Я использую Jenkins на GKE с плагином Kubernetes. Я добавил контейнер postgres в качестве коляски с контейнером агента jnlp. Он доступен на localhost:5432
от агента. Я также монтирую в агенте сокет Docker узла GKE и мусорное ведро, чтобы я мог раскрутить «родственные» контейнеры. Это тоже работает нормально.
Теперь я хочу сделать следующее:
pipeline {
stages {
stage('pytest') {
agent {
docker {
image "<image created in a previous stage>"
args '--add-host=database:\$(hostname\\ -i)'
}
}
steps {
// use postgres in sidecar of jnlp agent
// e.g. on `database:5432`
}
}
}
}
Выполнение этого вручную прекрасно работает, но в Jenkins вышеописанное не работает с:
Error: invalid argument "database:$(hostname -i)" for --add-host=database:$(hostname -i): invalid IP address in add-host: "$(hostname -i)"
У кого-нибудь есть идеи о том, как избежать вышеуказанного? Или, может быть, совершенно другой подход к этой проблеме?
У меня нет доступного Docker 18.03+ на GKE (застрял на 17.03.2-ce
), поэтому я не могу сделать host.docker.internal
docker run --network host
тоже ничего не делает.