A Jenkinsfile uses a checkout scm
command to retrieve the most recent commit from a linked Bitbucket respository.
What specific syntax needs to be added to the Jenkinsfile in order for the Jenkinsfile to be able to extract the
repositorySlug
, andprojectKey
from the source repository as variables, and then print out those variables as console output?**
Sample Jenkinsfile:
I tried to incorporate ideas from the Jenkins Pipeline SCM Step Documentation in the following example Jenkinsfile whose resulting logs will be shown further below:
node { // Clean workspace before doing anything deleteDir() try { stage ('Clone') { def commitHash = checkout(scm).GIT_COMMIT sh "echo 'Commit hash is: ${commitHash}'" println commitHash def repName = checkout(scm).repoName sh "echo 'Repository Name is: ${repName}'" println repName def rep = checkout(scm).repo sh "echo 'Repository is: ${rep}'" println rep def nm = checkout(scm).name sh "echo 'Name is: ${nm}'" println nm } } catch (err) { currentBuild.result = 'FAILED' throw err } }
Current Output:
Here is the console output that Jenkins generates when running the preceding Jenkinsfile:
General SCM<1s echo 'Commit hash is: bd279b90ad9f78ee8abb4d4fbf2a621d42150dd3'― Shell Script<1s bd279b90ad9f78ee8abb4d4fbf2a621d42150dd3― Print Message<1s General SCM<1s > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url http://<bitbucket-ip-on-lan>:7990/scm/JSP/jenkinsfile-simple-repo.git # timeout=10 Fetching without tags Fetching upstream changes from http://<bitbucket-ip-on-lan>:7990/scm/JSP/jenkinsfile-simple-repo.git > git --version # timeout=10 using GIT_ASKPASS to set credentials > git fetch --no-tags --progress http://<bitbucket-ip-on-lan>:7990/scm/JSP/jenkinsfile-simple-repo.git +refs/heads/sample-issue-branch:refs/remotes/origin/sample-issue-branch Checking out Revision bd279b90ad9f78ee8abb4d4fbf2a621d42150dd3 (sample-issue-branch) > git config core.sparsecheckout # timeout=10 > git checkout -f bd279b90ad9f78ee8abb4d4fbf2a621d42150dd3 Commit message: "name" [Bitbucket] Notifying commit build result echo 'Repository Name is: null'― Shell Script<1s null― Print Message<1s General SCM<1s echo 'Repository is: null'― Shell Script<1s null― Print Message<1s General SCM<1s echo 'Name is: null'― Shell Script<1s null― Print Message<1s
Note that the projectKey
and the repositorySlug
are available in the logs above in the form of:
http://<bitbucket-ip-on-lan>:7990/scm/JSP/jenkinsfile-simple-repo.git
Restated Question:
For the data above, what specific syntax would need to be added to the Jenkinsfile in order for the resulting Jenkins logs to print out the following:
The projectKey is: JSP The repositorySlug is: jenkinsfile-simple-repo