gitlab-ci.yml 配置分享

69 阅读1分钟

variables: TARGET: shangma-admin/target/shangma-admin.jar DOCKER_IMAGE: shangma-admin SERVICE_NAME: shangma-admin

buildTest: stage: build tags: - sm-test only: - test script: - SERVICE_PORT=18889 - DOCKER_IMAGE=shangma-admin - SERVICE_NAME=shangma-admin - mvn clean package -P test -Dmaven.test.skip=true - if [ ! -f "TARGET"];thenexit1;fiVERSION="1.0.date+dockerbuildtTARGET" ]; then exit 1; fi - VERSION="1.0.`date +%Y%m%d%H%M`" - docker build -t DOCKER_IMAGE:VERSION.if[VERSION . - if [ (docker service ls |grep "SERVICENAME:"wcl)gt0];thendockerserviceupdateforceqimageSERVICE_NAME:" | wc -l) -gt 0 ]; then docker service update --force -q --image DOCKER_IMAGE:VERSIONVERSION SERVICE_NAME; else docker service create --network host --name SERVICENAMEmounttype=bind,src=/home/shangmasys/uploadPath,dst=/home/shangmasys/uploadPath,readonlySERVICE_NAME --mount type=bind,src=/home/shangma_sys/uploadPath,dst=/home/shangma_sys/uploadPath,readonly DOCKER_IMAGE:$VERSION; fi - docker image prune -f after_script: - mvn clean

buildPre: stage: build tags: - sm-test only: - pre script: - SERVICE_PORT=18889 - DOCKER_IMAGE=shangma-admin - SERVICE_NAME=shangma-admin - mvn clean package -P test -Dmaven.test.skip=true - if [ ! -f "TARGET"];thenexit1;firsyncavzdeleteTARGET" ]; then exit 1; fi - rsync -avz --delete TARGET root@192.168.0.551:/opt/shangma - ssh -i /home/grunner/auth/smwy_test.pem root@192.168.0.551 "cd /opt/shangma;sh docker_build.sh" after_script: - mvn clean

buildPre: stage: build tags: - sm-pre only: - pre script: - TARGET_DIR=/opt/html/shangma-ui - DM_DIR=(pwd)nodemodulesif[d"(pwd)_node_modules - if [ -d "DM_DIR" ]; then mv "DMDIR"nodemodules;finpminstallprogress=falseunsafeperm=trueallowrootnpmrunbuild:prodif[!d"dist"];thenexit1;fiif[d"DM_DIR" node_modules; fi - npm install --progress=false --unsafe-perm=true --allow-root - npm run build:prod - if [ ! -d "dist" ]; then exit 1; fi - if [ -d "TARGET_DIR" ]; then rm -rf "TARGETDIR";ficprdistTARGET_DIR"; fi - cp -r dist TARGET_DIR after_script: - DM_DIR=(pwd)nodemodulesmv./nodemodules"(pwd)_node_modules - mv ./node_modules "DM_DIR"

buildMaster: stage: build tags: - dev only: - master script: - mvn clean package -P prod -Dmaven.test.skip=true - if [ ! -f "TARGET"];thenexit1;fiartifacts:paths:TARGET" ]; then exit 1; fi artifacts: paths: - TARGET

deployMaster: stage: deploy tags: - shangma only: - master script: - chcp 65001 - set TARGET=shangma-admin\target\shangma-admin.jar - set SERVER_NAME=shangma-admin - set SERVER_FILE=C:\server\shangma\shangma-admin.jar - if not exist "%TARGET%" ( exit 1 ) - set state=STOPPED - for /f "tokens=4" %%i in ('sc query %SERVER_NAME% ^|findstr /i STATE') do ( set state=%%i) - if /i "%state%" == "RUNNING" ( sc stop %SERVER_NAME% ) - ping 127.0.0.1 -n 3 > nul - copy /y "%TARGET%" "%SERVER_FILE%" - sc start "%SERVER_NAME%" after_script: - chcp 65001 - del /f /q * - forfiles /p . /c "cmd /c rd /q /s @file"