Я хочу создать переменную окружения в Jenkinsfile, которая будет состоять из текущего рабочего пространства (используя переменную окружения WORKSPACE).Затем я хочу передать эту новую переменную в скрипт sh на следующем этапе.
Я пытался объявить переменную следующим образом:
environment {
artefact_path = "${env.WORKSPACE}/temp/unzipped/${artefact_name}/dev"
}
Но после передачи ее сценарию sh:
sh "ansible-playbook -i inventory playbook.yml -e \"artefact_path=${env.artefact_path}\""
я получаю следующий вывод:
+ ansible-playbook -i inventory playbook.yml -e 'artefact_path=C:\nowy_dir\workspace\something/temp/unzipped/something/dev'
PLAY [play] **************************************************************
TASK [task] *********************************************************
fatal: [host]: FAILED! => {"changed": false, "dest": "D:/inetpub/something", "msg": "Get-AnsibleParam: Parameter 'src' has an invalid path 'C:\nowy_dir\\workspace\\something/temp/unzipped/something/dev' specified.", "src": "C:\nowy_dir\\workspace\\something/temp/unzipped/something/dev"}
to retry, use: --limit @/etc/ansible/ansible-scripts/playbook.retry
Как видите, переменная передается с двумя \ вместо одного.Как я могу предотвратить это?
РЕДАКТИРОВАТЬ 1
Я решил изменить способ объявления переменной на:
def get_deploy_path() {
def site = get_site()
def wspace = "${env.WORKSPACE}"
def deploy_path = wspace.toString() + "\\temp\\snapshot\\" + site + "\\"
return deploy_path
}
environment {
deploy_path = get_deploy_path()
}
Теперь у меня проблема с рабочим пространством.Я работаю на двух агентах (первый на Windows, а второй на основе Linux).Мне нужно, чтобы путь был одинаковым как поэтапно в Windows, так и в Linux.Любая идея, как я могу это сделать?