1
我們希望將我們的項目拆分爲更小的部分。我們目前的CI過程經歷了一個短暫的測試階段,然後運行一個部署腳本。但是,如果子項目中沒有任何變化,我們不希望爲此通過構建。如果事情發生變化,只能構建項目
沒有管道的Jenkins支持SCM配置中的排除(我們使用git),並基於此,您可以配置特定的作業運行。但是,當使用管道時,我怎麼知道,如果我應該建立這個部分?如何訪問受上次推送影響的路徑?
目前我們的腳本非常簡單,我們希望儘可能簡單。
我們玩弄scripted和declarative的語法,但找不到一個好的解決方案。
聲明:
#!groovy
pipeline {
agent any
tools {
nodejs '8.1'
}
stages {
stage('Checkout') {
steps {
checkout scm
}
}
# Only continue, if something has changed
stage('Install') {
steps {
sh 'npm install'
}
}
stage('Test') {
steps {
sh 'npm run test-jenkins'
}
post {
always {
junit "artifacts/test/report.xml"
}
}
}
}
}
腳本:
#!groovy
node {
def nodejs = tool name: '8.1', type: 'jenkins.plugins.nodejs.tools.NodeJSInstallation'
env.PATH = "${nodejs}/bin:${env.PATH}"
stage('Checkout') {
checkout scm
}
# Only continue, if something has changed
stage('Install') {
sh 'npm install'
}
stage('Test') {
try {
sh 'npm run test-jenkins'
} finally {
junit "artifacts/test/report.xml"
}
}
}
後,使標記到當前提交。在下一個版本中,比較新的提交和標記。如果只有它們不是相同的提交,則繼續(如果僅關心文件內容,則繼續)。新構建完成後,將標記從之前的提交重置爲當前提交。 – ElpieKay
@ElpieKay這工作!非常感謝你。我會把它寫出來並作爲答案發布。 – Kariem
沒關係。很高興它有幫助。 =) – ElpieKay