DevOps持续集成-Jenkins(1)

文章目录

DevOps

DevOps概述

软件开发最初是由两个团队共同组成:(没有采用DevOps之前)

  • 开发团队:从头开始设计和整体系统的构建(编写代码)。需要系统不停的迭代更新。
  • 运维团队:将开发团队的代码进行测试通过后再部署上线。确保系统稳定运行。

没有采用DevOps的缺点:

  • 这看似两个目标不同的团队需要协同完成一个软件的开发。在开发团队指定好计划并完成编写代码后,需要把代码交给运维团队。运维团队向开发团队反馈需要修复的BUG以及一些需要返工的任务。这时开发团队需要经常等待运维团队的反馈。这无疑会延长整个软件开发的周期。

采用DevOps的优点?

  • DevOps的方式可以让公司能够更快地应对更新和市场发展变化,开发可以快速交付,部署也更加稳定。核心就在于简化Dev和Ops团队之间的流程,使整体软件开发过程更快速。说白了就是DevOps有利于快速完成项目,不会浪费时间)

整体的软件开发流程:

  • PLAN:开发团队根据客户的目标制定开发计划
  • CODE:根据PLAN开始编码过程,需要将不同版本的代码存储在一个库中。
  • BUILD:编码完成后,需要将代码构建并且运行。
  • TEST:成功构建项目后,需要测试代码是否存在BUG或错误。
  • DEPLOY:代码经过手动测试和自动化测试后,认定代码已经准备好部署并且交给运维团队。
  • OPERATE:运维团队将代码部署到生产环境中。
  • MONITOR:项目部署上线后,需要持续的监控产品。
  • INTEGRATE:然后将监控阶段收到的反馈发送回PLAN阶段,整体反复的流程就是DevOps的核心即持续集成、持续部署。

为了保证整体流程可以高效的完成,各个阶段都有比较常见的工具,如下图:

Code阶段工具(centos7-gitlab主机)

  • 在code阶段,我们需要将不同版本(tag)的代码存储到一个远程仓库中,常见的版本控制工具就是SVN或者Git,这里我们采用Git作为版本控制工具,GitLab作为远程仓库。(GitHub和Gitee都可以,不过生产上用GitLab更多)

Code阶段步骤:

在Windows环境下编写好代码,然后将代码上传到Linux环境下的GitLab上。

Windows下安装Git(作用是:使我们可以上传代码到GitLab)
  • 进入Git官网安装Git到Windows环境下即可。(很简单)
Linux下安装GitLab⭐(作用是:运行一个GitLab接收代码)

步骤:

1:新建一个服务器(2核4G内存+60G硬盘),IP设置成192.168.184.70,主机名设置成centos7-gitlab,专门用来运行GitLab。

2:安装Docker容器。(如果已经安装过了就可以跳过这一步)

3:在这台新的GitLab的服务器上使用Docker的方式运行GitLab

环境准备
先创建新的虚拟机(centos7-gitlab)⭐

创建新的虚拟机过程省略!!!

修改IP和主机名
  • 1:新建服务器并将其IP地址修改成192.168.184.70:
shell 复制代码
vi /etc/sysconfig/network-scripts/ifcfg-ens33

找到 IPADDR 字段并将IP修改成192.168.184.70即可:

然后重启网络:

shell 复制代码
systemctl restart network

查看IP是否修改成功:(可以看到ens33已经修改成功了。)

shell 复制代码
[root@centos7-clear ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.184.70  netmask 255.255.255.0  broadcast 192.168.184.255
        inet6 fe80::9ce3:a607:cc1b:e87  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:f5:97:d0  txqueuelen 1000  (Ethernet)
        RX packets 550  bytes 56363 (55.0 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 487  bytes 71677 (69.9 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
  • 2:修改服务器的主机名:
shell 复制代码
hostnamectl set-hostname centos7-gitlab
关闭防火墙
shell 复制代码
systemctl stop firewalld
systemctl disable firewalld
安装Docker
  • 1:切换镜像源
shell 复制代码
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
  • 2:安装特定版本的docker-ce
shell 复制代码
yum -y install docker-ce-3:20.10.8-3.el7.x86_64 docker-ce-cli-3:20.10.8-3.el7.x86_64 containerd.io
  • 3:给Docker接入阿里云镜像加速器

配置镜像加速器方法。

针对Docker客户端版本大于 1.10.0 的用户,可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器

  • 第一步:
shell 复制代码
mkdir -p /etc/docker
  • 第二步:
shell 复制代码
cat <<EOF> /etc/docker/daemon.json
{
  "exec-opts": ["native.cgroupdriver=systemd"],	
  "registry-mirrors": [
    "https://u01jo9qv.mirror.aliyuncs.com",
    "https://hub-mirror.c.163.com",
    "https://mirror.baidubce.com"
  ],
  "live-restore": true,
  "log-driver":"json-file",
  "log-opts": {"max-size":"500m", "max-file":"3"},
  "max-concurrent-downloads": 10,
  "max-concurrent-uploads": 5,
  "storage-driver": "overlay2"
}
EOF
  • 第三步:
shell 复制代码
sudo systemctl daemon-reload
  • 第四步:
shell 复制代码
sudo systemctl restart docker

最后就接入阿里云容器镜像加速器成功啦。

  • 4:设置Docker开机自动启动:
shell 复制代码
[root@centos7-clear ~]# sudo systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
安装Docker Compose
  • 1:拉取docker-compose
shell 复制代码
curl -L https://get.daocloud.io/docker/compose/releases/download/v2.4.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
  • 2:给docker-compose分配权限:
shell 复制代码
chmod +x /usr/local/bin/docker-compose
  • 3:查看docker-compose的版本:
shell 复制代码
docker-compose --version
使用Docker安装GitLab
  • 1:查看gitlab镜像:
shell 复制代码
[root@centos7-clear ~]# docker search gitlab-ce
NAME                                     DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
gitlab/gitlab-ce                         GitLab Community Edition docker image based ...   3642                 [OK]
  • 2:拉取最新版的gitlab镜像:(gitlab的镜像十分大,2个多GB的大小)
shell 复制代码
[root@centos7-gitlab gitlab]# docker pull gitlab/gitlab-ce:latest
latest: Pulling from gitlab/gitlab-ce
7b1a6ab2e44d: Pull complete 
6c37b8f20a77: Pull complete 
f50912690f18: Pull complete 
bb6bfd78fa06: Pull complete 
2c03ae575fcd: Pull complete 
839c111a7d43: Pull complete 
4989fee924bc: Pull complete 
666a7fb30a46: Pull complete 
Digest: sha256:5a0b03f09ab2f2634ecc6bfeb41521d19329cf4c9bbf330227117c048e7b5163
Status: Downloaded newer image for gitlab/gitlab-ce:latest
docker.io/gitlab/gitlab-ce:latest
  • 3:查看gitlab的镜像是否拉取成功:
shell 复制代码
[root@centos7-gitlab gitlab]# docker images
REPOSITORY         TAG       IMAGE ID       CREATED        SIZE
gitlab/gitlab-ce   latest    46cd6954564a   6 months ago   2.36GB
  • 4:准备docker-compose.yml文件:

创建文件夹:

shell 复制代码
[root@centos7-clear ~]# mkdir gitlab && cd gitlab

创建文件:

shell 复制代码
vi docker-compose.yml

文件内容如下:(记得修改external_url的ip地址为你的gitlab的服务器地址,我们的是192.168.184.70)

shell 复制代码
version: '3.1'
services:
  gitlab:
    image: 'gitlab/gitlab-ce:latest'
    container_name: gitlab
    restart: always
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'http://192.168.184.70:8929'
        gitlab_rails['gitlab_shell_ssh_port'] = 2224
    ports:
      - '8929:8929'
      - '2224:2224'
    volumes:
      - './config:/etc/gitlab'
      - './logs:/var/log/gitlab'
      - './data:/var/opt/gitlab'
  • 5:执行docker-compose配置文件:(执行完需要等待)
shell 复制代码
[root@centos7-gitlab gitlab]# docker-compose up -d
  • 6:访问GitLab首页:
    • 网址是 192.168.184.70:8929
  • 7:查看root用户初始密码:(下面password就是我们的默认密码)
shell 复制代码
[root@centos7-gitlab gitlab]# docker exec -it gitlab cat /etc/gitlab/initial_root_password
# WARNING: This value is valid only in the following conditions
#          1. If provided manually (either via `GITLAB_ROOT_PASSWORD` environment variable or via `gitlab_rails['initial_root_password']` setting in `gitlab.rb`, it was provided before database was seeded for the first time (usually, the first reconfigure run).
#          2. Password hasn't been changed manually, either via UI or via command line.
#
#          If the password shown here doesn't work, you must reset the admin password following https://docs.gitlab.com/ee/security/reset_user_password.html#reset-your-root-password.

Password: 6PHFewZSOcvt5rQD65mlCP5Tr5i8MRYTadwa3VGvkPo=

# NOTE: This file will be automatically deleted in the first reconfigure run after 24 hours.
  • 8:返回刚刚的登陆界面登陆gitlab:
  • 9:登陆gitlab成功后的首页:
  • 10:修改gitlab密码,然后重新登陆即可:(我修改成root123456)

Build阶段工具(centos7-jenkins主机)

  • 构建Java项目的工具一般有两种选择,一个是Maven,一个是Gradle。这里我们选择Maven作为项目的编译工具。
Linux下安装Maven项目构建工具⭐

步骤:

1:新建一个服务器(2核4G内存+60G硬盘),IP设置成192.168.184.80,主机名设置成centos7-jenkins

2:安装Docker容器。(如果已经安装过了就可以跳过这一步)

环境准备
先创建新的虚拟机(centos7-jenkins)⭐

创建新的虚拟机过程省略!!!

修改IP和主机名
  • 1:新建服务器并将其IP地址修改成192.168.184.80:
shell 复制代码
vi /etc/sysconfig/network-scripts/ifcfg-ens33

找到 IPADDR 字段并将IP修改成192.168.184.80即可:

然后重启网络:

shell 复制代码
systemctl restart network

查看IP是否修改成功:(可以看到ens33已经修改成功了。)

shell 复制代码
[root@centos7-clear ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.184.80  netmask 255.255.255.0  broadcast 192.168.184.255
        inet6 fe80::9aa7:2f1d:4559:d9c8  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:63:69:7f  txqueuelen 1000  (Ethernet)
        RX packets 136  bytes 17161 (16.7 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 157  bytes 20956 (20.4 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX
  • 2:修改服务器的主机名:
shell 复制代码
hostnamectl set-hostname centos7-jenkins
关闭防火墙
shell 复制代码
systemctl stop firewalld
systemctl disable firewalld
安装Maven
下载Maven和JDK8的tar.gz包

将Maven和JDK8的tar.gz包上传到centos7-jenkins的/root目录上
  • 1:查看当前目录:
shell 复制代码
[root@centos7-jenkins ~]# pwd
/root
  • 2:使用XFTP把刚刚下载好的两个包上传上去:

  • 3:查看上传好的包:

shell 复制代码
[root@centos7-jenkins ~]# ls
anaconda-ks.cfg  apache-maven-3.8.6-bin.tar.gz  jdk-8u333-linux-x64.tar.gz
  • 4:解压JDK包到/usr/local:
shell 复制代码
tar -zxvf jdk-8u333-linux-x64.tar.gz -C /usr/local
  • 5:解压Maven包到/usr/local:
shell 复制代码
tar -zxvf apache-maven-3.8.6-bin.tar.gz -C /usr/local
  • 6:切换到/usr/local目录下:
shell 复制代码
cd /usr/local
  • 7:给JDK和Maven的文件夹进行改名:
shell 复制代码
mv jdk1.8.0_333 jdk
shell 复制代码
mv apache-maven-3.8.6 maven
  • 8:查看/usr/local:
shell 复制代码
[root@centos7-jenkins local]# ls
bin  etc  games  include  jdk  lib  lib64  libexec  maven  sbin  share  src
  • 9:修改Maven配置文件:(配置阿里云镜像加速和JDK8设置)
  • (1)阿里云镜像加速配置:
shell 复制代码
cd maven/conf
shell 复制代码
[root@centos7-jenkins conf]# vi settings.xml

插入内容如下:(插入到</ mirrors > 这个标签上面即可),先不用保存退出

xml 复制代码
<mirror>
    <id>nexus-aliyun</id>
    <mirrorOf>central</mirrorOf>
    <name>Nexus aliyun</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
  • (2)JDK8设置:

插入内容如下:(插入到 < /profiles > 标签上面即可)

xml 复制代码
<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>

并插入如下内容:(用于开启上面的jdk配置,插入到最下面的< /settings >标签上面即可),然后保存退出

xml 复制代码
<activeProfiles>
    <activeProfile>jdk8</activeProfile>
</activeProfiles>

Operate阶段工具(centos7-jenkins主机)

Linux下安装Docker和Docker-Compose⭐
安装Docker
  • 1:切换镜像源
shell 复制代码
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
  • 2:安装特定版本的docker-ce
shell 复制代码
yum -y install docker-ce-3:20.10.8-3.el7.x86_64 docker-ce-cli-3:20.10.8-3.el7.x86_64 containerd.io
  • 3:给Docker接入阿里云镜像加速器

配置镜像加速器方法。

针对Docker客户端版本大于 1.10.0 的用户,可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器

  • 第一步:
shell 复制代码
mkdir -p /etc/docker
  • 第二步:
shell 复制代码
cat <<EOF> /etc/docker/daemon.json
{
  "exec-opts": ["native.cgroupdriver=systemd"],	
  "registry-mirrors": [
    "https://u01jo9qv.mirror.aliyuncs.com",
    "https://hub-mirror.c.163.com",
    "https://mirror.baidubce.com"
  ],
  "live-restore": true,
  "log-driver":"json-file",
  "log-opts": {"max-size":"500m", "max-file":"3"},
  "max-concurrent-downloads": 10,
  "max-concurrent-uploads": 5,
  "storage-driver": "overlay2"
}
EOF
  • 第三步:
shell 复制代码
sudo systemctl daemon-reload
  • 第四步:
shell 复制代码
sudo systemctl restart docker

最后就接入阿里云容器镜像加速器成功啦。

  • 4:设置Docker开机自动启动:
shell 复制代码
sudo systemctl enable docker
安装Docker Compose
  • 1:拉取docker-compose
shell 复制代码
curl -L https://get.daocloud.io/docker/compose/releases/download/v2.4.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
  • 2:给docker-compose分配权限:
shell 复制代码
chmod +x /usr/local/bin/docker-compose
  • 3:查看docker-compose的版本:
shell 复制代码
[root@centos7-jenkins conf]# docker-compose --version
Docker Compose version v2.4.1
相关推荐
·云扬·12 分钟前
Lambda 表达式详解
java·开发语言·笔记·学习·1024程序员节
让生命变得有价值2 小时前
k8s 启用 ValidatingAdmissionPolicy 特性
java·容器·kubernetes·kubelet
Allocator3 小时前
docker 容器访问宿主机器服务的最简单方法
运维·docker·容器
AlenTech3 小时前
如何设置docker的定时关闭和启动
docker·容器·eureka
我从不骗人4 小时前
Docker使用相关记录
运维·docker·容器
迷茫运维路4 小时前
docker安装低版本的jenkins-2.346.3,在线安装对应版本插件失败的解决方法
docker·jenkins
HoneyMoose4 小时前
Jenkins 构建时候提示超时错误被终止
运维·jenkins
好想有猫猫5 小时前
【51单片机】LED点阵屏 原理 + 使用
c语言·单片机·嵌入式硬件·51单片机·1024程序员节
二进制杯莫停5 小时前
PaaS云原生:分布式集群中如何构建自动化压测工具
分布式·云原生·paas
valkyrja1107 小时前
小白docker入门简介
docker·容器·小白·初学