DevOps
软件开发过程&设计工具
CI/CD(持续集成和持续部署过程学习)
CODE 阶段—>服务器 01 安装 Gitlab(192.168.11.101)
利用 docker 环境:先安装 Docker 和 Docker-Compose
# 服务器01安装Gitlab
docker version
docker-compose version
systemctl stop firewalld # 关闭防火墙
mkdir docker && cd docker # /usr/local/docker
mkdir gitlab_docker && cd gitlab_docker
touch docker-compose.yml
docker search gitlab # 查询gitlab的docker镜像
docker pull gitlab:latest # 下载
docker images # 确认下载的gitlab
nano docker-compose.yml # 编辑 如下
systemctl restart docker
docker-compose logs -f # 可通过浏览器访问192.168.11.101:8929查看gitlab
编辑 docker-compose.yml 文件,设置为 docker 启动就会让 gitlab 启动
version: '3.1'
services:
gitlab:
image: 'gitlab-image' # 镜像名称
container-name: gitlab # 容器名称
restart: always # 随着docker启动而启动
environment:
GITLAB_OMNIBUS_CONFIG:
external_url 'http://192.168.11.101:8929' # 当前宿主机ip
gitlab_rails['gitlab_shell_ssh_port']=2224
ports:
- '8989:8989'
- '2224:2224'
volumes:
- './config:/etc/gitlab'
- './logs:/var/log/gitlab'
- './data:/var/opt/gitlab'
进入 docker 中的 gitlab 镜像编辑:
docker exec -it gitlab bash
cat /etc/gitlab/initial_root_password #找到gitlab密码,在浏览器中修改
# 在gitlab中创建新仓库,用于开发推送
BUILD 阶段—>服务器 02 安装 Maven,JDK(192.168.11.102)
# Tip 修改虚拟机ip地址 超级模式下:
nano /etc/sysconfig/network-scripts/ifcfg-ens33
systemctl restart network
# 安装maven 安装jdk8
tar -zxvf maven -C /usr/local
tar -zxvf jdk8 -C /usr/local
cd maven && nano conf/settings.xml # 设置maven 的阿里云镜像
# maven默认使用jdk1.8版本
<profile>
<id>jdk8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler,target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
OPERATE 阶段—>服务器 02 安装 Docker
# 安装Docker
docker install # 各种方法
chmod +x docker-compose # 同时也要安装并赋予可执行
echo $PATH && mv docker-compose /usr/bin # 添加环境变量
systemctl start docker # 启动
systemctl enable docker # 开机自启动
docker version # 确定安装成功
docker-cmopose version
INTEGRATE 阶段—>服务器 02 安装 Jenkins
CI 可以理解为:Jenkins 将代码拉取、构建、制作镜像交给测试人员测试。 持续集成:将代码持续的集成到主干上,并自动构建和测试
CD 可以理解为:通过 Jenkins 将打包好标签的发行版本代码拉取、构建、制作镜像交给运维人员部署。 持续交付:让经过持续集成的代码可以进行手动部署。 持续部署:让可以持续交付的代码随时随地的自动化部署
# 安装Jenkins
docker pull jenkins/jenkins
cd /usr/local && mkdir docker
cd docker && mkdir jenkins_docker
touch docker-compose.yml # jenkins相关
docker-compose up -d
chmod -R 777 data # 给docker权限
docker-compose restart
docker logs -f jenkins # 获取密码
# 访问jenkins首页 192.168.11.102:8080并设置,下载插件
# Git parameter & Publish over SSH
编辑 docker-compose.yml
version: "3.1"
services:
jenkins:
image: "jenkins/jenkins:version-number" # 镜像名称
container-name: jenkins # 容器名称
ports:
- "8080:8080"
- "50000:50000"
volumes:
- "./data/:/var/jenkins_home/" # 前面是宿主机,后面是镜像中项目和插件的位置
将 jdk 和 maven 移动到 jenkins 的 data 目录下
cd /usr/local/docker/jenkins_docker/data
mv /usr/local/jdk/ ./
mv /usr/local/maven/ ./
# 在容器中制定jdk和maven,可以在浏览器中全局设置中设置
在浏览器中全局设置中设置
在浏览器中系统设置中设置,发布地址
CI 过程
创建 git 仓库并推送代码
通过 Freestyle Project 设置 Jenkins
Build now
拉取到 jenkins
Configure
Build
Add build step: Invoke top-level Maven targets
Post-build-actions
构建 docker 镜像
构建 docker yml 文件
jenkins 拉取文件汇总
自动构建后执行
查看效果
CD 过程
通过 Git parameter 根据 tag 进行拉取
根据 tag 进行检查