关于devops系统的搭建

1.Docker的安装

1.下载Docker依赖组件

yum -y install yum-utils de2023-09-12 13:54:03 星期二vice-mapper-persistent-data lvm2

2.设置下载Docker的镜像源为阿里云

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

3.安装Docker服务

yum -y install docker-ce

4.设置docker开机自启

# 启动Docker服务
systemctl start docker
# 设置开机自动启动
systemctl enable docker

5.测试安装成功

docker version

6.docker-compose安装
下载Docker/Compose:https://github.com/docker/compose

将下载好的docker-compose-Linux-x86_64文件移动到Linux操作系统:……

设置docker-compose-Linux-x86_64文件权限,并移动到$PATH目录中

# 设置文件权限
chmod a+x docker-compose-Linux-x86_64
# 移动到/usr/bin目录下,并重命名为docker-compose
mv docker-compose-Linux-x86_64 /usr/bin/docker-compose

2.git以及gitlab安装

1.git 安装 yum install git
2.安装gitlab

# 查看镜像
docker search gitlab

# 拉取镜像
docker pull gitlab/gitlab-ce

3.docker-compose 启动 gitlab
3.1准备docker-compose.yml文件
放到自己指定文件夹下

version: '3.1'
services:
  gitlab:
    image: 'gitlab/gitlab-ce:latest'
    container_name: gitlab
    restart: always
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'http://192.168.11.11:8929'//写自己的ip
        gitlab_rails['gitlab_shell_ssh_port'] = 2224
    ports:
      - '8929:8929'
      - '2224:2224'
    volumes:
      - './config:/etc/gitlab'
      - './logs:/var/log/gitlab'
      - './data:/var/opt/gitlab'

3.2启动容器
在指定文件夹下:

# 启动容器
docker-compose up -d

访问http://192.168.11.11:8929
效果:
image
4.查看初始的用户的用户名和密码

docker exec -it gitlab cat /etc/gitlab/initial_root_password

5.登录并修改密码
用户名为:root 密码为上一步查询到的密码
image
image

3.Jenkins

3.1安装

1.拉取镜像

docker pull jenkins/jenkins

2.编写对应的docker-compose.yml

version: "3.1"
services:
  jenkins:
    image: jenkins/jenkins
    container_name: jenkins
    ports:
      - 8080:8080
      - 50000:50000
    volumes:
      - ./data/:/var/jenkins_home/

3.设置数据卷data目录的权限,否则会包没有对应权限

chmod -R a+w data/

4.设置Jenkins的下载地址
重新启动Jenkins容器后,由于Jenkins需要下载大量内容,但是由于默认下载地址下载速度较慢,需要重新设置下载地址为国内镜像站
复制一段即可。

# 修改数据卷中的hudson.model.UpdateCenter.xml文件
<?xml version='1.1' encoding='UTF-8'?>
<sites>
  <site>
    <id>default</id>
    <url>https://updates.jenkins.io/update-center.json</url>
  </site>
</sites>
# 将下载地址替换为http://mirror.esuni.jp/jenkins/updates/update-center.json
<?xml version='1.1' encoding='UTF-8'?>
<sites>
  <site>
    <id>default</id>
    <url>http://mirror.esuni.jp/jenkins/updates/update-center.json</url>
  </site>
</sites>
# 清华大学的插件源也可以https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json 建议这个

5.再次重启Jenkins容器,访问JenKins
6.查看JenKins登录密码,并登录JenKins然后安装对应插件

docker exec -it jenkins cat /var/jenkins_home/secrets/initialAdminPassword

输入管理员密码 - 选择插件来安装 - 选择对应的插件进行安装
推荐安装:
①Git Parameter
②Publish Over SSH
直接搜索即可
然后等待插件安装成功进入首页。(可能会出现下载失败的插件,重新下载即可)
7.创建管理员用户,设置Jenkins URL
image

3.2使用

准备好GitLab仓库中的项目,并且通过Jenkins配置实现当前项目的DevOps流程。(Idea创建之后推送到远程即可)
1.构建Maven工程发布到GitlLab、Gitee、GitHub均可

2.点击Jenkins左侧新建任务(选择自由风格的项目)

3.配置源码拉取地址
image
4.构建项目,点击立即构建,在构建历史中,点击标题,可以查看控制输出来确定是否构建成功。

5.配置Maven构建代码
准备jdk,maven压缩包
jdk:https://www.oracle.com/cn/java/technologies/downloads/#java8-linux
maven:https://maven.apache.org/download.cgi
解压压缩包,在maven的setting.xml中配置

<!-- 阿里云镜像地址 -->
<mirror>  
    <id>alimaven</id>  
    <name>aliyun maven</name>  
    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
    <mirrorOf>central</mirrorOf>          
</mirror>
<!-- JDK1.8编译插件 -->
<profile>
    <id>jdk-1.8</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>

Jenkins配置JDK&Maven并保存
在之前的docker-compose中更改 docker-compose.yml文件
image
将jdk、maven,通过数据卷映射到Jenkins容器内部
配置完成后需要用 docker-compose up -d 重新加载容器
可进入容器内部验证是否映射进容器中

docker exec -it jenkins bash

在Jenkins中对jdk和maven进行配置
image
6.配置Jenkins任务构建代码
image
image
image
7.配置完后点立即构建,查看控制台输出
可在此处查看构建成功的jar包
image
构建成功:
image
成功后便可以进行发布测试
8.此处需要Publish Over SSH(如果未安装,可在插件管理中进行安装)
配置Publish Over SSH
配置Publish Over SSH连接测试环境、生产环境
image
配置完成后对任务进行配置
image
image
再次进行构建:
image
显示如上信息,在服务器中看到文件,便表示构建成功,如果出现transfer 0 可能由于权限导致,进入服务器更改权限即可chomd r+w -R 目录

7.CI/CD操作
基于Jenkins拉取GitLab的SpringBoot代码进行构建发布到测试环境实现持续集成
基于Jenkins拉取GitLab指定发行版本的SpringBoot进行构建发布到生产环境实现CD(持续部署)

为了让程序代码可以自动推送到测试环境基于Docker服务运行,需要添加Docker配置和脚本文件让程序可以在集成到主干的同时运行起来。

7.1 持续集成
7.1.1 添加Dockerfile文件

FROM adoptopenjdk/openjdk8
COPY helloWorld.jar /usr/local
WORKDIR /usr/local
CMD java -jar helloWorld.jar

7.1.2 添加docker-compose.yml文件

version: '3.1'
services:
  helloworld:
    build: ./
    image: helloWorld:v1.0.0
    container_name: demo
    ports:
      - 8888:8080 #把docker中的8080端口映射到主机的8888端口

为了防止各种奇奇怪怪的问题,一下两个配置尽量打开:
image
image
同时需要给你连接的用户增加docker权限。
7.1.3 追加Jenkins构建后操作脚本命令
image

3.3 持续交付/部署

程序代码在经过多次集成操作到达最终可以交付,持续交付整体流程和持续集成类似,不过需要选取指定的发行版本
1.在Jenkins中下载Git Parameter插件
image
2.在任务中进行配置(Gerneral/参数化构建过程/选择Git参数)
image
3.在gitLab上给项目添加tag版本
image
4.任务构建时,采用Shell方式构建,拉取指定tag版本
image

4.Sonar Qube

4.1 Sonar Qube介绍与按照

Sonar Qube是一个开源的代码分析平台,支持Java、Python、PHP、JavaScript、CSS等25种以上的语言,可以检测出重复代码、代码漏洞、代码规范和安全性漏洞的问题。

Sonar Qube可以与多种软件整合进行代码扫描,比如:Maven、Gradle、Git、Jenkins等,并且会将代码检测结果推送回Sonar Qube,进而在系统提供的UI界面上显示出来

安装过程:Sonar Qube在7.9版本中已经放弃了对MySQL的支持,并且建议在商业环境中采用PostgreSQL,那么安装Sonar Qube时需要依赖PostgreSQL。

1.拉取PostgreSQL 镜像

docker pull postgres
docker pull sonarqube:8.9.3-community

2.编写docker-compose.yml

version: "3.1"
services:
  db:
    image: postgres
    container_name: db
    ports:
      - 5432:5432
    networks:
      - sonarnet
    environment:
      POSTGRES_USER: sonar
      POSTGRES_PASSWORD: sonar
  sonarqube:
    image: sonarqube:8.9.3-community
    container_name: sonarqube
    depends_on:
      - db
    ports:
      - "9000:9000"
    networks:
      - sonarnet
    environment:
      SONAR_JDBC_URL: jdbc:postgresql://db:5432/sonar
      SONAR_JDBC_USERNAME: sonar
      SONAR_JDBC_PASSWORD: sonar
networks:
  sonarnet:
    driver: bridge

3.设置sysctl.conf文件信息,并启动容器

vi /etc/sysctl.conf

设置vm.max_map_count=262411,至少是这个数

#执行命令进行刷新
sysctl -p
#启动容器
docker-compose up -d

重新启动需要一定时间,可以查看容器日志,如果看到如下内容代表启动成功
image

4.访问Sonar Qube首页
默认用户名和密码为admin
image
修改密码进入页面如图
image
安装中文插件
image
image
安装成功重启即可

4.2sonarQube基本使用(windows maven)

整合Maven实现代码检测:
修改本地Maven的setting.xml文件,配置Sonar Qube信息

<profile>
    <id>sonar</id>
    <activation>
        <activeByDefault>true</activeByDefault>
    </activation>
    <properties>
        <sonar.login>admin</sonar.login>
        <sonar.password>123456789</sonar.password>
        <sonar.host.url>http://192.168.11.11:9000</sonar.host.url>
    </properties>
</profile>

在代码所在位置的cmd执行命令mvn sonar:sonar
便可以在页面中看到分析结果
image

4.3sonarQube基本使用(linux)

1.下载对应版本Sonar-scanner: https://docs.sonarqube.org/latest/analysis/scan/sonarscanner/
2.解压

# 安装uzip解压插件
yum -y install unzip
# 解压压缩包
unzip sonar-scanner-cli/

3.配置sonarQube服务端地址,修改conf下的sonar-scanner.properties

#Configure here general information about the environment, such as SonarQube server connection details for example
#No information about specific project should appear here
sonar.login=admin

sonar.password=123456
#----- Default SonarQube server
sonar.host.url=http://localhost:9000

#----- Default source code encoding
sonar.sourceEncoding=UTF-8

4.在代码目录下执行命令检测代码(需要有源代码)

# 在项目所在目录执行以下命令
~/sonar-scanner/bin/sonar-scanner -Dsonar.sources=./ -Dsonar.projectname=demo -Dsonar.projectKey=java -Dsonar.java.binaries=target/

4.4Jenkins集成Sonar Qube

Jenkins集成Sonar Qube实现代码扫描需要下载整合插件
1.安装SonarQube Scanner插件
image
2.在SonarQube中开启Sonar Qube的权限验证
image
在Sonar Qube中生成一个令牌,获取Sonar Qube的令牌
image
复制后在Jenkins中配置Sonar Qube信息
image
点击全局:
image
image
点击create
image
在Jenkins中的全局工具配置中配置SonarQube Scanner
将Sonar-scanner添加到Jenkins数据卷中并全局配置
配置任务的Sonar-canner
image
image

5.Harbor(镜像仓库)

前面我们在部署时,主要流程如下:

Jenkins推送jar包到服务器
通过脚本命令让目标服务器对当前jar进行部署
但是这种方式在项目比较多的时候,每个服务器都需要将jar包制作成自定义镜像,然后再通过docker进行启动,重复操作较多,降低部署效率。

Harbor:私有的Docker镜像仓库。我们可以让Jenkins统一将项目打包并制作成Docker镜像发布到Harbor仓库中。然后我们只需要通知目标服务,让目标服务统一去Harbor仓库上拉取镜像并在本地部署即可。

1.安装(通过原生的方式安装)

1.下载Harbor安装包
https://github.com/goharbor/harbor/releases/download/v2.3.4/harbor-offline-installer-v2.3.4.tgz

2.传送到linux上并解压

# 通过xftp或其他方式将压缩包传送到linux上
# 解压
tar -zxvf harbor-offline-installer-v2.3.4.tgz -C /usr/local/

3.修改Harbor配置文件
设置harbor地址,注释https,查看密码

# 备份原有配置
cp harbor.yml.tmpl harbor.yml

4.启动Harbor并登录Harbor

# 启动Harbor
./install.sh

image

posted @ 2023-10-18 14:59  生活的样子就该是那样  阅读(204)  评论(0)    收藏  举报