Files
tictactoe/Jenkinsfile
2026-05-02 15:25:59 +07:00

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()
}
}
}
}