diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..fa646f6 --- /dev/null +++ b/.gitignore @@ -0,0 +1,21 @@ +.DS_Store +.buildpath +.hgignore.swp +.project +.orig +.swp +.idea/ +.settings/ +.vscode/ +vender/ +log/ +composer.lock +gitpush.sh +pkg/ +bin/ +cbuild +*/.DS_Store +.vscode + +.svn +node_modules/ \ No newline at end of file diff --git a/.jenkinsfile b/.jenkinsfile new file mode 100644 index 0000000..896e3a6 --- /dev/null +++ b/.jenkinsfile @@ -0,0 +1,126 @@ +pipeline { + agent any + options { + buildDiscarder(logRotator(artifactDaysToKeepStr: '', artifactNumToKeepStr: '', daysToKeepStr: '2', numToKeepStr: '2')) + } + stages { + stage('Setup Parameters & ENV') { + steps { + configFileProvider([configFile(fileId: 'easygoadmin-wiki', variable: 'settingsFile')]) { + script { + def config = readJSON file:"$settingsFile" + def jobNameStr = JOB_NAME.tokenize('/') as String[] + def jobName = jobNameStr[0] + def branchConfig = config."branchConfig"."${env.BRANCH_NAME}" + def serviceConfig = config."serviceConfig"."${jobName}" + + MAVEN_SET = branchConfig.MAVEN_SET + registry = branchConfig.registry + registryCredential = branchConfig.registryCredential + namespace = branchConfig.namespace + jenkinsAgent = branchConfig.jenkinsAgent + + echo "jobName: ${jobName}" + echo "The Maven Set XML for the ${env.BRANCH_NAME} branch is: ${MAVEN_SET}" + + projectName = serviceConfig.projectName + packageName = serviceConfig.packageName + serverHost01= serviceConfig.serverHost01 + serviceName = serviceConfig.serviceName + + echo "projectName: ${projectName}" + echo "packageName: ${packageName}" + echo "serverHost01: ${serverHost01}" + + if ("${env.BRANCH_NAME}" == "dev") { + serverIP01 = branchConfig."${serverHost01}" + echo "dev serverIP01: ${serverIP01}" + properties([ + parameters([ + string( + defaultValue: 'dev', + description: '编译参数', + name: 'PROFILES', + trim: true + ) + ]) + ]) + } else if ("${env.BRANCH_NAME}" == "test"){ + serverIP01 = branchConfig."${serverHost01}" + echo "test serverIP01: ${serverIP01}" + properties([ + parameters([ + string( + defaultValue: 'test', + description: '编译参数', + name: 'PROFILES', + trim: true + ) + ]) + ]) + } else if ("${env.BRANCH_NAME}" == "master") { + properties([ + parameters([ + string( + defaultValue: 'prod', + description: '编译参数', + name: 'PROFILES', + trim: true + ) + ]) + ]) + serverIP01 = branchConfig."${serverHost01}" + echo "prod serverIP01: ${serverIP01}" + } else { + error("Build failed because failed to fetch settings for branch") + } + echo "The serverIP for the branch: ${env.BRANCH_NAME}, profile: ${PROFILES} is: ${serverIP01}" + } + } + + } + } + stage('Build') { + agent { + label { + label jenkinsAgent + } + } + steps { + sh """ + node -v + yarn -v + yarn config set registry https://registry.npmmirror.com + yarn config get registry + yarn config set strict-ssl false + cd ${serviceName} + yarn install + yarn run docs:build + ls -lsh; + """ + } + + } + stage("Deploy") { + options { + skipDefaultCheckout() + } + agent { + label { + label jenkinsAgent + } + } + steps { + script { + sh 'echo "#### MD5 HASH ####"' + sh "cd ${serviceName}; ls -lsh; cd .vitepress; ls -lsh; rm -rf ${projectName} ${packageName}; mv dist ${projectName} && tar zcf ${packageName} ${projectName}; md5sum ${packageName}" + + sh 'echo "#### scp and restart ####"' + sh "ssh ${serverIP01} 'cd /usr/local/docker/nginx/html/easygoadmin-wiki; rm -rf ${projectName}; rm -f ${packageName}'" + sh "cd ${serviceName}; ls -lsh; cd .vitepress; scp ${packageName} ${serverIP01}:/usr/local/docker/nginx/html/easygoadmin-wiki" + sh "ssh ${serverIP01} 'cd /usr/local/docker/nginx/html/easygoadmin-wiki; tar zxf ${packageName}; ls -l'" + } + } + } + } +}