javascriptjenkinsgithubcontinuous-integrationcypress

How to populate author, branch, commit, message in Cypres Dashboard in CI with Jenkins?


I'm trying to get the commit information details in the Cypress Dashboard. I haven't been able to accomplish just yet, but I have made some advances though...

I'll describe what I have done so far:

npm install --save @cypress/commit-info

const { commitInfo } = require('@cypress/commit-info');

module.exports = on => {
  on('file:preprocessor', file => {
    commitInfo().then(console.log);
  });
};

Now I get all the information, author, branch, commit & message, in the terminal!:) However, I still don't have the information details linked to my Cypress Dashboard.

This is what I currently get:

What're the next steps? The documentation is not clear to me...


Solution

  • In our case we run everything inside a docker container. We copy our code into the container but do not copy the .git directory, it's large, time consuming, and we don't need it. @cypress/commit-info assumes there is a .git directory, so since there isn't, it doesn't work.

    We overcame this by setting the values cypress expects explicitly in the cypress run command in our Jenkinsfile:

    def commitMessage = sh(script:"git log --format=%B -n 1 ${env.GIT_COMMIT}", returnStdout:true).trim()
    def commitAuthor = sh(script:"git log --format='%an' -n 1 ${env.GIT_COMMIT}", returnStdout:true).trim()
    def commitEmail = sh(script:"git log --format='%ae' -n 1 ${env.GIT_COMMIT}", returnStdout:true).trim()
    
    def cypressVars = "COMMIT_INFO_BRANCH=${env.GIT_BRANCH} COMMIT_INFO_SHA=${env.GIT_COMMIT} COMMIT_INFO_REMOTE=${env.GIT_URL} COMMIT_INFO_MESSAGE=\"${commitMessage}\" COMMIT_INFO_AUTHOR=\"${commitAuthor}\" COMMIT_INFO_EMAIL=${commitEmail}"
    
    // call cypress however you do and include cypressVars as part of the command