本次自动化部署平台基于jenkins+docker+k8s+gitlab
jenkins安装
Docker安装
docker安装(openssh8.4版本会存在执行shell时候杀死衍生进程,解决方法请参考https://blog.csdn.net/weixin_43159975/article/details/112644477
拉取jenkins镜像
docker pull jenkins/jenkins:latest
jenkins镜像查看
docker images
启动jenkins镜像
docker run -d -p 10240:8080 -p 10241:50000 -v /home/jenkins_mount:/var/jenkins_home -v /etc/localtime:/etc/localtime --name myjenkins jenkins/jenkins #10240为宿主机访问端口 8080为docker容器端口 -d后台运行 -v挂载目录
这里可能会遇到一个小问题,就是我们启动容器后会发现运行状态一直都是 Exited
解决办法:
chown -R 1000:1000 /home/jenkins_mount
查看docker日志 docker log suntechjenkins 发现是目前权限问题
因为/home/jenkins_mount 目录是root权限
我们修改完重新运行就好了
这时候我们去浏览器输入 ip:10240 就可以访问jenkins了
查看密码:
cat /var/jenkins_home/secrets/initialAdminPassword
jenkins配置
插件安装
输入密码进来之后我们选择默认的安装推荐插件就好(这里需要等待的时间比较长)
创建用户:(创建后第一次重新登录,可能会出现用自己刚创建的账号密码登不上的情况,如果登不上,可以尝试用之前的密码试一下)
实例配置: 可以直接先跳过
jenkins升级和配置
jenkins升级 ,在manage jenkins目录下(在红框位置左右,会有提示升级的,直接升级就好,我已经升级了,不然有些插件安装不上。)
安装Maven插件
插件安装点击Manage Jenkins后再点击Manage Plugins再搜索你需要的插件安装即可
以下几个插件推荐安装:
Docker plugin : 提供docker 构建和发布
docker-build-step
Gitlab Hook Plugin
GitLab Plugin
SSH plugin : 提供通过SSH在远程主机执行命令,用于部署服务
maven plugin: 支持maven
配置Maven
打开Manage Jenkins然后Global Tool configuration往下翻找到Maven
这里版本根据自己项目实际情况选择
配置JDK8
这里应为容器默认为jdk11,其他版本可以直接在jenkins中自动安装(这里需要用到Oracle账号,没有请自行注册)
打开Manage Jenkins然后Global Tool configuration
根据提示 我们在这里输入自己的Oracle账号然后保存
构建项目
这里以java项目为例 所以就选择maven项目
修改项目配置
进入到项目管理里面我们先修改git仓库地址,剩余的其他配置根据自己需求修改
配置触发器
配置自动构建,勾选POLL SCM,配置5分钟检查一次,当发生变化时,会自动启动构建
Build Triggers 构建触发器的配置
【构建触发器中配置,会获取到文章开始提到的URL和Token,这两个东西需要记录下来,供gitlab配置webhook使用】
配置Build
简单的maven项目,构建使用pom.xml,执行package -DskipTests
配置Post Steps
Post Steps是指构建完成执行的步骤,我们会实现构建docker,发布docker和部署服务
配置docker
点击add post-build step,选择Build/publish docker image:
选择cloud为先前配置的docker-cloud,image填写私服发布地址,勾上push image。
构建脚本
echo '================开始推送镜像================'
sudo docker login --username=用户名 --password=密码 registry-internal.cn-hangzhou.aliyuncs.com
sudo docker push registry-internal.cn-hangzhou.aliyuncs.com/xxx/demo-service
echo '================结束推送镜像================'
echo '================开始远程启动================'
ssh buxiaoxia@192.168.100.2 -tt << remotessh ###首先要ssh上去注意这里的<< remotessh,需要做公钥密钥
####从这里开始都是在远程机器上执行命令
cd /home/buxiaoxia/xiaw
./jenkins.sh registry-internal.cn-hangzhou.aliyuncs.com/xxx/demo-service
sudo docker login --username=用户名 --password=密码 registry-internal.cn-hangzhou.aliyuncs.com
sudo docker pull registry-internal.cn-hangzhou.aliyuncs.com/xxx/demo-service
sudo docker run -d -m 300m --name=demo-service-`date +%Y-%m-%d` --restart=always registry-internal.cn-hangzhou.aliyuncs.com/xxx/demo-service
echo "finished!"
#####执行完毕
exit ###退出远程机器
remotessh ###结尾哦
echo '================结束远程启动================'
jenkins.sh 脚本内容:
#!/bin/sh
sudo docker stop (sudo docker ps | grep1|awk '{print $1}'|sed 's/%//g')
以上就完成了一个简单的自动化构建