podTemplate(yaml: ''' apiVersion: v1 kind: Pod spec: restartPolicy: Never containers: - image: docker.sunxinao.cn/gardel/nodejs-ci:latest name: nodejs command: - sleep args: - 99d volumeMounts: - name: npm-cache mountPath: /root/.npm - image: golang:1.19-alpine name: golang command: - sleep args: - 99d - image: gcr.io/kaniko-project/executor:debug name: kaniko command: - /busybox/sleep args: - 99d volumeMounts: - name: kaniko-cache mountPath: /cache - name: docker-config mountPath: /kaniko/.docker readOnly: true volumes: - name: kaniko-cache persistentVolumeClaim: claimName: build-cache-docker - name: npm-cache persistentVolumeClaim: claimName: build-cache-npm - name: docker-config secret: secretName: docker-config optional: false items: - key: config.json path: config.json ''') { properties([ buildDiscarder(logRotator(artifactDaysToKeepStr: '4', artifactNumToKeepStr: '3', daysToKeepStr: '4', numToKeepStr: '5')), disableConcurrentBuilds() ]) node(POD_LABEL) { stage('克隆仓库') { git branch: env.BRANCH_NAME, credentialsId: 'gardel', url: 'git@sunxinao.cn:gardel/yggdrasil-go.git' } stage('编译') { container('nodejs') { sh 'make assets' } container('golang') { sh 'apk --no-cache add build-base' sh 'make package' } archiveArtifacts artifacts: 'yggdrasil.tar.gz', fingerprint: true, followSymlinks: false, onlyIfSuccessful: true } stage('发布镜像') { container('kaniko') { stage('准备缓存') { sh '/kaniko/warmer --cache-dir=/cache --image=alpine:latest ' + '--registry-mirror=docker.sunxinao.cn' } stage('构建') { sh "/kaniko/executor --cache-dir=/cache --context `pwd` " + "--destination docker.sunxinao.cn/gardel/yggdrasil-go:latest " + "--registry-mirror docker.sunxinao.cn " + "--build-arg 'BINARY=yggdrasil-linux-amd64'" } } } } }