Jenkins自动化发布

创建文件夹 mydata/jenkins

给权限 chmod 777 mydata/jenkins

下载镜像 docker pull jenkinsci/blueocean

启动 docker run -d -p 8020:8080 -p 50000:50000 -v /mydata/jenkins:/var/jenkins_home -v /etc/localtime:/etc/localtime --name jenkins jenkinsci/blueocean

访问:http://Ip:8080

进入jenkins容器 docker exec -it jenkins /bin/bash

查看密码 cat /var/jenkins_home/secrets/initialAdminPassword

配置


Jenkins自动化发布_第1张图片

 

安装

[Maven Integration plugin](https://plugins.jenkins.io/maven-plugin)

[Publish Over SSH](https://plugins.jenkins.io/publish-over-ssh)

安装maven

把maven打包软件放入/mydata/jenkins下面(因为这个目录是背挂载了得,所以实际上他在jekins得容器目录里面)

在/mydata/jenkins创建mavenRepository

chmod 777 mavenRepository给权限

配置jenkins得maven路径为:/var/jenkins_home/apache-maven-3.3.9/conf/settings.xml


Jenkins自动化发布_第2张图片

 

配置jenkins得jdk为:/opt/java/openjdk


Jenkins自动化发布_第3张图片

 

配置jekins的git


Jenkins自动化发布_第4张图片

 

配置jekins的安装目录为:/var/jenkins_home/apache-maven-3.3.9


Jenkins自动化发布_第5张图片

 

配置jekins打包后文件上传的ssh服务器地址

注意:hostname和username,密码自己去填

Jenkins自动化发布_第6张图片

 

Jenkins自动化发布_第7张图片
 

 

进入mydata目录,创建docker-project(这个用于后面自动化发布镜像打包)

mkdir docker-project

创建对应的需要发布的服务名称,就是项目名,如:


里面创建 Dockerfile,内容为

FROM java:8

# 作者

MAINTAINER 奋斗不秃头

# VOLUME 指定了临时文件目录为/tmp。

# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp

VOLUME /tmp

ARG JAR_FILE=./*.jar

COPY ${JAR_FILE} gmall-ums.jar

# 设置时区

RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone

# 运行jar包

RUN bash -c 'touch /gmall-ums.jar'

ENTRYPOINT ["nohup","java","-jar","/gmall-ums.jar"]

红色标记的是需要打包的jar要修改的

项目配置

Jenkins自动化发布_第8张图片

 

#这四项自行修改

group_name='gmall'

app_name='gmall-ums'

app_version='1.0.jar'

echo '----copy jar----'

# 停止容器

docker stop ${app_name}

# 删除容器

docker rm ${app_name}

# 删除镜像

docker rmi ${group_name}/${app_name}:${app_version}

# 构建新版镜像

cd /mydata/docker-project/gmall-ums #jar上传到服务器的路径,一定要写对否者启动失败

docker build -t ${group_name}/${app_name}:${app_version} .

# 启动Docker镜像

docker run -p 20001:20001 --name ${app_name} \

        -e TZ="Asia/Shanghai" \

        -d ${group_name}/${app_name}:${app_version}


clean install -Dmaven.test.skip=true -pl  gmall-ums -am

Jenkins自动化发布_第9张图片
 

 

你可能感兴趣的:(jenkins,自动化,docker)