1. 安装jenkins: docker run -u root -d -p 9999:8080 -p 50000:50000 -v jenkins-data:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock jenkinsci/blueocean
2. 使用初始密码登陆, 初始密码位置: cat /var/jenkins_home/secrets/initialAdminPassword
3. 直接选择推荐插件安装
4. 安装插件:
4.1. Ant Plugin 用来配置jdk+maven环境的插件
4.2. LDAP Plugin 用来进行配置角色(用户组)权限的插件
4.3 Localization: Chinese (Simplified) 中文语言插件
4.4 Publish Over SSH 把文件通过ssh发布到服务器的插件 (在系统配置的 Publish over SSH 中配置服务器信息 高级选项卡中配置服务器密码)
4.5 Simple Theme Plugin 样式修改插件 (在系统配置的 Theme添加css url 如: http://192.168.1.231:9999/userContent/layout/my.css 和 http://192.168.1.231:9999/userContent/layout/title.css)
5. 项目配置:
5.1 java后端项目: (在docker里面安装java与maven, 并修改maven源)
选中丢弃旧的构建
源码管理添加仓库与用户访问凭证
指定分支 如 */dev
添加构建步骤 执行 shell 如 mvn clean && mvn package -DskipTests
添加步骤 send files or execute commands over ssh (下图中 Exec command里面 run.sh 前 少了个 / )
5.2 前端项目 (在docker里面安装node, 并修改npm源, 安装zip)
执行 shell命令:
npm install && npm run build:prod && cd dist && zip dist.zip * -r
附件: unzip.sh脚本内容:
#!/usr/bin/env bash source /etc/profile cd `dirname $0` rm -rf dist/ unzip dist.zip -d dist
run.sh脚本内容:
#!/bin/bash source /etc/profile # Spring-Boot 常规启动脚本,基于HotSpot Java8 # 使用方式:xx.sh [start|stop|restart|status|dump] # 将Spring-Boot Jar包和此脚本放在同一目录下,之后配置APP_NAME/PROFILE即可 cd `dirname $0` # 应用名(boot jar包名) APP_NAME=demo # Spring-Boot环境名(profiles) PROFILE= JAR_NAME=$APP_NAME.jar PID=$APP_NAME.pid APP_HOME=`pwd` LOG_PATH=$APP_HOME/logs GC_LOG_PATH=$LOG_PATH/gc DEBUG_FLAG=$2 app_path=$(cd `dirname $0`; pwd) app_log="${app_path}/app.log" if [ ! -d $LOG_PATH ]; then mkdir $LOG_PATH fi if [ ! -d $GC_LOG_PATH ]; then mkdir $GC_LOG_PATH fi # DUMP父目录 DUMP_DIR=$LOG_PATH/dump if [ ! -d $DUMP_DIR ]; then mkdir $DUMP_DIR fi # DUMP目录前缀 DUMP_DATE=`date +%Y%m%d%H%M%S` # DUMP目录 DATE_DIR=$DUMP_DIR/$DUMP_DATE if [ ! -d $DATE_DIR ]; then mkdir $DATE_DIR fi # GC日志参数 GC_LOG_OPTS="-XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:$GC_LOG_PATH/gc-%t.log" # OOM Dump内存参数 DUMP_OPTS="-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=$LOG_PATH" # JVM DEBUG参数,用于调试,默认不开启 # ClassLoader和Method Compile日志,用于调试 COMPILE_LOADER_OPTS="-XX:+TraceClassLoading -XX:+TraceClassUnloading -XX:-PrintCompilation" # 远程调试参数 REMOTE_DEBUG_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005" # DEBUG参数 DEBUG_OPTS="$COMPILE_LOADER_OPTS $REMOTE_DEBUG_OPTS" # 至于Garbage Collector,虽然Java8已经支持G1了,但是不一定必须用,CMS在默认场景下也是一个优秀的回收器 GC_OPTS="-XX:+UseConcMarkSweepGC" OTHER_OPTS="-Djava.security.egd=file:/dev/./urandom" # JVM 启动参数,如无特殊需求,推荐只配置堆+元空间 JVM_OPTIONS="-server -Xms2g -Xmx2g -XX:MetaspaceSize=256m $GC_OPTS $GC_LOG_OPTS $DUMP_OPTS $OTHER_OPTS" #使用说明,用来提示输入参数 usage() { echo "Usage: sh [run_script].sh [start|stop|restart|status|dump]" exit 1 } #检查程序是否在运行 is_exist(){ pid=`ps -ef|grep $APP_HOME/$JAR_NAME|grep -v grep|awk '{print $2}' ` #如果不存在返回1,存在返回0 if [ -z "${pid}" ]; then return 1 else return 0 fi } #启动方法 start(){ is_exist if [ $? -eq "0" ]; then echo "--- ${JAR_NAME} is already running PID=${pid} ---" else if [ "$DEBUG_FLAG" = "debug" ]; then JVM_OPTIONS="$JVM_OPTIONS $DEBUG_OPTS" echo -e "