pipeline {
    agent {
        kubernetes {
			yaml '''
                apiVersion: v1
                kind: Pod
                spec:
                  containers:
                  - name: golang
                    image: golang:1.22.2-alpine3.19
                    tty: true
                  - name: node
                    image: node:24.0.0-alpine3.20
                    tty: true
            '''
		}
    }
    stages {
        stage('build/test') {
            steps {
                container('node') {
                    sh "apk update"
                    sh "apk add gcc g++ make musl-dev python3 py3-setuptools"
                    dir('apps/canvas/config') {
                        sh 'npm install'
                        sh 'npm run format-check'
                        sh 'npm run lint'
                        sh 'npm run test'
                    }
                    dir('apps/canvas/back') {
                        sh 'npm install'
                        sh 'npm run format-check'
                        sh 'npm run lint'
                        sh 'npm run test'
                    }
                    dir('apps/canvas/front') {
                        sh 'npm install'
                        sh 'npm run format-check'
                        sh 'npm run lint'
                    }
                }
				container('golang') {
                	dir('core/installer') {
                		sh 'go mod tidy'
                		sh 'go build cmd/*.go'
						sh 'go run cuelang.org/go/cmd/cue fmt app_configs/*.cue --check'
                		sh 'go test ./...'
					}
                    dir('apps/app-runner') {
                        sh 'go mod tidy'
                		sh 'go build *.go'
                		sh 'go test ./...'
					}
                    dir('core/auth/memberships') {
                        sh 'go mod tidy'
                		sh 'go build *.go'
                		sh 'go test ./...'
					}
                    dir('core/port-allocator') {
                        sh 'go mod tidy'
                		sh 'go build *.go'
                		sh 'go test ./...'
					}
				}
            }
        }
    }
	post {
        success {
            gerritReview labels: [Verified: 1], message: env.BUILD_URL
        }
        unstable {
		    gerritReview labels: [Verified: 0], message: env.BUILD_URL
		}
        failure {
            gerritReview labels: [Verified: -1], message: env.BUILD_URL
        }
    }
}