2016-12-07 3 views
0

Как часть конструкции конвейера Jenkins, я проверяю свое репо (которое копирует в мое рабочее пространство, которое я вижу). Затем я изменяю файл в моей рабочей области, и тогда я хотел бы вернуться к моему реестру github. Я просто обновить номер версии в podspec файлеНажатие измененного файла в рабочем пространстве на github

node { 
    stage 'Update File' 
    env.WORKSPACE = pwd() 
    File file = new File("${env.WORKSPACE}/ios.podspec"); 
    fileText = file.text; 
    regex = "(spec.version\\s.*\$)"; 
    fileText = fileText.replaceAll(regex, "spec.version    = '${VERSION}'\n".trim()); 
    file.write(fileText); 

} 

Как я могу взять этот файл и нажать его обратно к моему мерзавца репо

Если кто-то может помочь, что была бы оценена

Благодаря

+0

является то, что файлы, перечисленные в '.gitignore'? Также вы можете изменить этот файл в своем локальном файле и зафиксировать изменения? – nullpointer

+0

нет, это не так, поэтому я не уверен, что мне не хватает, и да, я могу обновить локально. – Richlewis

+0

Достаточно просто зафиксировать файл и нажать на изменения. У вас есть локально проверенная версия, вам может потребоваться установить ваш пульт дистанционного управления (я думаю, что по умолчанию он должен быть отсоединен от пульта), но кроме этого он просто нормальный git. Выберите инструмент, подходящий для вашего конвейера, и выполните команды. – gpgekko

ответ

1
sh "git checkout $branch" 
sh "git add <your file>" 
sh "git commit -m '...'" 
sh "git push $url $branch" 

хитрая часть, чтобы установить URL с соответствующими учетными данными Я использую этот метод -

def getRemoteUrlWithCredentials(credentialsId) { 
    withCredentials([[$class: 'UsernamePasswordMultiBinding', credentialsId: credentialsId, usernameVariable: 'GIT_USERNAME', passwordVariable: 'GIT_PASSWORD']]) { 
     def scmUrl = scm.getUserRemoteConfigs()[0].getUrl() 
     scmUrl = scmUrl.substring(scmUrl.indexOf("github.com")) 
     return "https://${GIT_USERNAME}:${GIT_PASSWORD}@${scmUrl}" 
    } 
} 

где credentialId - это ваш git credentialsId. Вам нужно будет добавить scm.getUserRemoteConfigs в список одобрения в разделе Управление Jenkins -> В одобрении протокола процесса.

И последняя часть - я не уверен, если это необходимо, но, возможно, вам нужно установить конфигурационный user.email и user.name ->

def setupConfig(email, userName) { 
    sh "git config user.email $email" 
    sh "git config user.name $userName" 
} 
+0

спасибо, в конце концов, просто используя простые команды git, не нужно создавать метод – Richlewis

+0

С ssh или https – Amityo

+1

ssh как уже получил эту настройку с jenkins – Richlewis

Смежные вопросы