Issue
I'm using the new Jenkins2 pipeline to build a composed project with:
- node frontend
- php backend
both are in different repositories hence, the need to use pipeline to sync them, compile, and prepare them to deploy. I cannot find a simple way to deploy using FTP.
My script looks something like this:
node {
// uncomment these 2 lines and edit the name 'node-4.4.5' according to what you choose in configuration
def nodeHome = tool name: 'NodeJS 7.2.1', type: 'jenkins.plugins.nodejs.tools.NodeJSInstallation'
env.PATH = "${nodeHome}/bin:${env.PATH}"
stage("front") {
dir('front') { // switch to subdir
git url: ...
sh "npm install"
sh "npm run build --prod"
sh "cp -R * ../dist"
}
}
stage("back") {
dir('back') {
git url: ...
sh 'curl -sS https://getcomposer.org/installer | php'
sh 'php composer.phar install'
sh "cp -R * ../dist"
}
}
stage("upload via ftp") {
// IM NOT SURE WHAT TO DO HERE
}
}
UPDATE 2016-12-16
To clarify what I need is a way to run something similar to "Publish via FTP" like older versions of Jenkins.
Solution
The Jenkins Publish Over FTP plugin has Pipeline support as of version 1.15.
A snippet from my Jenkinsfile that sends some files to our server:
stage('Upload')
{
ftpPublisher alwaysPublishFromMaster: true, continueOnError: false, failOnError: false, publishers: [
[configName: 'YOUR_CONFIG_HERE', transfers: [
[asciiMode: false, cleanRemote: false, excludes: '', flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: "YOUR_DIRECTORY_HERE", remoteDirectorySDF: false, removePrefix: '', sourceFiles: '**.exe, **.txt']
], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: true]
]
}
I generated this code snippet using the Jenkins snippet generator found under "Pipeline Syntax". Choose "ftpPublisher: send build artifacts over FTP" in the menu at "Sample Step", enter all details in the form and press "Generate Pipeline Script".
Answered By - frankhermes
Answer Checked By - Willingham (JavaFixing Volunteer)