Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

### Added
* add devcontainer setup ([#1172](https://github.com/opendevstack/ods-jenkins-shared-library/issues/1172))
* Add support for git submodules in Quickstarters ([#1181](https://github.com/opendevstack/ods-jenkins-shared-library/pull/1181))

### Changed
* Enhance SSDS Document Generation Performance using New Atlassian APIs ([#1084](https://github.com/opendevstack/ods-jenkins-shared-library/issues/1084))
Expand Down
2 changes: 1 addition & 1 deletion src/org/ods/quickstarter/Pipeline.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ class Pipeline implements Serializable {
// Execute user-defined stages.
block(context)

new PushToRemoteStage(script, context).execute()
new PushToRemoteStage(script, context, config).execute()
}
}

Expand Down
16 changes: 15 additions & 1 deletion src/org/ods/quickstarter/PushToRemoteStage.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -48,10 +48,24 @@ class PushToRemoteStage extends Stage {
rm -rf \$clonedGitFolderName
git config user.email "undefined"
git config user.name "ODS System User"
""",
label: 'Copy quickstarter files'
)
config?.gitSubModules?.each { submodule ->
script.sh(
script: """
echo "Adding ${submodule.name} git submodule"
git submodule add -b ${submodule.branch} ${submodule.url} ${submodule.folder}
""",
label: 'Add submodule to quickstarter files'
)
}
script.sh(
script: """
git add --all .
git commit -m "Initial OpenDevStack commit"
""",
label: 'Copy and commit quickstarter files'
label: 'Commit quickstarter files'
)
}
script.echo("Pushing quickstarter git repo to ${context.gitUrlHttp}")
Expand Down
11 changes: 11 additions & 0 deletions test/groovy/org/ods/PipelineScript.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,9 @@ class PipelineScript {
body()
}

def usernamePassword(def foo) {
}

def sh(def foo) {
return "test"
}
Expand Down Expand Up @@ -96,10 +99,18 @@ class PipelineScript {

}

def writeFile (Map args) {

}

def readJSON (Map args) {

}

def dir(def foo, Closure body) {
body()
}

def withSonarQubeEnv(String conf, Closure closure) {
closure()
}
Expand Down
55 changes: 55 additions & 0 deletions test/groovy/org/ods/quickstarter/PushToRemoteStageSpec.groovy
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
package org.ods.quickstarter

import org.ods.PipelineScript

import util.SpecHelper


class PushToRemoteStageSpec extends SpecHelper {
PushToRemoteStage pushToRemoteStage
IContext context
PipelineScript script

def setup() {
script = Spy(new PipelineScript())
context = new Context([targetDir: 'fake-dir', cdUserCredentialsId: 'credentials-id', bitbucketUrl: 'http://fake-url'])
}

def "successful execution without git submodules"() {
given:
pushToRemoteStage = Spy(new PushToRemoteStage(script, context, [:]))

when:
pushToRemoteStage.run()

then:
1 * script.fileExists(_) >> false
1 * script.echo("Initializing quickstarter git repo ${context.targetDir} @${context.gitUrlHttp}")
1 * script.sh({ it.label == 'Copy quickstarter files' })
0 * script.sh({ it.label == 'Add submodule to quickstarter files' })
1 * script.sh({ it.label == 'Commit quickstarter files' })
1 * script.echo("Pushing quickstarter git repo to ${context.gitUrlHttp}")
1 * script.sh({ it.label == 'Push to remote' })
}

def "successful execution with git submodules"() {
given:
pushToRemoteStage = Spy(new PushToRemoteStage(script, context, [
gitSubModules: [
[name: 'submodule', url: 'https://fake-submodule.git', branch: 'master', folder: 'src/code']
],
]))

when:
pushToRemoteStage.run()

then:
1 * script.fileExists(_) >> false
1 * script.echo("Initializing quickstarter git repo ${context.targetDir} @${context.gitUrlHttp}")
1 * script.sh({ it.label == 'Copy quickstarter files' })
1 * script.sh({ it.label == 'Add submodule to quickstarter files' })
1 * script.sh({ it.label == 'Commit quickstarter files' })
1 * script.echo("Pushing quickstarter git repo to ${context.gitUrlHttp}")
1 * script.sh({ it.label == 'Push to remote' })
}
}
Loading