84 lines
2.5 KiB
Groovy
84 lines
2.5 KiB
Groovy
@Library('homelab') _
|
|
|
|
import vn.fireflylab.pipeline.BranchStrategy
|
|
|
|
// ── Stage functions ────────────────────────────────────────────────
|
|
def executeInstallTest() {
|
|
stage('Install & Test') {
|
|
container('node') { runNodeTest() }
|
|
}
|
|
}
|
|
|
|
def executeBuildPush() {
|
|
stage('Build & Push') {
|
|
container('docker') {
|
|
def tag = BranchStrategy.imageTag(env.BRANCH_NAME)
|
|
env.IMAGE_TAG = tag
|
|
dockerBuildPush(appName: 'tictactoe', tag: tag)
|
|
}
|
|
}
|
|
}
|
|
|
|
def executeScanCodeQuality() {
|
|
stage('Scan Code Quality') {
|
|
container('sonar') {
|
|
scanCodeQuality(projectKey: 'tictactoe')
|
|
}
|
|
}
|
|
}
|
|
|
|
def executeBumpChart() {
|
|
stage('Bump Helm Chart') {
|
|
container('tools') {
|
|
bumpHelmChart(imageTag: env.IMAGE_TAG)
|
|
gitCommitPush(
|
|
files: ['manifest/helm/Chart.yaml', 'manifest/helm/values.yaml'],
|
|
message: "ci: bump tictactoe chart to ${env.IMAGE_TAG}"
|
|
)
|
|
}
|
|
}
|
|
}
|
|
|
|
// ── Pipeline ───────────────────────────────────────────────────────
|
|
podTemplate(yaml: homelabK8sAgent(withTools: true, withSonar: true)) {
|
|
node(POD_LABEL) {
|
|
withEnv(['DOCKER_HOST=tcp://localhost:2375']) {
|
|
checkout scm
|
|
|
|
BranchStrategy.prStrategy(env.BRANCH_NAME) {
|
|
executeInstallTest()
|
|
}
|
|
|
|
BranchStrategy.featureStrategy(env.BRANCH_NAME) {
|
|
executeInstallTest()
|
|
executeScanCodeQuality()
|
|
executeBuildPush()
|
|
}
|
|
|
|
BranchStrategy.developStrategy(env.BRANCH_NAME) {
|
|
executeInstallTest()
|
|
executeScanCodeQuality()
|
|
executeBuildPush()
|
|
}
|
|
|
|
BranchStrategy.mainStrategy(env.BRANCH_NAME) {
|
|
executeInstallTest()
|
|
executeScanCodeQuality()
|
|
executeBuildPush()
|
|
}
|
|
|
|
BranchStrategy.releaseStrategy(env.BRANCH_NAME) {
|
|
executeInstallTest()
|
|
executeScanCodeQuality()
|
|
executeBuildPush()
|
|
}
|
|
|
|
BranchStrategy.hotfixStrategy(env.BRANCH_NAME) {
|
|
executeInstallTest()
|
|
executeScanCodeQuality()
|
|
executeBuildPush()
|
|
}
|
|
}
|
|
}
|
|
}
|