文章目录
从svn到Jenkins部署案例
所需环境: svn环境、docker环境、maven环境、jdk环境、centos8、tomcat、Jenkins、nexus
如果不需要docker 不需要maven私服 可以不需要安装 直接忽略
案例搭建的环境会多一点,实际上只需要svn和Jenkins和tomcat就可以
环境搭建
搭建jdk
本次使用jdk1.8版本,下载jdk版本 jdk-8u241-linux-x64.tar.gz
上传到centos服务器解压 tar -zxvf jdk-8u241-linux-x64.tar.gz
配置环境变量:# vim /etc/profile
export JAVA_HOME=/usr/local/java/jdk/jdk1.8.0_241
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
执行source /etc/profile
查看jdk是否安装成功 java -version
出现这个表示成功
搭建maven
和jdk类似同样下载解压配置环境变量。
最终的profile文件
export JAVA_HOME=/usr/local/java/jdk/jdk1.8.0_241
export M2_HOME=/usr/local/java/maven/apache-maven-3.6.3
export PATH=$JAVA_HOME/bin:$M2_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
测试maven是否安装成功:mvn -version
出现这个表示成功
搭建docker环境
搭建docker
centos7: $ sudo yum install docker
centos8:
#centos8直接yum后启动会出错Failed to start docker.service: Unit not found,需要使用centos8的步骤。
#卸载docker:
yum -y remove docker docker-common docker-selinux docker-engine
#安装yum-config-manager命令:
yum -y install yum-utils
#设置yum源:
#阿里云yum源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#安装新版的containerd.io软件包
wget https://download.docker.com/linux/centos/7/x86_64/edge/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm
yum -y install containerd.io-1.2.6-3.3.el7.x86_64.rpm
#安装完成后重新安装Docker
yum -y install docker-ce
测试是否安装成功:docker -v
表示成功
设置开机自启:systemctl enable docker
搭建dockercompose
安装:
curl -L https://github.com/docker/compose/releases/download/1.23.0-rc3/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose version
表示成功
搭建svn
安装:yum install subversion
测试svn安装是否成功:svn --version
出现一大串信息表示成功
创建svn文件夹 将所有版本库都放到这个文件夹中
创建版本库:svnadmin create 版本库路径
版本库创建好,会出现conf文件夹,该文件夹有svn的配置文件
- svnserve.conf:服务配置
- passwd:用户账号密码
- authz :用户权限
修改svnserve.conf:该文件仅由一个[general]配置段组成。
[general]
anon-access = none #j不允许匿名访问
auth-access = write
password-db = passwd #passwd文件的目录
authz-db = authz #authz文件的目录
在passwd 配置用户名密码
[users]
用户名 = 密码
在authz 配置用户名的访问权限
[/]
l用户名 = rw
表示在svn启动路径下的该用户的权限为可读可写
启动svn:svnserve -d -r /usr/local/svn
搭建nexus
通过dockercompose搭建私服
创建docker-compose.yml文件
version: '3'
services:
nexus:
image: sonatype/nexus3
restart: always
container_name: nexus
ports:
- "8081:8081"
volumes:
- /usr/local/nexus/data:/nexus-data
启动 docker-compose up -d
访问http://ip:8081/
如果nexus3占用内存太大 内存不足的话使用nexus2版本
version: '3'
services:
nexus:
image: sonatype/nexus
restart: always
container_name: nexus
ports:
- "8081:8081"
volumes:
- /usr/local/nexus/data:/nexus-data
# - /usr/local/nexus/conf:/opt/sonatype/nexu
第一次启动需要把conf这行给注释掉否则报错
启动后 通过docker cp nexus:/opt/sonatype/nexus/conf ./
nexus 是容器名 /opt/sonatype/nexus/conf 容器内文件的路径 ./表示复制到当前路径
然后开启 # - /usr/local/nexus/conf:/opt/sonatype/nexu 这一行
再次启动
访问http://ip:8081/nexu
如果出现这种情况
解决方案:在复制出来的conf中找到nexus.properties
修改nexus.properties
nexus-webapp-context-path=/nexus
再次访问
项目pom文件配置
<repositories>
<repository>
<id>public</id>
<name>nexus</name>
<url>http://ip:8081/nexus/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>public</id>
<name>nexus</name>
<url>http://ip:8081/nexus/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
<distributionManagement>
<repository>
<id>nexus-release</id>
<name>nexus release</name>
<url>http://ip:8081/nexus/content/repositories/releases/</url>
</repository>
<snapshotRepository>
<id>nexus-snapshot</id>
<name>nexus snapshot</name>
<url>http://ip:8081/nexus/content/repositories/snapshots/</url>
</snapshotRepository>
</distributionManagement>
maven settings 文件配置 快照和发布版的用户名和密码
<server>
<id>nexus-snapshot</id>
<username>deployment</username>
<password>deployment123</password>
</server>
<server>
<id>nexus-release</id>
<username>deployment</username>
<password>deployment123</password>
</server>
其中id要和pom文件distributionManagement里面的快照、发布版的id相同
执行mvn clean deploy 就可以部署到nexus
搭建tomcat
通过docker compose搭建tomcat
version: '3'
services:
tomcat:
restart: always
image: tomcat:8.5.59-jdk8
container_name: tomcat8
environment:
TZ: Asia/Shanghai
JAVA_OPTS: -Xms1024m -Xmx1024m -XX:+UnlockCommercialFeatures -XX:+FlightRecorder
volumes:
- ./conf:/usr/local/tomcat/conf
- ./logs:/usr/local/tomcat/logs
- ./webapps:/usr/local/tomcat/webapps
ports:
- 8080:8080
conf目录需要从容器cp,初次启动可注释掉 - ./conf:/usr/local/tomcat/conf
启动以后执行 docker cp tomcat8:/usr/local/tomcat/conf ./
tomcat8是容器的名称,/usr/local/tomcat/conf是容器内的路径 ./表示本机的当前路径
这样就可以把容器内的配置文件拷贝出来
搭建Jenkins完成部署
下载:https://jenkins.io/download/
jenkins 支持Docker、yum、msi 等安装,在这里推荐大家直接选择war包
通过java -jar 命令启动 或者放入tomcat等容器启动都可以 默认端口8080
nohup java -jar jenkins.war &
首次启动需要密码验证和插件安装 密码验证根据查找 插件安装选择默认的就好 其他根据提示配置
等待插件安装完成
然后配置管理员账号即可
安装完成
安装其他插件
更换站点源:使用默认的源站点下载会慢
将原来的站点地址更改为:http://mirror.esuni.jp/jenkins/updates/update-center.json?
下面开始安装插件:本次需要安装的插件有svn、maven和容器部署的插件
在搜索处 搜索 Maven Integration、Deploy to container、subversion 然后安装
其他同理 安装完成后重启
配置全局环境
主要配置java、maven、
开始项目搭建:
主要配置源码管理、build、构建后操作
源码管理
bulid配置
如果是项目的话,clean install 就好 ;如果是模块需要发布到私服,clean deploy
配置构建后操作
将构建后的项目部署到tomcat
第一次构建需要从svn拉去代码,构建成功失败不重要,需要先把代码拉下来
这就是这个项目的工作环境,代码都在工作区中
配置tomcat
想要把war部署到tomcat ,tomcat容器中必须要有manager项目,
如果tomcat中没有的话就从其他的tomcat中复制一份
在tomcat目录下编辑conf/tomcat-users.xml
这样这个流程就配置好了。
访问http://ip:port/manager/
如果出现这个需要在manager/META-INF/context.xml下 将
注释
再次访问 需要输入用户名和密码 这个之前配置的admin
出现这个表示成功
重新构建项目
出现success表示部署完成