21 tests covering win/loss/draw/score/reset. lcov report fed to SonarQube. Pipeline: Install → Unit Test → Scan Code Quality → Build & Push. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
103 lines
3.1 KiB
Groovy
103 lines
3.1 KiB
Groovy
@Library('homelab') _
|
|
|
|
import vn.fireflylab.pipeline.BranchStrategy
|
|
|
|
// ── Stage functions ────────────────────────────────────────────────
|
|
def executeInstall() {
|
|
stage('Install') {
|
|
container('node') { runNodeInstall() }
|
|
}
|
|
}
|
|
|
|
def executeUnitTest() {
|
|
stage('Unit Test') {
|
|
container('node') { runNodeTest() }
|
|
}
|
|
}
|
|
|
|
def executeScanCodeQuality() {
|
|
stage('Scan Code Quality') {
|
|
container('sonar') {
|
|
scanCodeQuality(projectKey: 'tictactoe')
|
|
}
|
|
}
|
|
}
|
|
|
|
def executeBuildPush() {
|
|
stage('Build & Push') {
|
|
container('docker') {
|
|
def tag = BranchStrategy.imageTag(env.BRANCH_NAME)
|
|
env.IMAGE_TAG = tag
|
|
dockerBuildPush(appName: 'tictactoe', tag: tag)
|
|
}
|
|
}
|
|
}
|
|
|
|
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 ───────────────────────────────────────────────────────
|
|
// PR-* → install + test
|
|
// feature/* → install + test + scan + build + push
|
|
// develop → install + test + scan + build + push
|
|
// main → install + test + scan + build + push
|
|
// release/x.y.z → install + test + scan + build + push
|
|
// hotfix/* → install + test + scan + build + push
|
|
|
|
podTemplate(yaml: homelabK8sAgent(withTools: true, withSonar: true)) {
|
|
node(POD_LABEL) {
|
|
withEnv(['DOCKER_HOST=tcp://localhost:2375']) {
|
|
checkout scm
|
|
|
|
BranchStrategy.prStrategy(env.BRANCH_NAME) {
|
|
executeInstall()
|
|
executeUnitTest()
|
|
}
|
|
|
|
BranchStrategy.featureStrategy(env.BRANCH_NAME) {
|
|
executeInstall()
|
|
executeUnitTest()
|
|
executeScanCodeQuality()
|
|
executeBuildPush()
|
|
}
|
|
|
|
BranchStrategy.developStrategy(env.BRANCH_NAME) {
|
|
executeInstall()
|
|
executeUnitTest()
|
|
executeScanCodeQuality()
|
|
executeBuildPush()
|
|
}
|
|
|
|
BranchStrategy.mainStrategy(env.BRANCH_NAME) {
|
|
executeInstall()
|
|
executeUnitTest()
|
|
executeScanCodeQuality()
|
|
executeBuildPush()
|
|
}
|
|
|
|
BranchStrategy.releaseStrategy(env.BRANCH_NAME) {
|
|
executeInstall()
|
|
executeUnitTest()
|
|
executeScanCodeQuality()
|
|
executeBuildPush()
|
|
}
|
|
|
|
BranchStrategy.hotfixStrategy(env.BRANCH_NAME) {
|
|
executeInstall()
|
|
executeUnitTest()
|
|
executeScanCodeQuality()
|
|
executeBuildPush()
|
|
}
|
|
}
|
|
}
|
|
}
|