#git #jenkins #gitea
#git #дженкинс #gitea
Вопрос:
Я динамически создаю задания jenkins, используя config.xml файл в качестве шаблона. По сути, я хочу добиться того, чтобы, когда кто-то нажимает на репозиторий, это запускало задание в jenkins. Затем это задание должно извлечь образ docker, создать контейнер и клонировать репозиторий, к которому он подключен. Идея состоит в том, чтобы избежать загрузки любого вредоносного кода на наш сервер. Вместо этого он будет загружен внутри контейнера docker, запустите исполняемый файл внутри контейнера, а затем контейнер будет удален.
Проблема в том, что всякий раз, когда кто-то переходит в репозиторий git, задание jenkins автоматически клонирует репозиторий. Есть ли способ сохранить привязку к репозиторию, но не допустить его клонирования?
Мы не используем файл jenkins, потому что он должен быть внутри репозитория, и любой может его изменить, поэтому мы создаем задание jenkins из config.xml шаблон.
Я читал, что опция skipdefaultcheckout существует внутри jenkinsfile, чтобы остановить клонирование репозитория? Возможно ли настроить это внутри config.xml ? Это правильный вариант для решения того, что я пытаюсь сделать?
Ответ №1:
Предположение: соответствующие плагины docker уже установлены на Jenkins.
Установите плагин ssh-agent для перехода ssh credentials
в контейнер docker для клонирования репозитория внутри docker.
Пример заводного фрагмента для проверки репозитория в контейнере docker, который может использоваться.
withDockerContainer(args: '-u root', image: "${image}") {
sshagent(['jenkins-credentials']) {
sh "mkdir ~/.ssh/ amp;amp; echo -e 'Host *n StrictHostKeyChecking no' > ~/.ssh/config amp;amp; cat ~/.ssh/config amp;amp; ssh-add -l"
git changelog: false, credentialsId: '<ID>', poll: false, url: "<REPO URL>"
sh 'echo "repo cloned inside container !!!"'
}
}
Комментарии:
1. используется ли groovy внутри файла Jenkins? Мы не используем jenkinsfile. Можно ли этого достичь без него?
2. да, это без Дженкинсфайла. Вы можете проверить этот пример задания конвейера jenkins.io/pipeline/getting-started-pipelines /…
3. Я динамически генерирую задания, используя config.xml шаблон. Можно ли настроить внутри config.xml ?