# 定义全局docker镜像 image: git.mesalab.cn:7443/nezha/nz-build-env:1.5 # 定义全局变量 variables: MINIO_HOST: 'http://192.168.40.48:2020/' MINIO_USER: 'admin' MINIO_PWD: "Nezha@02!" MAVEN_REPO: "/etc/maven/repository/" # mariadb 数据库定义(非必须) MYSQL_DATABASE: "test" # mariadb 密码配置(必须),注意变量名是 MYSQL_ROOT_PASSWORD MYSQL_ROOT_PASSWORD: '111111' # sys_i18n 数据源信息 NZ_DB_HOST: "192.168.44.23" NZ_DB_USER: "nezha" NZ_DB_PASSWORD: "nezha02" NZ_DB_NAME: "nz-dev-3.10" # 定义全局依赖的docker服务,即 这条流水线 pipeline 中的任务都用这里的服务 services: - mariadb:10.2.14 # 开始执行脚本前所需执行脚本 before_script: - echo "begin ci" # 脚本执行完后的钩子,执行所需脚本 after_script: - echo "end ci" # 该ci pipeline适合的场景,按照定义的顺序执行任务 stages: - update_i18n - build - test - junit_test # paths主要是来指定需要被缓存的文件路径,需要特别指出的是这里的 paths 是相对路径,是相对于gitlab中项目目录的路径,也就是说被缓存的文件都是在项目目录之内的 # maven setting /usr/share/maven/conf/settings.xml cache: paths: - $MAVEN_REPO # 定义的任务 build_rpm: stage: build # 所需执行的脚本 script: - env | sort - pwd - export FILE_NAME=$CI_PROJECT_NAME-$CI_COMMIT_REF_NAME-$CI_COMMIT_SHORT_SHA.tar.gz - mvn clean install -Dxjar.password=afdsafasfsag -Dxjar.excludes=/db/*,/static/**/*,/install/* -Dmaven.test.skip=true - cd ./nz-admin/target - go build xjar.go - chmod +x xjar - tar -zcvf $FILE_NAME xjar nz-admin.xjar # 将 文件 上传到 minio - mc alias set nz $MINIO_HOST $MINIO_USER $MINIO_PWD - mc cp $FILE_NAME nz/release/nz-web/$FILE_NAME - cd ../../ # 在哪个分支上可用 only: - /^rel-.*$/i # 指定哪个ci runner跑该工作 tags: - nezha # ci 更新 sys_i18n sql ci_update_i18n_sql: stage: update_i18n script: - env | sort - pwd - chmod +x ./ci-scripts/replaceI18nsql.sh - ./ci-scripts/replaceI18nsql.sh artifacts: name: "R__AZ_sys_i18n.sql" when: on_success paths: - /builds/nezha/nz-web/nz-admin/src/main/resources/db/R__AZ_sys_i18n.sql expire_in: 1 day # 在哪个分支上可用 only: - /^rel-.*$/i # 指定不执行的标签 except: - schedules # 指定哪个ci runner跑该工作 tags: - nezha # 定义的任务 dev_build: stage: test # 所需执行的脚本 script: - env | sort - pwd - export FILE_NAME=$CI_PROJECT_NAME-$CI_COMMIT_REF_NAME-$CI_COMMIT_SHORT_SHA.tar.gz - chmod +x ./ci-scripts/replaceI18nsql.sh - ./ci-scripts/replaceI18nsql.sh - mvn clean install -Dxjar.password=afdsafasfsag -Dxjar.excludes=/db/*,/static/**/*,/install/* -Dmaven.test.skip=true - cd ./nz-admin/target - go build xjar.go - chmod +x xjar - "git log -200 --pretty=format:'%ad : %s' > git-log.html" - tar -zcvf $FILE_NAME xjar nz-admin.xjar git-log.html - md5sum $FILE_NAME > $CI_PROJECT_NAME-$CI_COMMIT_REF_NAME-latest.tar.gz.md5sum.txt # 将 文件 上传到 minio - mc alias set nz $MINIO_HOST $MINIO_USER $MINIO_PWD - mc cp $FILE_NAME nz/ci-cd/nz-web/$FILE_NAME - mc cp $FILE_NAME nz/ci-cd/nz-web/$CI_PROJECT_NAME-$CI_COMMIT_REF_NAME-latest.tar.gz - mc cp $CI_PROJECT_NAME-$CI_COMMIT_REF_NAME-latest.tar.gz.md5sum.txt nz/ci-cd/nz-web/$CI_PROJECT_NAME-$CI_COMMIT_REF_NAME-latest.tar.gz.md5sum.txt - cd ../../ # 在哪个分支上可用 only: - /^dev-.*$/i # 指定不执行的标签 except: - schedules # 指定哪个ci runner跑该工作 tags: - nezha # 定义定时单测任务 junit_test: stage: junit_test # 所需执行的脚本 script: # -Dmaven.test.skip=true 表示跳过测试运行同时跳过测试代码的编译。 如果在 pom 文件中设置跳过单元测试 一样会跳过单测的 # -Dmaven.test.failure.ignore=true :忽略失败的单测 # - mvn clean package -Dmaven.test.failure.ignore=true - mvn clean test # 当前 job 脚本执行完后,所需执行的脚本 http://www.ttlsa.com/auto/gitlab-cicd-gitlab-ci-yml-configuration-tasks-detailed/ after_script: - export JUNIT_REPORT_NAME=$CI_PROJECT_NAME-$CI_COMMIT_REF_NAME-junit-report-$CI_COMMIT_SHORT_SHA.tar.gz - echo $JUNIT_REPORT_NAME - cd ./nz-admin/target # 使用双引号包裹含空格的文件名 - tar -zcvf $JUNIT_REPORT_NAME surefire-reports # 将 文件 上传到 minio - mc alias set nz $MINIO_HOST $MINIO_USER $MINIO_PWD # 将 单测报告 上传到 minio - mc cp $JUNIT_REPORT_NAME nz/ci-cd/nz-web-junit-report/$JUNIT_REPORT_NAME - cd ../../ # 在哪个分支上可用 only: # 定时任务设置 - schedules # 指定哪个ci runner跑该工作 tags: - nezha