feat: initial commit — tcb_devportal Next.js app
Some checks failed
homelab-k8s-services/tcb_devportal/pipeline/head There was a failure building this commit
Some checks failed
homelab-k8s-services/tcb_devportal/pipeline/head There was a failure building this commit
Includes Helm chart (tcb-devportal), Jenkinsfile with homelab CI pipeline, and Next.js app source.
This commit is contained in:
102
Jenkinsfile
vendored
Normal file
102
Jenkinsfile
vendored
Normal file
@@ -0,0 +1,102 @@
|
||||
@Library('homelab') _
|
||||
|
||||
import vn.fireflylab.pipeline.BranchStrategy
|
||||
|
||||
// ── Stage functions ────────────────────────────────────────────────
|
||||
def executeInstall() {
|
||||
stage('Install') {
|
||||
container('node') { runNodeInstall() }
|
||||
}
|
||||
}
|
||||
|
||||
def executeUnitTest() {
|
||||
stage('Unit Test') {
|
||||
container('node') { runNodeTest(testCmd: 'run test:coverage') }
|
||||
}
|
||||
}
|
||||
|
||||
def executeScanCodeQuality() {
|
||||
stage('Scan Code Quality') {
|
||||
container('sonar') {
|
||||
scanCodeQuality(projectKey: 'tcb_devportal')
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
def executeBuildPush() {
|
||||
stage('Build & Push') {
|
||||
container('docker') {
|
||||
def tag = BranchStrategy.imageTag(env.BRANCH_NAME)
|
||||
env.IMAGE_TAG = tag
|
||||
dockerBuildPush(appName: 'tcb_devportal', 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 tcb_devportal 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()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user