Jenkins自动化部署脚本及配置记录
服务端java工程
需要部署项目的服务器上配置
1./home/info-plat/my-project目录下准备3个文件 Dockerfile
FROM moxm/java:1.8-full RUN mkdir -p /my-project WORKDIR /my-project COPY my-project.jar project.jar EXPOSE containerPort ENV TZ=Asia/Shanghai JAVA_OPTS="-Djava.security.egd=file:/dev/./urandom" CMD java -jar project.jar $JAVA_OPTS
start.sh
#!/bin/bash docker build -t imageName . echo "build image end" docker run --name containerName -p hostPort:containerPort -d imageName
stop.sh
#!/bin/bash docker stop containerName echo "stop container end" docker rm containerName echo "remove container end" docker rmi imageName echo "remove image end"
Jenkins任务配置
1.SSH Server 2.构建后操作
-
选择Send build artifacts over SSH SSH Server选择info-plat-dev Transfers Transfer Set配置 Source files:配置需要send的项目jar包,如xx1/xx2/project.jar。注意该路径是相对.jenkins/workspace/taskName的,即完整路径是.jenkins/workspace/taskName/xx1/xx2/project.jar Remove prefix:一般希望在目标路径下只保留项目jar包,所以这里配置需要删除的前缀路径为xx1/xx2 Remote directory:配置jar要send到的远程路径,如/home/info-plat/my-project Exec command:配置在远程服务器执行的shell脚本
echo "exec command start..." cd /home/info-plat/my-project sh ./stop.sh sh ./start.sh echo "exec command end..."
前端web工程
需要部署项目的服务器上配置
工程所在路径:/home/info-plat/pc-ui dist是前端工程build的产物 Dockerfile
FROM nginx RUN mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak RUN rm -rf /etc/nginx/conf.d/default.conf COPY ./dist /pcui COPY ./nginx.conf /etc/nginx/nginx.conf COPY ./pc-ui.conf /etc/nginx/conf.d/pc-ui.conf
nginx.conf
user root; worker_processes auto; #error_log /var/log/nginx/error.log notice; #pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main $remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" "$http_x_forwarded_for"; # access_log /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; gzip on; include /etc/nginx/conf.d/*.conf; }
pc-ui.conf
# 配置springboot服务集群 upstream info_plat_pc_ui_server { server ip:port; keepalive 32; } server { listen 80; server_name localhost; # 打包好的dist目录文件,放置到这个目录下 root /pcui/; gzip on; gzip_comp_level 5; gzip_min_length 1k; gzip_buffers 4 16k; gzip_proxied any; gzip_vary on; gzip_types application/javascript application/x-javascript text/javascript text/css text/xml application/xhtml+xml application/xml application/atom+xml application/rdf+xml application/rss+xml application/geo+json application/json application/ld+json application/manifest+json application/x-web-app-manifest+json image/svg+xml text/x-cross-domain-policy; gzip_static on; gzip_disable "MSIE [1-6]."; # 注意维护新增微服务,gateway 路由前缀 location ~* ^/(path1|path2|path3) { proxy_pass http://info_plat_pc_ui_server; proxy_set_header Host $http_host; proxy_connect_timeout 15s; proxy_send_timeout 15s; proxy_read_timeout 15s; proxy_set_header X-Forwarded-Proto http; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
start.sh
#!/bin/bash docker build -t imageName . echo "build image end" docker run --name containerName -p hostPort:containerPort -d imageName echo "run end"
stop.sh
#!/bin/bash docker stop containerName echo "stop container end" docker rm containerName echo "remove container end" docker rmi imageName echo "remove image end"
Jenkins任务配置
与服务端类似,略
下一篇:
第1章:为什么要并行计算