Переименовать файл - Дженкинс - PullRequest
1 голос
/ 28 апреля 2020

Как часть нашего конвейера, мне нужно переименовать файл, прежде чем он будет отправлен в GitHub. Ранее это работало при запуске задания Jenkins на главном узле, но теперь мы запускаем их на агентах

def rename_build_file() {
  print "Append Version Number to File"
  // File without version
  String myFile = "${WORKSPACE_PATH}/release-pipeline/project/dist/myFile.js

  // File with version
  String myFileNew = "${WORKSPACE_PATH}/release-pipeline/project/dist/myfile-1.0.js"

  // Rename File
  new File(myFile).renameTo(new File(myFileNew));
}

В нашем JenkinsFile мы называем helper.rename_build_file(), и это обычно работает

Когда я sshd на агенте я обнаружил, что мне пришлось запустить sudo, чтобы вручную изменить имя файла (не нужно было вводить пароль), могу ли я предположить, что когда задание Jenkins запущено, оно не выполняется как sudo

И если это так, как я могу выполнить эту работу?

Спасибо

1 Ответ

1 голос
/ 28 апреля 2020

При работе с файлами между несколькими агентами следует использовать шаги рабочего процесса конвейера, такие как fileExists, readFile и writeFile. Вы можете использовать комбинацию этих шагов, чтобы создать новый файл с нужным именем в текущем рабочем пространстве.

def sourceFile = "release-pipeline/project/dist/myFile.js"

if (fileExists(file: sourceFile)) {
    def newFile = "release-pipeline/project/dist/myFile-1.0.js"

    writeFile(file: newFile, encoding: "UTF-8", text: readFile(file: sourceFile, encoding: "UTF-8"))
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...