From 7552868b4b2b03bee0679ae5aaab80fec27ebbd4 Mon Sep 17 00:00:00 2001 From: qnio Date: Thu, 29 Oct 2020 11:37:17 +0100 Subject: [PATCH 1/2] feat: add cmake integration --- src/project/cmake/Sequential.groovy | 158 ++++++++++++++++++++++++ src/system/jenkins/configuration.groovy | 2 + 2 files changed, 160 insertions(+) create mode 100644 src/project/cmake/Sequential.groovy diff --git a/src/project/cmake/Sequential.groovy b/src/project/cmake/Sequential.groovy new file mode 100644 index 0000000..88878aa --- /dev/null +++ b/src/project/cmake/Sequential.groovy @@ -0,0 +1,158 @@ +package project.cmake; + +def main(_Targets,_Stage){ + def M_T4d = new system.tools4dev() + def M_System = new system.workspace() + + switch(_Stage){ + case "Configure" : + stage("SCM"){ + try { + withCredentials([usernamePassword(credentialsId: 'jenkins_git_credentials', passwordVariable: 'userPassword', usernameVariable: 'userName')]) { + M_System.wksClean() + M_System.wksClone("http ${env.userName}:${env.userPassword} -force --single-branch","false") + } + } catch (err) { + M_System.wksClean() + error "Clone failed" + } + } + + + break + case "Build" : + lock("${env.M_Project}_${env.SlaveName}"){ + stage("${_Targets}"){ + withCredentials([usernamePassword(credentialsId: "slave_default_user", passwordVariable: 'userPassword', usernameVariable: 'userName')]){ + M_T4d.exec("wks ci-run ${_Targets} ${env.M_CI_Scenario}") + } + + try { + dir("${env.WS_ROOT}/output"){ + archiveArtifacts '**.gz' + M_System.deleteWorkspace() + } + } catch (err) { + echo "Can't Find Archive" + } + } + } + break + case "End" : + stage("End"){ + M_System.wksClean() + } + break + case "Archive" : + stage("Archive"){ + try { + dir("${env.WS_ROOT}/output"){ + archiveArtifacts '**.gz' + } + } catch (err) { + echo "Can't Find Archive" + } + } + break + default : + lock("${env.M_Project}_${env.SlaveName}"){ + // stage("${_Stage.tokenize(' ')[0]}"){ + withCredentials([usernamePassword(credentialsId: "slave_default_user", passwordVariable: 'userPassword', usernameVariable: 'userName')]){ + M_T4d.exec("wks ${_Stage}") + } + // } + } + break + } + + +} + +def GetSlackUrl(){ + return "${env.M_IrcChannel}" +} + + +def notifBuildStarted(){ + def M_Irc= new webServices.irc() + def M_IrcChannelUrl="${GetSlackUrl()}" + M_Message="""{ + "attachments": [ + { + "color": "#313131", + "author_name": "${env.M_JobName} - ${env.M_Version}", + "author_link": "Author Link test", + "author_icon": "https://avatars1.githubusercontent.com/u/16338861?v=3&s=400", + "title": "Build #${env.BUILD_NUMBER} Started", + "title_link": "${env.M_CurrentBuildUrl}", + "fields": [ + { + "title": "Branch", + "value": "${env.BRANCH_NAME}", + "short": true + }, + { + "title": "Changes", + "value": "${env.M_GitSHA7} ${env.M_GitCommiterEmail}", + "short": true + } + ], + "thumb_url": "https://i.imgur.com/DBveMrC.png", + "footer": "Provided By iFeelSmart" + } + ] + }""" + M_Irc.SendMessage("${M_Message}","${M_IrcChannelUrl}") +} + +def notifBuildFailed(_error='unkown'){ + def M_Irc= new webServices.irc() + def M_IrcChannelUrl="${GetSlackUrl()}" + M_Message="""{ + "attachments": [ + { + "color": "#313131", + "author_name": "${env.M_JobName} - ${env.M_Version}", + "author_link": "Author Link test", + "author_icon": "https://avatars1.githubusercontent.com/u/16338861?v=3&s=400", + "title": "Build #${env.BUILD_NUMBER} Failed", + "title_link": "${env.M_CurrentBuildUrl}", + "text": "${_error}", + "fields": [ + { + "title": "Branch", + "value": "${env.BRANCH_NAME}", + "short": true + }, + { + "title": "Changes", + "value": " ${env.M_GitCommiterEmail}", + "short": true + } + ], + "thumb_url": "https://i.imgur.com/d5QJtHJ.png", + "footer": "Provided By iFeelSmart" + } + ] + }""" + M_Irc.SendMessage("${M_Message}","${M_IrcChannelUrl}") +} + +def notifBuildSucceeded(){ + def M_Irc= new webServices.irc() + def M_IrcChannelUrl="${GetSlackUrl()}" + M_Message="""{ + "attachments": [ + { + "color": "#313131", + "author_name": "${env.M_JobName} - ", + "author_link": "Author Link test", + "author_icon": "https://avatars1.githubusercontent.com/u/16338861?v=3&s=400", + "title": "Build #${env.BUILD_NUMBER} On branch ${env.BRANCH_NAME} Succeeded", + "title_link": "${env.M_CurrentBuildUrl}", + "thumb_url": "https://i.imgur.com/ZOvE5Mp.png" + } + ] + }""" + M_Irc.SendMessage("${M_Message}","${M_IrcChannelUrl}") +} diff --git a/src/system/jenkins/configuration.groovy b/src/system/jenkins/configuration.groovy index 3bc5144..487193d 100644 --- a/src/system/jenkins/configuration.groovy +++ b/src/system/jenkins/configuration.groovy @@ -3,6 +3,7 @@ package system.jenkins; def getSlaveObject(_Uuid,_Scheme=''){ // echo "${env.M_CiPipeline} - ${env.JENKINS_URL} - ${_Scheme}" switch(_Uuid){ + case "CMake" : def m_Res=new slaves.main(); return m_Res; break default : m_Res="Unknown" error "getSlaveObject -> Unknown Project ${_Uuid}" @@ -14,6 +15,7 @@ def getSlaveObject(_Uuid,_Scheme=''){ def getSchemeObject(_Project){ switch(_Project){ + case "CMake" : def m_Res=new project.cmake.Sequential(); return m_Res; break default : m_Res="Unknown" error "getSchemeObject -> Unknown scheme ${_Project}" From 1991a8e9b59c3454c5477875a0f7a01f20777132 Mon Sep 17 00:00:00 2001 From: qnio Date: Mon, 16 Nov 2020 10:53:24 +0100 Subject: [PATCH 2/2] chore: remove useless code + add readme --- README.md | 4 +++ src/project/cmake/Sequential.groovy | 45 ++--------------------------- 2 files changed, 7 insertions(+), 42 deletions(-) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..76e082a --- /dev/null +++ b/README.md @@ -0,0 +1,4 @@ +# Tools4Jenkins Generated Lib - Sample + +This library is part of Tools4Jenkins environnment. It should not be edited in other ways than `wks generate-lib` command in Tools4Jenkins repository. +More over this library is the result of *configT4JSample* and *Tools4Jenkins* repository in order to build Jenkins library repository from a generic base and project specific customization diff --git a/src/project/cmake/Sequential.groovy b/src/project/cmake/Sequential.groovy index 88878aa..ae66e09 100644 --- a/src/project/cmake/Sequential.groovy +++ b/src/project/cmake/Sequential.groovy @@ -19,48 +19,17 @@ def main(_Targets,_Stage){ } - break - case "Build" : - lock("${env.M_Project}_${env.SlaveName}"){ - stage("${_Targets}"){ - withCredentials([usernamePassword(credentialsId: "slave_default_user", passwordVariable: 'userPassword', usernameVariable: 'userName')]){ - M_T4d.exec("wks ci-run ${_Targets} ${env.M_CI_Scenario}") - } - - try { - dir("${env.WS_ROOT}/output"){ - archiveArtifacts '**.gz' - M_System.deleteWorkspace() - } - } catch (err) { - echo "Can't Find Archive" - } - } - } break case "End" : stage("End"){ M_System.wksClean() } break - case "Archive" : - stage("Archive"){ - try { - dir("${env.WS_ROOT}/output"){ - archiveArtifacts '**.gz' - } - } catch (err) { - echo "Can't Find Archive" - } - } - break default : lock("${env.M_Project}_${env.SlaveName}"){ - // stage("${_Stage.tokenize(' ')[0]}"){ withCredentials([usernamePassword(credentialsId: "slave_default_user", passwordVariable: 'userPassword', usernameVariable: 'userName')]){ M_T4d.exec("wks ${_Stage}") } - // } } break } @@ -68,14 +37,8 @@ def main(_Targets,_Stage){ } -def GetSlackUrl(){ - return "${env.M_IrcChannel}" -} - - def notifBuildStarted(){ def M_Irc= new webServices.irc() - def M_IrcChannelUrl="${GetSlackUrl()}" M_Message="""{ "attachments": [ { @@ -102,12 +65,11 @@ def notifBuildStarted(){ } ] }""" - M_Irc.SendMessage("${M_Message}","${M_IrcChannelUrl}") + M_Irc.SendMessage("${M_Message}","${env.M_IrcChannel}") } def notifBuildFailed(_error='unkown'){ def M_Irc= new webServices.irc() - def M_IrcChannelUrl="${GetSlackUrl()}" M_Message="""{ "attachments": [ { @@ -135,12 +97,11 @@ def notifBuildFailed(_error='unkown'){ } ] }""" - M_Irc.SendMessage("${M_Message}","${M_IrcChannelUrl}") + M_Irc.SendMessage("${M_Message}","${env.M_IrcChannel}") } def notifBuildSucceeded(){ def M_Irc= new webServices.irc() - def M_IrcChannelUrl="${GetSlackUrl()}" M_Message="""{ "attachments": [ { @@ -154,5 +115,5 @@ def notifBuildSucceeded(){ } ] }""" - M_Irc.SendMessage("${M_Message}","${M_IrcChannelUrl}") + M_Irc.SendMessage("${M_Message}","${env.M_IrcChannel}") }