-
Notifications
You must be signed in to change notification settings - Fork 3.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix variable interpolation on different examples #119
base: master
Are you sure you want to change the base?
Conversation
jenkinsfile-examples/android-build-flavor-from-branch/JenkinsFile
Outdated
Show resolved
Hide resolved
jenkinsfile-examples/android-build-flavor-from-branch/JenkinsFile
Outdated
Show resolved
Hide resolved
pipeline-examples/unstash-different-dir/unstashDifferentDir.groovy
Outdated
Show resolved
Hide resolved
pipeline-examples/unstash-different-dir/unstashDifferentDir.groovy
Outdated
Show resolved
Hide resolved
pipeline-examples/configfile-provider-plugin/configFileProvider.groovy
Outdated
Show resolved
Hide resolved
pipeline-examples/configfile-provider-plugin/configFileProvider.groovy
Outdated
Show resolved
Hide resolved
@@ -15,14 +15,14 @@ node { | |||
echo "Building flavor ${flavor}" | |||
|
|||
//build your gradle flavor, passes the current build number as a parameter to gradle | |||
sh "./gradlew clean assemble${flavor}Debug -PBUILD_NUMBER=${env.BUILD_NUMBER}" | |||
sh './gradlew clean assemble${flavor}Debug -PBUILD_NUMBER=${BUILD_NUMBER}' |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
${flavor}
isn't an environment variable (BRANCH_NAME
is) so this won't work. Use withEnv
.
|
||
stage 'Stage Archive' | ||
//tell Jenkins to archive the apks | ||
archiveArtifacts artifacts: 'app/build/outputs/apk/*.apk', fingerprint: true | ||
|
||
stage 'Stage Upload To Fabric' | ||
sh "./gradlew crashlyticsUploadDistribution${flavor}Debug -PBUILD_NUMBER=${env.BUILD_NUMBER}" | ||
sh './gradlew crashlyticsUploadDistribution${flavor}Debug -PBUILD_NUMBER=${BUILD_NUMBER}' |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As above.
@@ -8,5 +8,7 @@ def notifySlack(text, channel) { | |||
channel : channel, | |||
username : "jenkins", | |||
icon_emoji: ":jenkins:"]) | |||
sh "curl -X POST --data-urlencode \'payload=${payload}\' ${slackURL}" | |||
withEnv(["PAYLOAD=${payload}", "SLACK_URL=${slackURL}"]) { | |||
sh 'curl -X POST --data-urlencode "payload=$PAYLOAD" $SLACK_URL' |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
sh 'curl -X POST --data-urlencode "payload=$PAYLOAD" $SLACK_URL' | |
sh 'curl -X POST --data-urlencode "payload=$PAYLOAD" "$SLACK_URL"' |
@@ -27,9 +27,9 @@ node('second-node') { | |||
} | |||
|
|||
// Look, no output directory under the root! | |||
// pwd() outputs the current directory Pipeline is running in. | |||
sh "ls -la ${pwd()}" | |||
// PWD outputs the current directory Pipeline is running in. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Kind of, but not really? The result is the same, assuming you use a shell that supports it, but this won't demonstrate the pwd()
Pipeline feature. The phrasing seems off for the case where we just use a shell built-in feature.
(Granted, both the existing Pipeline and this one are really artificial, neither $PWD
nor pwd()
are actually needed.)
|
||
bat """ | ||
setlocal enabledelayedexpansion | ||
\"${tool 'MSBuild'}\" SolutionName.sln /p:Configuration=Release /p:Platform=\"Any CPU\" /p:ProductVersion=1.0.0.!BUILD_NUMBER! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Did you test this?
Even if it works, I'm unsure whether we should do it like this, as it doesn't provide an example of safe Pipeline authoring. There's still the double quote.
bat """ | ||
setlocal enabledelayedexpansion | ||
\"${tool 'MSBuild'}\" SolutionName.sln /p:Configuration=Release /p:Platform=\"Any CPU\" /p:ProductVersion=1.0.0.!BUILD_NUMBER! | ||
endlocal | ||
""" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Perhaps something like
bat """ | |
setlocal enabledelayedexpansion | |
\"${tool 'MSBuild'}\" SolutionName.sln /p:Configuration=Release /p:Platform=\"Any CPU\" /p:ProductVersion=1.0.0.!BUILD_NUMBER! | |
endlocal | |
""" | |
def msbuild = tool 'MSBuild' | |
bat msbuild + " SolutionName.sln /p:Configuration=Release /p:Platform="Any CPU" /p:ProductVersion=1.0.0.%BUILD_NUMBER%" |
Granted, this theoretically still has the problem described in https://plugins.jenkins.io/safe-batch-environment-filter/ but we know that %BUILD_NUMBER%
is numeric. Perhaps mention it and move on?
I noticed that we have many incorrect examples of how to use Groovy string interpolation on the Pipeline Examples page.
To prevent spreading this common mistake, it would be better to correct it.
See this documentation for more context.