安装docker
查看内核版本,要求高于3.10
bash
uname -r
更新yum
sql
yum update
安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
yum install -y yum-utils device-mapper-persistent-data lvm2
设置源
yum-config-manager --add-repo mirrors.aliyun.com/docker-ce/l...
安装docker
yum install docker-ce docker-ce-cli containerd.io -y
启动并加入开机启动
bash
systemctl start docker
systemctl enable docker
校验安装
docker version
安装Maven JDK
去官网下载安装包 tar.gz
maven官网:maven.apache.org/download.cg...
jdk下载官网:www.oracle.com/java/techno...
cd /var/local
本机安装包 直接上传便可
上传到服务器
解压
python
tar -zxvf apache-maven-3.8.8-bin.tar.gz
tar -zxvf jdk-8u381-linux-x64.tar.gz
改名
bash
mv apache-maven-3.8.8 maven3
mv jdk-8u381-linux-x64 jdk8
编辑环境变量
vim /etc/profile
添加maven,jdk地址
bash
export JAVA_HOME=/var/local/jdk1.8
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
export M2_HOME=/var/local/maven3
export PATH=$PATH:$JAVA_HOME/bin:$M2_HOME/bin
更新环境变量
source /etc/profile
配置阿里镜像
vim /var/local/maven3/conf/settings.xml
找到 标签,在改标签中添加如下代码
放到标签 中
xml
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
查看是否按照成功
jdk
maven
docker安装Jenkins
安装Jenkins 机器上必须要有jdk
如果没有执行以下命令
yum install -y java-1.8.0-openjdk.x86_64
搜索镜像
docker search jenkins
拉取镜像
docker pull jenkins/jenkins:2.414.2
创建容器 开放8080端口和50000端口 挂载目录 创建容器名称
jdk 和maven地址记住也要挂载到容器中,不然容易找不到路径
docker run -d -u root -p 8080:8080 -p 50000:50000 -v /var/jenkins_home:/var/jenkins_home -v /etc/localtime:/etc/localtime -v /var/local/jdk1.8:/var/local/jdk1.8 -v /var/local/maven3:/var/local/maven3 --name jenkins jenkins/jenkins:2.414.2
option | 作用 |
---|---|
-i | 以交互模式运行容器,通常与 -t 同时使用 |
-t | 启动容器后,为容器分配一个命令行,通常与 -i 同时使用 |
-v | 目录映射,容器目录挂载到宿主机目录,格式: <host目录>:<容器目录> |
-d | 守护进程,后台运行该容器 |
-p | 指定端口映射,格式:主机(宿主)端口:容器端口 |
-P | 随机端口映射,容器内部端口随机映射到主机的端口(49153起始 49153到65535) |
-u | 以什么用户身份创建容器 |
--name "jenkins" | 容器名字 |
-m, --memory bytes | 设置容器使用内存最大值 |
-h, --hostname string | 指定容器的 host name |
--dns 8.8.8.8 | 指定容器 dns 服务器 |
-e username="ritchie" | 设置环境变量 |
--restart Docker | 重启后,容器是否自动重启 |
--privileged | 容器内是否使用真正的 root 权限 |
启动容器
docker start jenkins
启动成功后通过ip地址+8080访问
通过log查看密码 docker ps 查找容器id
docker logs ddf61266cf14
输入密码
点击继续后,选择 按照推荐安装插件。然后继续等待。
安装好后则可创建用户密码
成功安装Jenkins。
下载安装插件
sql
需要安装的插件有:
Publish Over SSH
Maven Integration
GitLab
GitLab Hook
GitLab Authentication
GitLab API
Git
Git client Plugin
Git Parameter
安装完毕重启Jenkins
安装git
安装
yum -y install git
查看是否安装
git service
docker安装GitLab
拉取镜像
docker pull gitlab/gitlab-ce
运行镜像 默认端口是80 但是我这里80端口被占用了 所以改成880了
docker run -d -p 443:443 -p 880:80 -p 222:22 --name gitlab --restart always -v /home/gitlab/config:/etc/gitlab -v /home/gitlab/logs:/var/log/gitlab -v /home/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce
修改配置文件
vim /home/gitlab/config/gitlab.rb
修改的内容
arduino
external_url 'http://IP' 配置http协议所使用的访问地址,不加端口号默认为80,如果上面修改了端口号,格式为 http://(IP):(端口)
gitlab_rails['gitlab_ssh_host'] = 'IP' 配置ssh协议所使用的访问地址和端口
gitlab_rails['gitlab_shell_ssh_port'] = 222 此端口是run时22端口映射的222端口
重新运行容器
docker restart gitlab
记得要开放端口 我这里配置的端口是880
http:ip:端口号 能看见这页面说明安装成功
查看root密码
进入容器
docker exec -it 容器id /bin/bash
查看密码
cat /etc/gitlab/initial_root_password
D7xHWrkISUSYvyBkFiYH6FWXSdCfsRBqfq1JnBBDefI=
创建仓库将代码上传到gitLab中
配置ssh
在本地打开git bash 生成ssh公钥和私钥
scss
ssh-keygen -t rsa -C '[email protected]'
ssh-keygen -t rsa -C '[email protected]'
-C 参数是你的邮箱地址
查看公钥
shell
# ~表示用户目录,比如我的windows就是C:\Users\Administrator,并复制其中的内容
$ cat ~/.ssh/id_rsa.pub
打开gitLab
添加公钥到这里 添加添加 这样本地就能上传代码到服务器了,先将要部署的代码上传到服务器。
使用Jenkins流水线部署项目
配置Jenkins
配置maven
配置jdk
配置git
如果直接使用yum安装的默认地址就是这个
配置Jenkins连接gitlab
1.登录gitLab获取密钥
2.复制令牌
3.进入Jenkins系统设置
4.找到gitlab设置,注意url需要 http:// 开头
5.测试连接
这样子就是连接成功了
6.进行ssh连接配置(项目部署在远程主机需要)
7.新建一个任务
8.复制GitLab中要部署的项目地址
9.配置
默认就不用加端口号的 仓库地址
选择分支
10.构建触发器
点击高级
记录token b037f6df6806aea27d592d3d3e65b78d
最后点击保存。
11.在gitlab项目中设置webhooks
将上面要求记录的值 都放到这里
如果出现
设置这个再试一次
点击测试
显示200
至此,完成了gitlab与Jenkins的互通
设置ssh脚本
点击刚才构建的maven项目
设置maven命令 先清除后打包
找到这个
往下拉找到 Add post-buld step 然后选择seed files or executecommands over SSH
命令的大概意思就是
复制jar包到/var/jenkins_home/jar 这个目录。如果没有可提前创建
jar的位置一般在挂载的jenkins_home目录下面的workspace目录下面的构建的项目名称下面。找到自己对应的jar位置。然后修改
后面的命令大概就是查询是否有这个进程 没有就启动jar包
bash
cp /var/jenkins_home/workspace/dz-community/subject/subject-starter/target/subject-starter.jar /var/jenkins_home/jar
#!/bin/bash
APP_NAME=subject-starter.jar
LOG_NAME=subject-starter.log
pid=`ps -ef | grep $APP_NAME | grep -v grep|awk '{print $2}'`
function is_exist(){
pid=`ps -ef | grep $APP_NAME | grep -v grep|awk '{print $2}'`
if [ -z ${pid} ]; then
String="notExist"
echo $String
else
String="exist"
echo $String
fi
}
str=$(is_exist)
if [ ${str} = "exist" ]; then
echo " 检测到已经启动的程序,pid 是 ${pid} "
kill -9 $pid
else
echo " 程序没有启动了 "
echo "${APP_NAME} is not running"
fi
str=$(is_exist)
if [ ${str} = "exist" ]; then
echo "${APP_NAME} 已经启动了. pid=${pid} ."
else
source /etc/profile
BUILD_ID=dontKillMe
nohup java -Xms300m -Xmx300m -jar /var/jenkins_home/jar/$APP_NAME >$LOG_NAME 2>&1 &
echo "程序已重新启动..."
fi
在项目上点击构建后,在控制输出这样就表示成功了。打开apifox 调用后端就能查看项目是否启动成功
也可以查看端口是否启动 netstat -ntlp