• Jenkins 基础篇


    前期准备

    为了开发这套课程,我专门购买了一台二手戴尔服务器 Dell R720,同时把废弃多年的笔记本电脑也利用了起来。当然如果自己没有多余的电脑,也可以在自己电脑上安装 Vmware Workstation,然后再安装虚拟的方式来实现有几台虚拟服务器。如果自己有多余的旧电脑,并且是2个核心8G以上内存,可以尝试安装 VMware vSphere Hypervisor (ESXi) 的方式来管理虚拟机。
    Vmware Workstation 或者 VMware vSphere Hypervisor (ESXi) 软件的下载参考如下连接,需要注意的是目前在 Vmware 站点下载软件需要注册一个账号。注册账号后在产品下载里面可以找到所有产品的下载,也就是这个连接 https://my.vmware.com/cn/group/vmware/downloads/#all_products ,自行选择下载 Vmware Workstation 或者 VMware vSphere Hypervisor (ESXi) 。
    image.png
    另外像戴尔或者联想服务器会针对 VMware vSphere Hypervisor (ESXi)  做一些定制化,可以从戴尔或者联想官网下载 VMware vSphere Hypervisor (ESXi) ,例如这里是戴尔的定制 VMware vSphere Hypervisor (ESXi)  下载页面 https://www.dell.com/support/home/zh-cn/product-support/product/poweredge-r720/drivers ,操作系统选择 VMware ESXi 6.5,格式选择 CD-ROM的ISO映像。
    image.png

    安装 Vmware ESXi

    如果自己有多余的旧电脑,并且是2个核心8G以上内存,可以尝试安装 Vmware ESXi 的方式来管理虚拟机。接下来我这里将演示如何安装部署 Vmware ESXi,以及如何通过 Vmware ESXi 创建虚拟机。
    首先需要制作一个U盘启动器,需要一个4G及以上的U盘,还需要 UltraISO 软碟通以及前面下载的 Vmware ESXi 软件。将U盘插到电脑上,确保自己U盘上的东西有备份,因为制作启动器会格式化U盘。然后打开 UltraISO 软碟通。
    点击左上角【文件】选项里面的【打开】,打开我们下载的 VMware-VMvisor-Installer-7.0U1-16850804.x86_64.iso,打开后如下图所示:
    image.png
    然后再点击【启动】选项里的【写入硬盘映像…】

    image.png
    在新的弹窗里面一定要注意【硬盘驱动器】要选择自己的U盘,其他设置默认即可。然后点击【写入】,等待进度条完成即可,一个U盘启动器就制作好了。image.png
    接下来就开始安装 Vmware ESXi,和U盘启动器安装操作系统的方式一样,我这里为了方便演示和截图就通过虚拟机的方式来演示 Vmware ESXi 的安装。
    将U盘启动器插在要安装 Vmware ESXi 的电脑上,然后开机进入 BIOS 系统设置第一启动项,不同电脑略有差异,请自行度娘解决。需要注意的是安装 Vmware ESXi,就相当于安装了新的系统,自己电脑上重要的东西记得备份。我这里演示安装 Vmware ESXi 用的是 6.5.0 版本,与 Vmware ESXi 7.0 的使用没什么差异。
    启动电脑后是在加载我们U盘启动器的内容:
    image.png
    开始安装 Vmware ESXi,敲【Enter】键继续:
    image.png
    同意用户许可协议,【F11】接受并继续:
    image.png
    选择将 Vmware ESXi 安装在哪个磁盘,如果有多块磁盘,按上下键选择磁盘,我这里就只有一块磁盘,敲【Enter】键继续:
    image.png
    设置键盘布局,选择默认的【US Default】即可,敲【Enter】键继续:
    image.png
    设置超级管理员 root 账号的密码,确保两次输入的密码一致,敲【Enter】键继续:
    image.png
    因为我是在虚拟机里面安装的,这里提示硬件虚拟化没有启用,需要在 BIOS 里面启用硬件虚拟化特性,这里只是出于演示目的,先不用管它,敲【Enter】键继续:
    image.png
    警告提醒磁盘将被重新分区,敲【F11】开始真正的安装进程:
    image.png
    接下来就是安装的进度条,等待进度达到100%,Vmware ESXi 安装就完成了:
    image.png
    安装完成,重启电脑,拔出U盘启动器。
    image.png
    提示服务器将会重启:
    image.png
    重启完成后就是如下界面,这台服务器的 IP 就是 192.168.21.227。需要特别提醒的是 Vmware ESXi 不是像操作系统那样的桌面管理界面,它的管理界面是 Web 平台的,需要在浏览器里面访问。
    image.png
    好了,现在我们在其他桌面环境的电脑端,打开浏览器,输入Vmware ESXi 服务器的 IP 地址进行访问。初次访问浏览器会警告这个站点的SSL证书是不可信的,不用管它,继续访问即可,在登录界面输入 root 账号和密码。
    image.png
    首次进入管理界面,提示加入 Vmware 客户体验改进计划,【确定】即可。初次安装官方版的 Vmware ESXi 会有60天的试用期,如果有正版的激活序列号,在【管理】菜单里面的【许可】中输入密钥激活即可。
    image.png
    界面大概就是这样,有进行实操的同学可以熟悉下 Vmware ESXi 的其他功能选项。
    image.png

    安装 Vmware Workstation

    image.png

    image.png

    image.png

    image.png

    image.png

    image.png

    image.png

    image.png

    image.png

    image.png

    相关资源下载:

    1. Vmware 相关软件:https://my.vmware.com/cn/group/vmware/downloads/#all_products

    服务器规划

    准备4个虚拟机服务器

    名称 IP 用途 账号
    centos7-200 192.168.31.200 安装部署Jenkins服务 root、jenkins、maintainer
    centos7-110 192.168.31.110 1、作为jenkins的节点;2、部署开发环境服务 root、jenkins、maintainer
    centos7-111 192.168.31.111 1、作为jenkins的节点;2、部署测试环境服务 root、jenkins、maintainer
    centos7-112 192.168.31.112 1、作为jenkins的节点;2、部署正式环境服务 root、jenkins、maintainer

    服务器安装

    接下来还是分别演示采用 Vmware ESXi 和 Vmware Workstation 安装虚拟机。

    Vmware ESXi 安装虚拟机

    进入 Vmware ESXi 的 Web 关键界面,开始创建我们的 CentOS7 虚拟机:
    image.png
    创建类型选择【创建新虚拟机】:

    image.png
    在该界面设置虚拟机名称、兼容性、操作系统类型和操作系统的版本,这里需要注意一点,因为我安装的 Vmware ESXi 是新版的 7.0 版本,以防万一新版的 Vmware ESXi 在使用过程中有什么问题,所以在兼容性这里我们可以做个调整,你可以选择其他版本的 Vmware ESXi,也可以选择 Vmware Workstation 兼容的类型,这样以便我们创建的虚拟机可以在其他版本的 Vmware ESXi 或者在 Vmware Workstation 中注册运行。image.png
    image.png
    这里的【选择存储】是设置我们虚拟机的存储位置,因为我这里只有一个 datastore1 存储空间,所有默认就行,如果你自己挂载了多个存储空间,选择自己想要存储的位置即可。image.png
    这个界面是设置虚拟机的 CPU、内存、硬盘、网络适配器、驱动器等,CPU、内存、硬盘大小可以根据自己需要做适当调整,但是不能超过物理机的最大值。这里需要注意的有两个地方,一是【网络适配器】,因为目前大多数服务器是多网口的,我的 Dell R720 后面就有4个网口,如果这些网口都利用起来可以有效地避免网络不可用的问题,例如我一个网口用电信的网络,一个网口用移动的网络,当我移动网络不可用时可以继续使用电信网络。我这里只用了一个网口,采用默认设置就行了,如果你的多个网口都利用起来了的话,可以也给这个虚拟机设置多个网络。另一个注意点就是【CD/DVD驱动器】,一定要选择【数据存储 ISO 文件】来挂载我们的系统镜像文件,同时记得把【连接】勾选上。
    image.png
    这里是选择我们的系统镜像文件,你想安装什么系统并且你也有对应的系统镜像文件的话,都可以尝试下,体验下不同的操作系统。Vmware ESXi 具体支持虚拟化哪些系统,可以到 Vmware 官网看看,这里有个 Vmware ESXi 的兼容系统矩阵可以参考下 https://www.vmware.com/resources/compatibility/search.php?deviceCategory=software&testConfig=16
    image.png
    这个界面是虚拟机配置的一个概览,需要调整就进入【上一页】重新设置,不需要调整直接【完成】。
    image.png
    然后就可以点击我们刚才创建好的虚拟机,【打开电源】启动虚拟机了,虚拟机启动后初次进入就是进行操作系统的安装。
    image.png
    后面就是在小窗口进行操作系统安装阶段的系统设置,演示过一遍。
    设置系统语言:
    image.png
    这个界面有以下几个地方需要设置:【软件选择】、【安装位置】、【网络和主机名】
    image.png
    我们这里是作为服务器使用,选择【最小安装】即可,如果是当作桌面系统使用需要选择【GNOME 桌面】。
    image.png
    系统安装位置,可以自己分区,也可以自动配置,如果不知道怎样分区好就默认自动分区就行了。
    image.png
    网络和主机名设置,填好主机名后要点击下【应用】才会生效,然后还要开启以太网,开启后路由器会自动分配 IP 地址,如果需要设置特定 IP 地址,可以在【配置】中进行设置,设置的时候需要填写网关 IP、和子网掩码之类东西,为了一切简单,不做特殊设置,只是开启以太网就行了。
    image.png
    image.png
    后面就开始真正的安装过程了,安装过程中还需要进行用户设置,必须要做的是要为 root 账号设置密码,也可以创建一个新用户。
    image.png
    image.png
    等待安装完成后需要重启虚拟机,等待虚拟机启动好后既可以登录了。
    image.png
    image.png
    image.png

    Vmware Workstation 安装虚拟机

    在 Vmware Workstation 中创建虚拟机就笔记简单些,对大家来讲也应该比较熟悉,也还是简单过一下。另外 Vmware Workstation 还可以连接远程服务器,例如可以连接我的 Dell R720 服务器,然后管理服务器上的现有虚拟机或者在服务器上创建新的虚拟机。
    image.png
    image.png
    关于 Vmware Workstation 管理 Vmware ESXi 服务器,有条件的同学可以自行下去试试各个功能按钮。我这里演示的是利用 Vmware Workstation 在自己电脑上创建虚拟机,不是在远程服务器上创建虚拟机。
    开始创建新的虚拟机:
    image.png
    选择【典型】,这个方式要设置的内容少些。
    image.png
    这里是设置系统镜像文件。
    image.png
    设置虚拟机的名称和存储位置。
    image.png
    设置虚拟机硬盘大小。
    image.png
    还可以【自定义硬件】,调整虚拟机的 CPU、内存等。点击完成就开始安装虚拟机操作系统了,和前面安装 CentOS7 系统一样。
    image.png
    image.png

    不管是采用 Vmware ESXi 还是 Vmware Workstation 安装虚拟机,整个过程都做了一个演示,后面可以自行按照相应的方式将规划的其他几台虚拟机也安装好。
    我这里规划的几台虚拟机都计划安装在 Dell R720 服务器上,目前都已经安装好了,如果是安装在自己使用的电脑上,如果电脑内存没有8G以上,并且 CPU 也比较差的话,在使用过程中感觉自己电脑会有很卡。如果自己有旧电脑、或者公司有服务器资源的可以尝试利用其他的计算机资源。

    由于我是购买的二手服务器,外观上七八成的成色,内部就懒得拆机进行查看了。测试下磁盘读写速度,感觉还不错,至少读写性能还是杠杠的。

    # 测试文件写入速度
    # if=/dev/zero不产生IO,因此可以用来测试纯写速度
    # 写入文件大小 = 8k * 500000 = 4G
    $ time dd if=/dev/zero of=/home/$USER/out bs=8k oflag=direct count=500000
    
    # 测试文件读取速度
    # of=/dev/null不产生IO,可以用来测试纯读速度
    $ time dd if=/home/$USER/out of=/dev/null bs=8k
    

    我这里的执行出来的结果如下:

    $ time dd if=/dev/zero of=/home/$USER/out bs=8k oflag=direct count=500000
    记录了500000+0 的读入
    记录了500000+0 的写出
    4096000000字节(4.1 GB)已复制,49.9355 秒,82.0 MB/秒
    
    real	0m49.969s
    user	0m0.751s
    sys	0m17.562s
    
    
    $ time dd if=/home/$USER/out of=/dev/null bs=8k
    记录了500000+0 的读入
    记录了500000+0 的写出
    4096000000字节(4.1 GB)已复制,17.9543 秒,228 MB/秒
    
    real	0m17.956s
    user	0m0.354s
    sys	0m7.236s
    

    Docker 安装

    # 卸载旧版docker或者docker-engine
    $ sudo yum remove docker 
        docker-client 
        docker-client-latest 
        docker-common 
        docker-latest 
        docker-latest-logrotate 
        docker-logrotate 
        docker-engine
    
    # 有必要删除docker目录, 包括images, containers, volumes, and networks
    $ sudo rm -rf /var/lib/docker/
    
    # 先安装一些需要的工具
    $ sudo yum install -y wget curl net-tools lsof yum-utils bash-completion telnet
    
    # 采用官方docker源安装
    $ sudo yum-config-manager 
        --add-repo 
        https://download.docker.com/linux/centos/docker-ce.repo
    
    # 安装最新docker和docker-engine, 注意检查指纹密钥:060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35
    $ sudo yum install docker-ce docker-ce-cli containerd.io
    
    # 如果想安装其他版本的Docker,替换<VERSION_STRING>为指定的版本即可。
    $ sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
    
    # 查看目前有哪些版本的Docker
    $ yum list docker-ce --showduplicates | sort -r
    已加载插件:fastestmirror
    可安装的软件包
     * updates: mirrors.ustc.edu.cn
     * extras: mirrors.aliyun.com
    docker-ce.x86_64            3:20.10.1-3.el7                     docker-ce-stable
    docker-ce.x86_64            3:20.10.0-3.el7                     docker-ce-stable
    docker-ce.x86_64            3:19.03.9-3.el7                     docker-ce-stable
    docker-ce.x86_64            3:19.03.8-3.el7                     docker-ce-stable
    docker-ce.x86_64            3:19.03.7-3.el7                     docker-ce-stable
    docker-ce.x86_64            3:19.03.6-3.el7                     docker-ce-stable
    docker-ce.x86_64            3:19.03.5-3.el7                     docker-ce-stable
    docker-ce.x86_64            3:19.03.4-3.el7                     docker-ce-stable
    docker-ce.x86_64            3:19.03.3-3.el7                     docker-ce-stable
    docker-ce.x86_64            3:19.03.2-3.el7                     docker-ce-stable
    docker-ce.x86_64            3:19.03.14-3.el7                    docker-ce-stable
    docker-ce.x86_64            3:19.03.1-3.el7                     docker-ce-stable
    docker-ce.x86_64            3:19.03.13-3.el7                    docker-ce-stable
    docker-ce.x86_64            3:19.03.12-3.el7                    docker-ce-stable
    docker-ce.x86_64            3:19.03.11-3.el7                    docker-ce-stable
    docker-ce.x86_64            3:19.03.10-3.el7                    docker-ce-stable
    docker-ce.x86_64            3:19.03.0-3.el7                     docker-ce-stable
    docker-ce.x86_64            3:18.09.9-3.el7                     docker-ce-stable
    docker-ce.x86_64            3:18.09.8-3.el7                     docker-ce-stable
    docker-ce.x86_64            3:18.09.7-3.el7                     docker-ce-stable
    docker-ce.x86_64            3:18.09.6-3.el7                     docker-ce-stable
    docker-ce.x86_64            3:18.09.5-3.el7                     docker-ce-stable
    docker-ce.x86_64            3:18.09.4-3.el7                     docker-ce-stable
    docker-ce.x86_64            3:18.09.3-3.el7                     docker-ce-stable
    docker-ce.x86_64            3:18.09.2-3.el7                     docker-ce-stable
    docker-ce.x86_64            3:18.09.1-3.el7                     docker-ce-stable
    docker-ce.x86_64            3:18.09.0-3.el7                     docker-ce-stable
    docker-ce.x86_64            18.06.3.ce-3.el7                    docker-ce-stable
    docker-ce.x86_64            18.06.2.ce-3.el7                    docker-ce-stable
    docker-ce.x86_64            18.06.1.ce-3.el7                    docker-ce-stable
    docker-ce.x86_64            18.06.0.ce-3.el7                    docker-ce-stable
    docker-ce.x86_64            18.03.1.ce-1.el7.centos             docker-ce-stable
    docker-ce.x86_64            18.03.0.ce-1.el7.centos             docker-ce-stable
    docker-ce.x86_64            17.12.1.ce-1.el7.centos             docker-ce-stable
    docker-ce.x86_64            17.12.0.ce-1.el7.centos             docker-ce-stable
    docker-ce.x86_64            17.09.1.ce-1.el7.centos             docker-ce-stable
    docker-ce.x86_64            17.09.0.ce-1.el7.centos             docker-ce-stable
    docker-ce.x86_64            17.06.2.ce-1.el7.centos             docker-ce-stable
    docker-ce.x86_64            17.06.1.ce-1.el7.centos             docker-ce-stable
    docker-ce.x86_64            17.06.0.ce-1.el7.centos             docker-ce-stable
    docker-ce.x86_64            17.03.3.ce-1.el7                    docker-ce-stable
    docker-ce.x86_64            17.03.2.ce-1.el7.centos             docker-ce-stable
    docker-ce.x86_64            17.03.1.ce-1.el7.centos             docker-ce-stable
    docker-ce.x86_64            17.03.0.ce-1.el7.centos             docker-ce-stable
    Determining fastest mirrors
     * base: mirrors.aliyun.com
    
    # 例如我这里安装18的最后一个版本
    $ sudo yum install docker-ce-18.09.9-3.el7 docker-ce-cli-18.09.9-3.el7 containerd.io
    # 实际应用最好安装最新的版本
    $ sudo yum install docker-ce-20.10.1-3.el7 docker-ce-cli-20.10.1-3.el7 containerd.io
    
    # 启动docker
    $ sudo systemctl start docker
    $ sudo systemctl enable docker
    
    # 添加用户到docker组
    $ sudo usermod -aG docker your-user
    $ sudo usermod -aG docker $USER
    
    # 卸载docker和docker-engine
    $ sudo yum remove docker-ce docker-ce-cli containerd.io
    $ sudo rm -rf /var/lib/docker
    
    # 安装docker-compose
    $ sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    # 如果你从 Github 下载文件较慢,可以换成下面的命令
    $ sudo curl -L "https://alittler.oss-cn-hangzhou.aliyuncs.com/software/docker/compose/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    # 设置可执行权限
    $ sudo chmod +x /usr/local/bin/docker-compose
    # 安装后如果提示没有 docker-compose 命令,执行如下命令添加 软连接到 /usr/bin
    $ sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
    # 查看 docker-compose 版本
    $ docker-compose --version
    
    
    # 设置Docker镜像加速
    # 通过修改daemon配置文件/etc/docker/daemon.json来使用加速器
    $ sudo mkdir -p /etc/docker
    $ sudo tee /etc/docker/daemon.json <<-'EOF'
    {
      "registry-mirrors": ["https://my0hjxag.mirror.aliyuncs.com"]
    }
    EOF
    $ sudo systemctl daemon-reload
    $ sudo systemctl restart docker
    
  • 相关阅读:
    BZOJ4039 : 集会
    BZOJ3655 : 神经错乱数
    World Finals 2017爆OJ记
    Petrozavodsk Summer-2016. Ural FU Dandelion Contest
    XVII Open Cup named after E.V. Pankratiev. Grand Prix of America (NAIPC-2017)
    递归的逻辑(3)——递归与分治
    递归的逻辑(2)——特征方程和递归算法
    递归的逻辑(1)——递归关系模型
    整数的故事(4)——Karastuba算法
    整数的故事(3)——最小公倍数与哥德巴赫猜想
  • 原文地址:https://www.cnblogs.com/liudecai/p/14746207.html
Copyright © 2020-2023  润新知