提交 310947a1 编写于 作者: zhangsiyuan's avatar zhangsiyuan

Add new file

上级 8c48cc7b
// User-defined Variables:
// Project Name
def PROJECT_NAME = "web-chc"
// Kubernetes Namespace
def KUBE_NAMESPACE = "k8s-dev"
// Git Repository
def repoUrl = "http://192.168.110.53:com.pica.cloud.foundation.frontend/pica-performance.git"
// Email Address:
//def emailTo = "siyuan.zhang@picahealth.com"
// -------------------------------------------------------------------------------------
// Public Variables
def CREDENTIALSID = "1fa6bf2e-e790-4262-8632-e119f8919bb9"
// Sonar
def SONAR_PROJECT_NAME = PROJECT_NAME + '-' + envProfile
def SONAR_PROJECT_KEY = PROJECT_NAME + '-' + envProfile
def SONAR_HOST_URL = "http://192.168.140.201:9000"
// Local Registry
def LOCAL_REGISTRY_USER = "maniu"
def LOCAL_REGISTRY_PASSWORD = "maniujk"
def localRegistry = ["dev": "10.241.65.86:9993", "test": "10.241.65.86:9997", "itest": "10.241.65.86:9995","pre": "10.241.65.86:9995","prod": "10.241.65.86:9999","release": "10.241.65.86:9995"]
def LOCAL_REGISTRY_URL = localRegistry."${envProfile}"
def LOCAL_IMAGE_NAME = LOCAL_REGISTRY_URL + '/' + PROJECT_NAME
// Aliyun Registry
def ALI_REGISTRY_USER = "manniuapp@1111785193823703"
def ALI_REGISTRY_PASSWORD = "manniu2020"
def ALI_REGISTRY_URL = "manniu-app-registry.cn-shanghai.cr.aliyuncs.com"
def ALI_IMAGE_NAME = ALI_REGISTRY_URL + '/' + envProfile + '/' + PROJECT_NAME
// vue 环境变量
def ENV_MAP = ["dev": "dev", "test": "testing", "itest":"pre","pre": "pre","prod": "production","release": "production"]
def vueAppEnv = ENV_MAP."${envProfile}"
// Set default variable IMAGE_TAG
def IMAGE_TAG = "1.0.0" //for dev
pipeline{
agent any
parameters{
gitParameter branchFilter: 'origin/(master|hotfix.*|feature.*|dev.*|.*est|release.*|pre|prod)', defaultValue: 'develop', name: 'refVar', type: 'PT_BRANCH',useRepository: "$repoUrl"
choice(name: 'tagType', choices: ['Patch', 'Minor', 'Major'], description: 'Tag Type')
choice(name: 'envProfile',choices: ['dev','test','itest','pre', 'prod','release'],description: 'Environment Type')
}
// Skip Declarative: Checkout SCM stage
options {
skipDefaultCheckout true
}
stages{
stage("print variables"){
steps{
sh """
echo refVar: $refVar
echo tagType: $tagType
echo profile: ${envProfile}
echo LOCAL_REGISTRY_URL: ${LOCAL_REGISTRY_URL}
echo SONAR_PROJECT_NAME: ${SONAR_PROJECT_NAME}
echo ALI_IMAGE_NAME: ${ALI_IMAGE_NAME}
printenv
"""
}
}
stage("checkout scm"){
steps{
checkout([
$class: "GitSCM",
branches: [[name: "$refVar"]],
userRemoteConfigs: [[url: "$repoUrl", credentialsId: "${CREDENTIALSID}"]]])
}
}
stage('npm install') {
parallel {
stage('install') {
steps {
nodejs('my-nodejs') {
sh """
npm config ls -l
npm i --registry http://192.168.110.93:4873/
"""
}
}
}
}
}
stage('npm build') {
steps {
nodejs('my-nodejs') {
sh """
npm run core
npm run build:${envProfile} versionType:${tagType}
node oss-error.js mode ${vueAppEnv}
node oss-error.js check ${vueAppEnv}
"""
}
}
}
stage('read version file'){
steps{
script{
versionFile = ".${vueAppEnv}.version"
IMAGE_TAG = readFile versionFile
}
echo "${IMAGE_TAG}"
}
}
stage('SonarQube analysis') {
when { expression { envProfile == 'test'} }
steps {
nodejs('v12.16.2') {
withSonarQubeEnv('sonar') {
sh "/var/jenkins_home/tools/hudson.plugins.sonar.SonarRunnerInstallation/sonar-test/bin/sonar-scanner -D sonar.projectName=${SONAR_PROJECT_NAME} -D sonar.projectKey=${SONAR_PROJECT_KEY} -D sonar.host.url=${SONAR_HOST_URL} -D sonar.projectBaseDir=. -D sonar.sources=. -D sonar.exclusions=.**"
}
}
}
}
stage('Quality Gate') {
when { expression { envProfile == 'test'} }
steps {
timeout(time: 10, unit: 'MINUTES') {
waitForQualityGate(abortPipeline: false)
}
}
}
stage('Build Image') {
steps {
sh "docker build -t ${LOCAL_IMAGE_NAME}:${IMAGE_TAG} ."
}
}
stage('Push Image') {
parallel {
stage('push local image') {
steps {
sh """
docker login -u ${LOCAL_REGISTRY_USER} -p ${LOCAL_REGISTRY_PASSWORD} ${LOCAL_REGISTRY_URL}
docker push ${LOCAL_IMAGE_NAME}:${IMAGE_TAG}
"""
}
}
stage('push remote image') {
steps {
sh """
docker tag ${LOCAL_IMAGE_NAME}:${IMAGE_TAG} ${ALI_IMAGE_NAME}:${IMAGE_TAG}
docker login -u ${ALI_REGISTRY_USER} -p ${ALI_REGISTRY_PASSWORD} ${ALI_REGISTRY_URL}
docker push ${ALI_IMAGE_NAME}:${IMAGE_TAG}
"""
}
}
}
}
stage('prune locally images') {
steps {
sh """
docker rmi ${LOCAL_IMAGE_NAME}:${IMAGE_TAG}
docker rmi ${ALI_IMAGE_NAME}:${IMAGE_TAG}
"""
}
}
// Update app
stage('deploy k8s'){
when { expression { envProfile ==~ /dev|test/ }}
steps{
sh """
echo "{\\"spec\\": {\\"template\\": {\\"spec\\": {\\"containers\\": [{\\"name\\": \\"${PROJECT_NAME}\\",\\"image\\": \\"${ALI_IMAGE_NAME}:${IMAGE_TAG}\\"}]}}}}" | kubectl patch deploy/${PROJECT_NAME} -n ${KUBE_NAMESPACE} -p "\$(cat -)" --context=${envProfile}
"""
}
}
}
}
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册