视频版本在 springboot-jenkins-gitlab自动化部署1_哔哩哔哩_bilibili
环境:
-
win安装虚拟机 版本:centos7
-
服务器必须 内存4G 以上
所需知识
-
centos7
-
jdk8
-
maven3
-
docker
-
gitlab
-
jenkins
步骤:
-
安装jdk8
-
安装maven(也可以在 docker 中的jenkins 安装)
-
安装docker
-
配置docker
-
在docker 中安装 jenkins
-
在docker 中安装 gitlab
-
配置自动化部署
1. 安装jdk8
先查询当前虚拟机是否配置了jdk
java -version
如果没有配置, 下载安装
yum install java-1.8.0-openjdk-devel
配置环境变量
vim /etc/profile
打开 /etc/profile 把下面的 配置复制到最后
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.382.b05-1.el7_9.x86_64 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${PATH}:${JAVA_HOME}/bin
刷新配置文件
source /etc/profile
再次查询版本
java -version
2. 安装maven(也可以在 docker 中的jenkins 安装)
官网下载地址
Maven – Maven Releases History
最好和我一样下载 3.6.2及以下
不要下载最新版本(3.9), 因为我 maven 下载镜像仓库配置的是 aliyun, 导致一些插件下载有问题
安装
安装目录
mkdir -p /data/maven/apache-maven-3.6.2
安装的位置最好不要变动, 因为会影响到jenkins中 容器挂载的一些参数
cd /data/maven/apache-maven-3.6.2
解压
tar -zxvf apache-maven-3.6.2-bin.tar.gz
配置环境变量
vim /etc/profile
打开 /etc/profile 把下面的 配置复制到最后
export M2_HOME=/data/maven/apache-maven-3.6.2 export CLASSPATH=$CLASSPATH:$M2_HOME/lib export PATH=$PATH:$M2_HOME/bin
刷新配置文件
source /etc/profile
查询版本
mvn -v
配置setting.xml
cd /data/maven/apache-maven-3.6.2/conf/ vim settings.xml
主要是配置 本地maven仓库和远程maven仓库
<localRepository>/data/maven/mavenData</localRepository>
<mirror> <id>nexus-aliyun</id> <mirrorOf>central</mirrorOf> <name>Nexus aliyun</name> <url>http://maven.aliyun.com/nexus/content/groups/public</url> </mirror>
完整文件
可以直接复制粘贴
记得更改 localRepository 或者创建 /data/maven/mavenData 文件夹 作为本地maven仓库
<?xml version="1.0" encoding="UTF-8"?> <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> <localRepository>/data/maven/mavenData</localRepository> <pluginGroups> </pluginGroups> <proxies> </proxies> <servers> </servers> <mirrors> <mirror> <id>nexus-aliyun</id> <mirrorOf>central</mirrorOf> <name>Nexus aliyun</name> <url>http://maven.aliyun.com/nexus/content/groups/public</url> </mirror> </mirrors> <profiles> </profiles> </settings>
3. 安装docker
yum安装gcc相关
yum -y install gcc
yum -y install gcc-c++
安装需要的软件包
yum install -y yum-utils
设置stable镜像仓库
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
更新yum软件包索引
yum makecache fast
下载 docker
yum -y install docker-ce docker-ce-cli containerd.io
启动docker
systemctl start docker
设置开机启动
systemctl enable docker
测试
docker version
docker run hello-world
常用命令
#启动docker systemctl start docker #停止docker systemctl stop docker #查询docker 状态 systemctl status docker # 查询镜像容器占用的空间 docker system df # 查询镜像 docker images # 删除镜像 docker rmi 镜像id # 下载镜像 docker pull 镜像名称 # 新建 + 启动容器 docker run [OPTIONS] IMAGE [COMMAND] [ARG...] # 进入容器内部 docker exec -it 容器id/容器名 /bin/bash # 启动容器 docker start 容器id/容器名 # 停止容器 docker stop 容器id/容器名 # 查询运行中的容器 docker ps # 删除容器 docker rm 容器别名/容器id # 强制删除容器 docker rm 容器别名/容器id # 查询停用的容器 docker ps -qf status=exited
4.配置docker
设置阿里云镜像加速
结果
执行下面代码
注意 https://1uqry4vp.mirror.aliyuncs.com 这是我的镜像地址, 请使用自己的
sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://1uqry4vp.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker
图片步骤
执行 红框中的文字
就完成了 配置
5. 在docker 中安装 jenkins
下载镜像
docker pull jenkins/jenkins:2.346.1
运行容器
docker run -p 8091:8080 \ -u root --privileged=true --name jenkins -d \ --restart always \ -v /data/jenkins/jenkins_home:/var/jenkins_home \ -v /data/maven:/data/maven \ -v /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.382.b05-1.el7_9.x86_64:/data/jdk8 \ -v /usr/share/javazi-1.8:/usr/share/javazi-1.8 \ -v /var/run/docker.sock:/var/run/docker.sock \ -v $(which docker):/usr/bin/docker \ jenkins/jenkins:2.346.1
-v /var/run/docker.sock:/var/run/docker.sock
-v $(which docker):/usr/bin/docker
挂载docker运行变量到容器,否则无法在容器内使用docker命令
进入容器
docker exec -it jenkins /bin/bash
查看密码
cat /var/jenkins_home/secrets/initialAdminPassword
报错
touch: cannot touch ‘/var/jenkins_home/copy_reference_file.log’: Permission denied Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?解决
chown -R 1000 路径
url
http://192.168.2.203:8091/
下载插件
方法1
可能因为网络关系导致下载插件失败
可以直接使用我提供的
下载完成后 停止 jenkins ,
进入 jenkins_home\plugs
把我的plugs 替换 原先的 plugs
方法2
第一步:
系统管理->插件管理->高级->升级站点
url 从 https://updates.jenkins.io/update-center.json
改为 https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
第二步:
在docker容器中 使用下面命令
cd /jenkins_home/updates
sed -i 's#updates.jenkins.io/download/plugins#mirrors.tuna.tsinghua.edu.cn/jenkins/plugins#g' default.json
sed -i 's#www.google.com#www.baidu.com#g' default.json
如果重启jenkins 后此次替换失效
也可以通过nginx 代理去解决
配置
设置jenkins 环境变量
JAVA_HOME
/data/jdk8
M2_HOME
/data/maven/apache-maven-3.6.2
PATH+EXTRA
$M2_HOME/bin
添加jdk.maven
路径:系统设置 -> 全局工具设置->
如果要把打包好的jar/war 包 放入tomcat 中, 需要 安装 Deploy to container插件
问题:
时区问题
系统管理->脚本命令行
System.setProperty('org.apache.commons.jelly.tags.fmt.timeZone', 'Asia/Shanghai')
对已经运行的容器修改挂载文件
cd /var/lib/docker/containers/containers_id
修改下面两个文件 config.v2.json hostconfig.json
systemctl restart docker
注意:要重启docker服务,否则修改的配置文件无效,会被还原
docker start containers_id
构建maven项目时报错
Failed to create parent directories for tracking file /etc/maven/apa
没有权限导致的
递归设置 maven仓库 的目录权限
chmod -R 777 /etc/maven/
java.security.InvalidAlgorithmParameterException
Downloading from nexus-aliyun:`[`http://maven.aliyun.com/nexus/content/groups/public/org/apache/maven/plugins/maven-clean-plugin/2.5/maven-clean-plugin-2.5.pom`](http://maven.aliyun.com/nexus/content/groups/public/org/apache/maven/plugins/maven-clean-plugin/2.5/maven-clean-plugin-2.5.pom)`[INFO] ------------------------------------------------------------------------[INFO] BUILD FAILURE[INFO] ------------------------------------------------------------------------[INFO] Total time: 2.042 s[INFO] Finished at: 2023-09-18T13:23:26Z[INFO] ------------------------------------------------------------------------ [ERROR] Plugin org.apache.maven.plugins:maven-clean-plugin:2.5 or one of its dependencies could not be resolved:Failed to read artifact descriptor for org.apache.maven.plugins:maven-clean-plugin:jar:2.5:Could not transfer artifact org.apache.maven.plugins:maven-clean-plugin:pom:2.5from/to nexus-aliyun (`[`http://maven.aliyun.com/nexus/content/groups/public`](http://maven.aliyun.com/nexus/content/groups/public)`): Unexpected error:java.security.InvalidAlgorithmParameterException:the trustAnchors parameter must be non-empty -> [Help 1]
添加maven 参数
-Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true
6. 在docker 中安装 gitlab
下载镜像
docker pull gitlab/gitlab-ce:latest
运行容器
docker run -d -p 8443:443 -p 8090:80 -p 8022:22 \ --restart always --name gitlab \ -v /data/gitlab/etc:/etc/gitlab \ -v /data/gitlab/log:/var/log/gitlab \ -v /data/gitlab/data:/var/opt/gitlab \ --privileged=true gitlab/gitlab-ce:latest
配置
1.进入容器
docker exec -it gitlab /bin/bash
2.修改gitlab.rb文件
vi /etc/gitlab/gitlab.rb
external_url 'http://192.168.2.203'
http://192.168.2.203 是你的服务器地址
3.配置gitlab.yml文件
// 文件路径 /opt/gitlab/embedded/service/gitlab-rails/config
vi /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml
//修改host 与上面.rb文件修改的一致 // 修改port 为 8090
4.重启服务
注:此命令为容器内重启服务命令
gitlab-ctl restart
gitlab地址
http://192.168.2.203:8090/
问题
访问502
一般为服务器配置不达标所致
建议升级配置
谨慎参考 :我发现一个规律, 我的gitlab 服务, 刚启动时 cpu 占比很高, 过了 10分钟后, 就会低下去, 这时候再去访问就不会502了
忘记密码
# 进入容器内部 docker exec -it gitlab /bin/bash # 进入控制台 gitlab-rails console -e production # 查询id为1的用户,id为1的用户是超级管理员 user = User.where(id:1).first # 修改密码 至少8位 user.password='新密码' # 保存 user.save! # 退出 exit
账号为 root 密码为 新密码
7. 配置自动化部署
jenkins
需要安装的插件
gitlab
1.图片教程
2.参数配置文件
脚本配置
Pre Steps
Execute shell
mvn clean package -Dmaven.test.skip=true
Post Steps
Execute shell
cd /var/jenkins_home/workspace/auto-meeting-demo docker stop meeting-demo || true docker rm meeting-demo || true docker rmi meeting-demo || true docker build -t meeting-demo . docker run -d -p 8088:8088 --name meeting-demo meeting-demo:latest
Dockerfile
在项目的根路径下创建 Dockerfile 文件
文件内容如下
# 基础镜像 FROM openjdk:8 # 维护人 MAINTAINER shenchen<17786925624@163.com> # 创建目录 RUN mkdir -p /data/app #指定挂载目录 VOLUME /tmp # 拷贝项目jar ADD target/meeting-demo-1.0.1-SNAPSHOT.jar /data/app/meeting-demo.jar # 执行命令启动jar ENTRYPOINT ["java","-jar","/data/app/meeting-demo.jar"] # 暴露端口 EXPOSE 8088