Я использую Perforce, работающую в трубопроводе Jenkins.Я извлекаю из Perforce следующее:
checkout scm: [
$class: 'PerforceScm',
credential: 'me',
populate: [
$class: 'AutoCleanImpl',
delete: true,
modtime: false,
pin: '',
quiet: true,
replace: true
],
workspace: [
$class: 'ManualWorkspaceImpl',
charset: 'utf8',
name: 'jenkins-${NODE_NAME}-${JOB_NAME}',
pinHost: false,
spec: [
allwrite: true,
clobber: false,
compress: false,
line: 'LOCAL',
locked: false,
modtime: false,
rmdir: false,
streamName: '',
view: '''//depot/main/... //jenkins-${NODE_NAME}-${JOB_NAME}/assets/...
-//depot/main/pre_ar_archive/... //jenkins-${NODE_NAME}-${JOB_NAME}/assets/pre_ar_archive/...
-//depot/main/tools/... //jenkins-${NODE_NAME}-${JOB_NAME}/assets/tools/...'''
]
]
]
Я использую настраиваемое сопоставление, чтобы найти нужные мне файлы в определенной папке и исключить ненужные папки.
После извлечения мойЭтап сборки запускает скрипт Python для обработки активов.Этот скрипт использует p4python.Как только это будет сделано, он будет представлен.Однако при отправке я получаю эту ошибку:
"Нет файлов для отправки. \ N Ошибка отправки - исправьте вышеприведенные проблемы, затем используйте 'p4 submit -c 1234'"
Проблемаэто:
Ошибка выполнения - невозможно отправить из не потокового клиента
Если я запускаю p4 client
, я вижу, что у меня не определен поток,Если я изменю свою проверку, чтобы определить 'streamName', то обнаружу, что она будет использовать представление по умолчанию, которое по существу
//depot/main/... //jenkins-${NODE_NAME}-${JOB_NAME}/...
Таким образом, я теряю свое отображение.
Есть ли какое-то решение для этого?
Одна вещь, которую я мог бы сделать, это просто использовать p4v для создания нужного мне клиента, но затем это заставляет меня просто вызывать все мои команды выполнения, которые в противном случае выполняет плагин.
Я пытался использовать клиент p4, чтобы отобразить его, но когда я это делаю, он также меняет представление.Документация p4 указывает, что это будет сделано (используйте представление по умолчанию).