node {
    // Git checkout before load source the file
    checkout scm
    // sh '''
    //     ls -lhrt
    // '''

    def rootDir  = pwd()
    def yaml2Map = load "./sharedLibs/yaml2Map.groovy"
    def stages   = load "./sharedLibs/stages.nodejs.groovy"
    def GLOBAL_CONFIG = yaml2Map.read('global.yaml').project
    def base_branch = ref.tokenize('/')[2]

    //生成Dockerfile
    def generateDockerfile = {Object CONFIG ->

        pathOfDockerfile = 'projdir'
        def module = CONFIG.service.module == null ? '' : (CONFIG.service.module[-1] == '/' ? CONFIG.service.module : CONFIG.service.module + '/')
        echo "-----> Generating Dockerfile: ${pathOfDockerfile}/Dockerfile ..."
        sh """cat > ${pathOfDockerfile}/Dockerfile<<EOF
# BUILD partner dist
FROM node:14-slim as BUILD
LABEL stage=STATICRES-BUILD

COPY . /partner
WORKDIR /partner

RUN npm config set strict-ssl false && \
npm config set registry https://registry.npm.taobao.org && \
npm install && npm run build

FROM nginx:1.23-alpine as FINAL

# configs for default
# COPY ./default.conf /etc/nginx/conf.d
# COPY ./html /usr/share/nginx/html
# COPY ./html /usr/share/nginx/partner/utils

# configs for partner.hobbystocks.cn
COPY ./partner.hobbystocks.net.conf /etc/nginx/conf.d
COPY --from=BUILD /partner/dist /usr/share/nginx/partner

EOF
"""
        return pathOfDockerfile
    }

    dir("front/DEV") {
        def PROJECT_CONFIG = yaml2Map.read('cfg.yaml').project
        def CONFIG = yaml2Map.merge(PROJECT_CONFIG, GLOBAL_CONFIG)
        CONFIG.docker.image = String.format(CONFIG.docker.image, CONFIG.service.name)
        println 'configs: ' + CONFIG

        String[] K8S_BACKUPS = ["deployment.yaml", "service.yaml"]
        stages.upgrade(CONFIG, base_branch, K8S_BACKUPS, [
            GENERATEDOCKERFILE: {generateDockerfile(CONFIG)}
        ])
    }
}