1.if语句
if docker ps | grep ${container} ;then
docker stop ${container}
fi
if docker ps -a | grep ${container};then
docker rm ${container}
fi
2.美元符号$的使用
使用Linux命令,用小括号 $(pwd)
使用自定义的变量,用大括号 ${dir}
3.注释
单行注释: #
多行注释: :<<EOF … EOF 或者 :<<! … ! (:<< 标识多行注释开始,并指定一个标识符作为开始结束的标志)
4.语句截取
real_dir="/home/jenkins/home/"${dir#'/var/jenkins_home/' #返回的是 home/jenkins/home + dir去掉/var/jenkins_home
5.常量声明
dir=$(pwd)
real_dir="/home/jenkins/home/
dir=$(pwd)
echo "jenkins容器项目所在路径:"
echo $dir
echo "主机路径:"
real_dir="/home/jenkins/home/"${dir#'/var/jenkins_home/'}
echo $real_dir
#TAG = sh(returnStdout: true ,script: 'git tag --sort=taggerdate| tail -1').trim()
#echo TAG
echo "tag:" $tag
echo "Branch:" ${BRANCH_NAME}
echo "开始构建"
echo "创建前端代码打包脚本install.sh"
cat>web/install.sh<<EOF
sed -i "s@http://dl-cdn.alpinelinux.org/@https://repo.huaweicloud.com/@g" /etc/apk/repositories
apk update
apk add yarn
yarn config set registry https://registry.npm.taobao.org/
yarn && yarn build:dev
EOF
echo "打包前端代码生成dist目录"
docker run --rm --net=host -v ${real_dir}/web:/web -v /home/.cache/yarn/cmp:/usr/local/share/.cache/yarn -w /web node:10-alpine3.11 sh install.sh
echo "拷贝前端dist目录到后端项目的public目录,用于与后端公用端口,解决跨域问题"
mkdir -p ./src/main/resources/public
cp -r ./web/dist/ * ./src/main/resources/public
echo "后端构建"
mkdir -p /root/.m2
echo "后端mvn打包jar文件"
docker run --rm -v /root/.m2:/root/.m2 -v ${real_dir}:/cmp -w /cmp maven mvn clean install -DskipTests
echo "复制jar文件到指定docker目录"
mkdir -p docker && cp target/cmp-0.0.1-SNAPSHOT.jar ./docker && cp src/main/resources/font/msyh.ttc ./docker && cd docker
echo "在指定docker目录创建Dockerfile文件用于生成docker容器"
cat>Dockerfile<<EOF
FROM openjdk:8u242-jdk
COPY cmp-0.0.1-SNAPSHOT.jar /
COPY msyh.ttc /usr/share/fonts/
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
ENTRYPOINT ["java", "-jar", "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5008", "/cmp-0.0.1-SNAPSHOT.jar"]
EOF
echo "清理已有容器及镜像资源"
container="jenkins-cmp"
image=${container}
if docker ps | grep ${container} ;then
docker stop ${container}
fi
if docker ps -a | grep ${container};then
docker rm ${container}
fi
if docker images | grep ${image};then
docker rmi ${image}
fi
echo "镜像制作"
docker build -t ${image} .
echo "容器运行"
docker run -d --restart=always --name ${container} -v /home/var/logs:/var/logs -p 8888:8888 -p 8889:8889 ${image} --spring.profiles.active=dev -Duser.timezone=GMT+8
#echo "拷贝字体"
#docker cp /usr/share/fonts/msyh.ttc ${image}:/usr/share/fonts
案例tomcat软件bin文件夹下
打开另存为 ANSI 格式
@echo off执行以后,后面所有的命令均不显示,包括本条命令。
echo off执行以后,后面所有的命令均不显示,但本条命令是显示的。
暂停,会出现 “请按任意键继续…” pause
显示内容 echo
注释 :
执行字符串指定的命令然后终止 /c
执行字符串指定的命令但保留 /k
开启窗口 start cmd
设置临时环境变量 setlocal
移除临时环境变量 endlocal
查看系统环境变量 set path
//1.tomcat
bin/startup.bat
//2.运行antDesign项目
start cmd /k "f: && cd F:\若依源码\showProject\gitClone\AntDesignPro && yarn run serve"
//3.不显示命令
@echo off
echo 这是测试内容的第1行
echo 这是测试内容的第2行
echo 这是测试内容的第3行
echo end
pause
//4.显示命令echo off
echo off
echo 这是测试内容的第1行
echo 这是测试内容的第2行
echo 这是测试内容的第3行
echo end
pause