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任务配置

与服务端类似,略

经验分享 程序员 微信小程序 职场和发展