diff --git a/scripts/gitee_build_pr.sh b/scripts/gitee_build_pr.sh new file mode 100755 index 0000000000000000000000000000000000000000..53866523fd98494a9706d8a8f0a1b62d6bff58d9 --- /dev/null +++ b/scripts/gitee_build_pr.sh @@ -0,0 +1,76 @@ +#!/usr/bin/env bash + +set -e + +conName="pr_"${giteePullRequestIid} +dir=${BUILD_DIR}/"pr_"${giteePullRequestIid} +cacheDir=${dir}/cache +publicDir=${dir}/publicDir +pr_port_file=${dir}/pr_port.txt + +if [ ! -d ${cacheDir} ];then + mkdir -p ${cacheDir} +fi + +if [ ! -d ${publicDir} ];then + if [[ ${giteeSourceBranch} == "master" ]]; then + rsync -rltgoD --delete /data/mogdb-docs ${publicDir} + else + echo "mogdb-beta-docs" + rsync -rltgoD --delete /data/mogdb-beta-docs ${publicDir} + fi +fi + +# 删除文件 +rm -rf .cache +rm -rf public + +mv ${cacheDir} .cache +ln -s ${publicDir} public + +node -v + +# npm install +yarn install +retCode=$? +if [[ ${retCode} != 0 ]]; then + exit 1 +fi + +yarn build +# npm run build +retCode=$? +if [[ ${retCode} != 0 ]]; then + exit 1 +fi +mv .cache ${cacheDir} + +if [ `docker ps -a |awk '{print $NF}' |grep "^${conName}$" | wc -l` -gt 0 ]; then + docker rm -f ${conName} +fi + +if [ -f ${pr_port_file} ];then + pr_port=`cat ${pr_port_file}` +else + for port in {9001..10000}; + do + if [ ` lsof -i:${port} | wc -l` -eq 0 ]; then + pr_port=${port} + break + fi + done +fi + +if [ ! -n "${pr_port}" ]; then + echo "Not Find vaild port" + exit 1 +fi + +docker run -d \ + -v `pwd`/nginx.conf:/etc/nginx/nginx.conf \ + -v ${publicDir}:/usr/share/nginx/html \ + -p ${pr_port}:80 \ + --name ${conName} \ + nginx + +echo "${pr_port}" > ${pr_port_file} diff --git a/scripts/jenkinsfile_pr b/scripts/jenkinsfile_pr index c02fb2cdfc1e310d0bae533afa6723e3636be26f..5649e42d48735da90bb62b5ba6f3b98efe57bfb1 100644 --- a/scripts/jenkinsfile_pr +++ b/scripts/jenkinsfile_pr @@ -1,5 +1,8 @@ def CODE_CHECK_STATUS = "Unkonwn" +def BUILD_CHECK_STATUS = "Unkonwn" def MARKDOWNLINT_RESULT = '' +def BUILD_PORT ='' +def TEST_HTTP_SERVER ="http://docs.mogdb.io" def COMMENT_HEADER ='''静态检查 |Check Name|Build Details|Check Result| @@ -10,6 +13,9 @@ pipeline { agent { label 'mogdb-docs' } + tools { + nodejs 'node1514arm' + } // triggers { // gitee ( // // 推送代码 @@ -78,14 +84,36 @@ pipeline { echo MARKDOWNLINT_RESULT } } + stage("Build") { + steps { + script { + try { + sh "scripts/gitee_build_pr.sh" + BUILD_CHECK_STATUS= "Succeed" + BUILD_PORT = sh(script:'cat ${BUILD_DIR}/pr_${giteePullRequestIid}/pr_port.txt', returnStdout: true).trim() + } catch (Exception err) { + BUILD_CHECK_STATUS = "Failed" + } + } + echo BUILD_CHECK_STATUS + echo BUILD_PORT + } + } } post { always { script { COMMENT_BODY = COMMENT_HEADER + "\n" + "|语法检查|"+ "[${env.BUILD_DISPLAY_NAME}](${env.BUILD_URL}console)|" +CODE_CHECK_STATUS+"|" + TEST_HTTP_SERVER = TEST_HTTP_SERVER+":"+BUILD_PORT + if (BUILD_CHECK_STATUS == 'Failed') { + TEST_HTTP_SERVER = '' + } + COMMENT_BODY = COMMENT_BODY + "\n" + "|构建结果|"+ TEST_HTTP_SERVER +"|" +BUILD_CHECK_STATUS+"|" + if (CODE_CHECK_STATUS == 'Failed') { COMMENT_BODY = COMMENT_BODY + "\n\n" + MARKDOWNLINT_RESULT } + } addGiteeMRComment comment: COMMENT_BODY }