基于jenkins自动化部署
基于jenkins的自动化部署(适合初学者)
前置条件
需要配置:centos7
安装配置前置应用
安装并配置maven
<!--
当前maven仓库地址/data/maven/repository
maven中需要在<pluginGroups>中配置
-->
<pluginGroup>com.spotify</pluginGroup>
安装并配置docker,安装docker-compose
vim /lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
systemctl daemon-reload
service docker restart
安装registry(镜像仓库)
registry latest 2d4f4b5309b1 4 months ago 26.2MB
安装gitlab
创建目录
/usr/local/docker/gitlab/config
/usr/local/docker/gitlab/data
/usr/local/docker/gitlab/logs
使用docker compose
version: '3'
services:
gitlab:
image: 'twang2218/gitlab-ce-zh'
restart: always
hostname: 'ip'
environment:
TZ: 'Asia/Shanghai'
GITLAB_OMNIBUS_CONFIG: |
external_url= 'http://ip'
gitlab_rails['time_zone'] = 'Asia/Shanghai'
gitlab_rails['gitlab_shell_ssh_port']= 22
unicorn['port']= 8888
nginx['listen_port']= 80
ports:
- '8089:80'
- '8443:443'
- '2222:22'
volumes:
- /home/gitlab/config:/etc/gitlab
- /home/gitlab/data:/var/opt/gitlab
- /home/gitlab/logs:/var/log/gitlab
twang2218/gitlab-ce-zh latest 18da462b5ff5 2 years ago 1.61GB
端口号:8089 8443 2222
主账户名和密码
账户名:root
密码:rootroot
访问:http://ip:8089
安装Jenkins
因为主要是自动化部署,有些可能不走docker安装,这里Jenkins安装直接用yum安装,需要使用docker安装的直行百度
yum -y install jenkins
#vim /etc/sysconfig/jenkins
JENKINS_USER="root"
JENKINS_PORT="8090"
JENKINS_HOME="/home/jenkins/jenkins"
设置并自启动
systemctl start jenkins
systemctl status jenkins
systemctl restart jenkins
密码 123456
安装git
yum install -y git
#配置git
git config --global user.name "ganghang"
git config --global user.email "ganghang@ganghang.com"
ssh-keygen -t rsa -C "ganghang@ganghang.com"
生产公钥和私钥
设置ssh连接的密码是123456,可以不设置,看个人
公钥:/root/.ssh/id_rsa.pub
私钥:/root/.ssh/id_rsa
将公钥配置到gitlab上
将私钥配置到jenkins上
配置Jenkins
按装插件:maven,gitlab
配置jenkins全局工具配置
配置jdk和maven
测试 在jenkins中运行项目
前提:gitlab仓库中有项目,并且私钥已经配置到gitlab上
- 创建一个名为 test 的maven项目
- 将gitlab中的ssh地址复制过来粘贴在Git上ssh://git@ip:2222/root/bladex.git
- 配置Credentials在centos中查看镜像在浏览器运行 http://ip:5000/v2/_catalog
配置持续集成,持续交付,持续部署
单模块构建,实例:blade-gateway
配置gitlab:
删除镜像,容器,启动容器脚本:以网关为例:
关闭并删除容器(该脚本在构建容器之前执行)
#!/bin/bash
appName="xxx_gateway"
word="1"
echo "$word"
word=`docker ps -a -q --no-trunc --filter name="$appName"`;
echo "$word"
if [ -z "$word" ];
then
echo "当前不存在该容器,直接进行启动该操作"
elif [ -n "$word" ];
then
echo "当前已存在容器,停止并移除该容器:docker stop $word ----- docker rm $word"
docker stop "$word"
docker rm "$word"
elif [ "$word" == "1" ];
then
echo "查询的信息有误,执行默认操作: docker stop $word ----- docker rm $word"
docker stop "$word"
docker rm "$word"
fi
删除镜像(该脚本在构建容器之前执行)
#!/bin/bash
appName="ip:5000/xxx-gateway"
word="1"
echo "$word"
word=`docker images -q --filter reference="$appName"`;
if [ -z "$word" ];
then
echo "当前镜像不存在,直接启动该操作"
elif [ -n "$word" ];
then
echo "当前已存在镜像,移除该镜像 docker rmi $word"
docker rmi "$word"
elif [ "$word" == "1" ];
then
echo "查询的信息有误,执行操作:docker rmi $word"
docker rmi "$word"
fi
构建镜像步骤
创建并启动容器(该脚本在构建容器之后执行)
#!/bin/bash
oldAppName="ip:5000/blade-gateway"
newAppName="blade_gateway"
port="80"
word="1"
echo "$word"
word=`docker images -q --filter reference="$oldAppName"`;
if [ -z "$word" ];
then
echo "当前镜像不存在"
elif [ -n "$word" ];
then
echo "启动镜像 : docker run -id --name $newAppName -p $port:$port $word"
docker run -id --name $newAppName -p "$port":"$port" "$word"
elif [ "$word" == "1" ];
then
echo "查询的信息有误,执行操作:docker run -id --name $newAppName -p $port:$port $word"
docker run -id --name $newAppName -p "$port":"$port" "$word"
fi
当然还有多模块一起启动,这里不做脚本啦 ,需要的朋友可以直行写脚本安装啦!!!