Hi guys,
On XWiki we have a Jenkins pipeline committed in our SCM (in a Jenkinsfile)
which looks like this:
def globalMavenOpts = '-Xmx1536m -XX:MaxPermSize=512m -Xms256m'
stage ('Commons Builds') {
parallel(
'main': {
node {
// Build, skipping quality checks so that the result of the build can
be sent as fast as possible to the devs.
// In addition, we want the generated artifacts to be deployed to our
remote Maven repository so that developers
// can benefit from them even though some quality checks have not yet
passed. In // we start a build with the
// quality profile that executes various quality checks.
xwikiBuild('Main') {
mavenOpts = globalMavenOpts
profiles = 'legacy,integration-tests'
properties = '-Dxwiki.checkstyle.skip=true
-Dxwiki.surefire.captureconsole.skip=true -Dxwiki.revapi.skip=true'
}
}
// If the "main" build has succeeded then trigger the rendering pipeline
build job: "../xwiki-rendering/${env.BRANCH_NAME}", wait: false
},
'testrelease': {
node {
// Simulate a release and verify all is fine, in preparation for the
release day.
xwikiBuild('TestRelease') {
mavenOpts = globalMavenOpts
goals = 'clean install'
profiles = 'legacy,integration-tests'
properties = '-DskipTests -DperformRelease=true -Dgpg.skip=true
-Dxwiki.checkstyle.skip=true'
}
}
},
'quality': {
node {
// Run the quality checks.
xwikiBuild('Quality') {
mavenOpts = globalMavenOpts
goals = 'clean install jacoco:report'
profiles = 'quality,legacy'
}
}
},
'checkstyle': {
node {
// Build with checkstyle. Make sure "mvn checkstyle:check" passes so
that we don't cause false positive on
// Checkstyle side. This is for the Checkstyle project itself so that
they can verify that when they bring
// changes to Checkstyle, there's no regression to the XWiki build.
xwikiBuild('Checkstyle') {
mavenOpts = globalMavenOpts
goals = 'clean test-compile checkstyle:check'
profiles = 'legacy'
}
}
}
)
// If the job is successful, trigger the rendering job
if (currentBuild.result == 'SUCCESS') {
build job: "../xwiki-rendering/${env.BRANCH_NAME}", wait: false
}
}
So we trigger several maven builds whenever a commit is pushed to GitHub
(the xwikiBuild() step is located in a shared pipeline library of ours).
Now I have the need to trigger another build in the parallel() step but
that build should execute only once per day (for example). Is there a way
to do this?
I've googled and the only thing I've found is using the following syntax:
properties([pipelineTriggers([cron('H
23 * * *')])])
However it's not clear to me how that would work: whenever a commit happens
the JenkinsFile gets executed and thus if I have the following, I guess
it's going to execute the build at each commit and not only once per day?
parallel(
...
'quality-long': {
node {
properties([pipelineTriggers([cron('H 23 * * *')])])
xwikiBuild('Quality checks taking long') {
profiles = '....'
properties = '....'
}
},
...
I'd really like to not have to manually create a job using the Jenkins UI
and instead have that job automatically created by the pipeline script.
Is that possible?
Thanks a lot
-Vincent Massol
--
You received this message because you are subscribed to the Google Groups
"Jenkins Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/jenkinsci-users/2c99dc1f-6092-4607-bd00-314b3ba6e366%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.