Docker: Jenkins与Docker的自动化CI/CD流水线实战

2023-06-09,,

什么是CI/CD

持续集成(Continuous Integration,CI):代码合并、构建、部署、测试都在一起,不断地执行这个过程,并对结果反馈。
持续部署(Continuous Deployment,CD):部署到测试环境、预生产环境、生产环境。
持续交付(Continuous Delivery,CD):将最终产品发布到生产环境,给用户使用。

高效的CI/CD环境可以获得:
• 及时发现问题
• 大幅度减少故障率
• 加快迭代速度
• 减少时间成本

接下来是实战

环境说明:

192.168.1.30 上面安装 docker, harbor,git (上面已经安装好了 docker, harbor,)

192.168.1.40 上面安装 docker, jenkins,

步骤从这里开始:

1. 192.168.1.40(docker, jenkins) 上安装好基础环境,参考文档

(Docker:测试环境的准备-建立一台centos测试机,Docker:测试环境的准备-centos7上安装docker)

[BEGIN] // ::
[root@ ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
[root@ ~]# setenforce
[root@ ~]# systemctl stop firewalld
[root@ ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@ ~]# yum install -y yum-utils \
> device-mapper-persistent-data \
> lvm2
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.cn99.com
* updates: mirrors.huaweicloud.com
Package yum-utils-1.1.-.el7.noarch already installed and latest version
Package device-mapper-persistent-data-0.7.-.el7.x86_64 already installed and latest version
Resolving Dependencies
--> Running transaction check
---> Package lvm2.x86_64 :2.02.-.el7 will be updated
---> Package lvm2.x86_64 :2.02.-.el7_6. will be an update
--> Processing Dependency: lvm2-libs = :2.02.-.el7_6. for package: :lvm2-2.02.-.el7_6..x86_64
--> Running transaction check
---> Package lvm2-libs.x86_64 :2.02.-.el7 will be updated
---> Package lvm2-libs.x86_64 :2.02.-.el7_6. will be an update
--> Processing Dependency: device-mapper-event = :1.02.-.el7_6. for package: :lvm2-libs-2.02.-.el7_6..x86_64
--> Running transaction check
---> Package device-mapper-event.x86_64 :1.02.-.el7 will be updated
---> Package device-mapper-event.x86_64 :1.02.-.el7_6. will be an update
--> Processing Dependency: device-mapper-event-libs = :1.02.-.el7_6. for package: :device-mapper-event-1.02.-.el7_6..x86_64
--> Processing Dependency: device-mapper = :1.02.-.el7_6. for package: :device-mapper-event-1.02.-.el7_6..x86_64
--> Running transaction check
---> Package device-mapper.x86_64 :1.02.-.el7 will be updated
--> Processing Dependency: device-mapper = :1.02.-.el7 for package: :device-mapper-libs-1.02.-.el7.x86_64
---> Package device-mapper.x86_64 :1.02.-.el7_6. will be an update
---> Package device-mapper-event-libs.x86_64 :1.02.-.el7 will be updated
---> Package device-mapper-event-libs.x86_64 :1.02.-.el7_6. will be an update
--> Running transaction check
---> Package device-mapper-libs.x86_64 :1.02.-.el7 will be updated
---> Package device-mapper-libs.x86_64 :1.02.-.el7_6. will be an update
--> Finished Dependency Resolution Dependencies Resolved ===============================================================================================
Package Arch Version Repository Size
===============================================================================================
Updating:
lvm2 x86_64 :2.02.-.el7_6. updates 1.3 M
Updating for dependencies:
device-mapper x86_64 :1.02.-.el7_6. updates k
device-mapper-event x86_64 :1.02.-.el7_6. updates k
device-mapper-event-libs x86_64 :1.02.-.el7_6. updates k
device-mapper-libs x86_64 :1.02.-.el7_6. updates k
lvm2-libs x86_64 :2.02.-.el7_6. updates 1.1 M Transaction Summary
===============================================================================================
Upgrade Package (+ Dependent packages) Total download size: 3.3 M
Downloading packages:
Delta RPMs disabled because /usr/bin/applydeltarpm not installed.
(/): device-mapper-event-1.02.-.el7_6..x86_64.rpm | kB ::
(/): device-mapper-1.02.-.el7_6..x86_64.rpm | kB ::
(/): device-mapper-event-libs-1.02.-.el7_6..x86_64.rpm | kB ::
(/): device-mapper-libs-1.02.-.el7_6..x86_64.rpm | kB ::
(/): lvm2-libs-2.02.-.el7_6..x86_64.rpm | 1.1 MB ::
(/): lvm2-2.02.-.el7_6..x86_64.rpm | 1.3 MB ::
-----------------------------------------------------------------------------------------------
Total 5.0 MB/s | 3.3 MB ::
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Updating : :device-mapper-1.02.-.el7_6..x86_64 /
Updating : :device-mapper-libs-1.02.-.el7_6..x86_64 /
Updating : :device-mapper-event-libs-1.02.-.el7_6..x86_64 /
Updating : :device-mapper-event-1.02.-.el7_6..x86_64 /
Updating : :lvm2-libs-2.02.-.el7_6..x86_64 /
Updating : :lvm2-2.02.-.el7_6..x86_64 /
Cleanup : :lvm2-2.02.-.el7.x86_64 /
Cleanup : :lvm2-libs-2.02.-.el7.x86_64 /
Cleanup : :device-mapper-event-1.02.-.el7.x86_64 /
Cleanup : :device-mapper-event-libs-1.02.-.el7.x86_64 /
Cleanup : :device-mapper-1.02.-.el7.x86_64 /
Cleanup : :device-mapper-libs-1.02.-.el7.x86_64 /
Verifying : :device-mapper-libs-1.02.-.el7_6..x86_64 /
Verifying : :device-mapper-event-libs-1.02.-.el7_6..x86_64 /
Verifying : :device-mapper-1.02.-.el7_6..x86_64 /
Verifying : :device-mapper-event-1.02.-.el7_6..x86_64 /
Verifying : :lvm2-libs-2.02.-.el7_6..x86_64 /
Verifying : :lvm2-2.02.-.el7_6..x86_64 /
Verifying : :lvm2-2.02.-.el7.x86_64 /
Verifying : :device-mapper-event-1.02.-.el7.x86_64 /
Verifying : :lvm2-libs-2.02.-.el7.x86_64 /
Verifying : :device-mapper-libs-1.02.-.el7.x86_64 /
Verifying : :device-mapper-1.02.-.el7.x86_64 /
Verifying : :device-mapper-event-libs-1.02.-.el7.x86_64 / Updated:
lvm2.x86_64 :2.02.-.el7_6. Dependency Updated:
device-mapper.x86_64 :1.02.-.el7_6.
device-mapper-event.x86_64 :1.02.-.el7_6.
device-mapper-event-libs.x86_64 :1.02.-.el7_6.
device-mapper-libs.x86_64 :1.02.-.el7_6.
lvm2-libs.x86_64 :2.02.-.el7_6. Complete!
[root@ ~]# yum-config-manager \
> --add-repo \
> https://download.docker.com/linux/centos/docker-ce.repo
Loaded plugins: fastestmirror
adding repo from: https://download.docker.com/linux/centos/docker-ce.repo
grabbing file https://download.docker.com/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.repo
repo saved to /etc/yum.repos.d/docker-ce.repo
[root@ ~]# yum install docker-ce -y
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.cn99.com
* updates: mirrors.huaweicloud.com
docker-ce-stable | 3.5 kB ::
(/): docker-ce-stable/x86_64/primary_db | kB ::
(/): docker-ce-stable/x86_64/updateinfo | B ::
Resolving Dependencies
--> Running transaction check
---> Package docker-ce.x86_64 :18.09.-.el7 will be installed
--> Processing Dependency: container-selinux >= 2.9 for package: :docker-ce-18.09.-.el7.x86_64
--> Processing Dependency: containerd.io >= 1.2.- for package: :docker-ce-18.09.-.el7.x86_64
--> Processing Dependency: libseccomp >= 2.3 for package: :docker-ce-18.09.-.el7.x86_64
--> Processing Dependency: docker-ce-cli for package: :docker-ce-18.09.-.el7.x86_64
--> Processing Dependency: libcgroup for package: :docker-ce-18.09.-.el7.x86_64
--> Processing Dependency: libseccomp.so.()(64bit) for package: :docker-ce-18.09.-.el7.x86_64
--> Running transaction check
---> Package container-selinux.noarch :2.74-.el7 will be installed
--> Processing Dependency: policycoreutils-python for package: :container-selinux-2.74-.el7.noarch
---> Package containerd.io.x86_64 :1.2.-3.1.el7 will be installed
---> Package docker-ce-cli.x86_64 :18.09.-.el7 will be installed
---> Package libcgroup.x86_64 :0.41-.el7 will be installed
---> Package libseccomp.x86_64 :2.3.-.el7 will be installed
--> Running transaction check
---> Package policycoreutils-python.x86_64 :2.5-.el7_6. will be installed
--> Processing Dependency: policycoreutils = 2.5-.el7_6. for package: policycoreutils-python-2.5-.el7_6..x86_64
--> Processing Dependency: setools-libs >= 3.3.- for package: policycoreutils-python-2.5-.el7_6..x86_64
--> Processing Dependency: libsemanage-python >= 2.5- for package: policycoreutils-python-2.5-.el7_6..x86_64
--> Processing Dependency: audit-libs-python >= 2.1.- for package: policycoreutils-python-2.5-.el7_6..x86_64
--> Processing Dependency: python-IPy for package: policycoreutils-python-2.5-.el7_6..x86_64
--> Processing Dependency: libqpol.so.(VERS_1.)(64bit) for package: policycoreutils-python-2.5-.el7_6..x86_64
--> Processing Dependency: libqpol.so.(VERS_1.)(64bit) for package: policycoreutils-python-2.5-.el7_6..x86_64
--> Processing Dependency: libapol.so.(VERS_4.)(64bit) for package: policycoreutils-python-2.5-.el7_6..x86_64
--> Processing Dependency: checkpolicy for package: policycoreutils-python-2.5-.el7_6..x86_64
--> Processing Dependency: libqpol.so.()(64bit) for package: policycoreutils-python-2.5-.el7_6..x86_64
--> Processing Dependency: libapol.so.()(64bit) for package: policycoreutils-python-2.5-.el7_6..x86_64
--> Running transaction check
---> Package audit-libs-python.x86_64 :2.8.-.el7 will be installed
---> Package checkpolicy.x86_64 :2.5-.el7 will be installed
---> Package libsemanage-python.x86_64 :2.5-.el7 will be installed
---> Package policycoreutils.x86_64 :2.5-.el7 will be updated
---> Package policycoreutils.x86_64 :2.5-.el7_6. will be an update
---> Package python-IPy.noarch :0.75-.el7 will be installed
---> Package setools-libs.x86_64 :3.3.-.el7 will be installed
--> Finished Dependency Resolution Dependencies Resolved ===============================================================================================
Package Arch Version Repository Size
===============================================================================================
Installing:
docker-ce x86_64 :18.09.-.el7 docker-ce-stable M
Installing for dependencies:
audit-libs-python x86_64 2.8.-.el7 base k
checkpolicy x86_64 2.5-.el7 base k
container-selinux noarch :2.74-.el7 extras k
containerd.io x86_64 1.2.-3.1.el7 docker-ce-stable M
docker-ce-cli x86_64 :18.09.-.el7 docker-ce-stable M
libcgroup x86_64 0.41-.el7 base k
libseccomp x86_64 2.3.-.el7 base k
libsemanage-python x86_64 2.5-.el7 base k
policycoreutils-python x86_64 2.5-.el7_6. updates k
python-IPy noarch 0.75-.el7 base k
setools-libs x86_64 3.3.-.el7 base k
Updating for dependencies:
policycoreutils x86_64 2.5-.el7_6. updates k Transaction Summary
===============================================================================================
Install Package (+ Dependent packages)
Upgrade ( Dependent package) Total download size: M
Downloading packages:
Delta RPMs disabled because /usr/bin/applydeltarpm not installed.
(/): container-selinux-2.74-.el7.noarch.rpm | kB ::
(/): checkpolicy-2.5-.el7.x86_64.rpm | kB ::
(/): audit-libs-python-2.8.-.el7.x86_64.rpm | kB ::
warning: /var/cache/yum/x86_64//docker-ce-stable/packages/docker-ce-18.09.-.el7.x86_64.rpm: Header V4 RSA/SHA512 Signature, key ID 621e9f35: NOKEY
Public key for docker-ce-18.09.-.el7.x86_64.rpm is not installed
(/): docker-ce-18.09.-.el7.x86_64.rpm | MB ::
(/): libcgroup-0.41-.el7.x86_64.rpm | kB ::
(/): libsemanage-python-2.5-.el7.x86_64.rpm | kB ::
(/): containerd.io-1.2.-3.1.el7.x86_64.rpm | MB ::
(/): policycoreutils-2.5-.el7_6..x86_64.rpm | kB ::
(/): python-IPy-0.75-.el7.noarch.rpm | kB ::
(/): setools-libs-3.3.-.el7.x86_64.rpm | kB ::
(/): policycoreutils-python-2.5-.el7_6..x86_64.rpm | kB ::
(/): libseccomp-2.3.-.el7.x86_64.rpm | kB ::
(/): docker-ce-cli-18.09.-.el7.x86_64.rpm | MB ::
-----------------------------------------------------------------------------------------------
Total 6.2 MB/s | MB ::
Retrieving key from https://download.docker.com/linux/centos/gpg
Importing GPG key 0x621E9F35:
Userid : "Docker Release (CE rpm) <docker@docker.com>"
Fingerprint: 060a 61c5 1b55 8a7f 742b 77aa c52f eb6b 621e 9f35
From : https://download.docker.com/linux/centos/gpg
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Updating : policycoreutils-2.5-.el7_6..x86_64 /
Installing : libcgroup-0.41-.el7.x86_64 /
Installing : setools-libs-3.3.-.el7.x86_64 /
Installing : containerd.io-1.2.-3.1.el7.x86_64 /
Installing : python-IPy-0.75-.el7.noarch /
Installing : checkpolicy-2.5-.el7.x86_64 /
Installing : libseccomp-2.3.-.el7.x86_64 /
Installing : libsemanage-python-2.5-.el7.x86_64 /
Installing : audit-libs-python-2.8.-.el7.x86_64 /
Installing : policycoreutils-python-2.5-.el7_6..x86_64 /
Installing : :container-selinux-2.74-.el7.noarch /
Installing : :docker-ce-cli-18.09.-.el7.x86_64 /
Installing : :docker-ce-18.09.-.el7.x86_64 /
Cleanup : policycoreutils-2.5-.el7.x86_64 /
Verifying : libcgroup-0.41-.el7.x86_64 /
Verifying : policycoreutils-python-2.5-.el7_6..x86_64 /
Verifying : :docker-ce-cli-18.09.-.el7.x86_64 /
Verifying : audit-libs-python-2.8.-.el7.x86_64 /
Verifying : libsemanage-python-2.5-.el7.x86_64 /
Verifying : libseccomp-2.3.-.el7.x86_64 /
Verifying : checkpolicy-2.5-.el7.x86_64 /
Verifying : python-IPy-0.75-.el7.noarch /
Verifying : :container-selinux-2.74-.el7.noarch /
Verifying : policycoreutils-2.5-.el7_6..x86_64 /
Verifying : :docker-ce-18.09.-.el7.x86_64 /
Verifying : containerd.io-1.2.-3.1.el7.x86_64 /
Verifying : setools-libs-3.3.-.el7.x86_64 /
Verifying : policycoreutils-2.5-.el7.x86_64 / Installed:
docker-ce.x86_64 :18.09.-.el7 Dependency Installed:
audit-libs-python.x86_64 :2.8.-.el7 checkpolicy.x86_64 :2.5-.el7
container-selinux.noarch :2.74-.el7 containerd.io.x86_64 :1.2.-3.1.el7
docker-ce-cli.x86_64 :18.09.-.el7 libcgroup.x86_64 :0.41-.el7
libseccomp.x86_64 :2.3.-.el7 libsemanage-python.x86_64 :2.5-.el7
policycoreutils-python.x86_64 :2.5-.el7_6. python-IPy.noarch :0.75-.el7
setools-libs.x86_64 :3.3.-.el7 Dependency Updated:
policycoreutils.x86_64 :2.5-.el7_6. Complete!
[root@ ~]# systemctl start docker
[root@ ~]# curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io
docker version >= 1.12
{"registry-mirrors": ["http://f1361db2.m.daocloud.io"]}
Success.
You need to restart docker to take effect: sudo systemctl restart docker
[root@ ~]# systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
[root@ ~]# systemctl restart docker [END] // ::

2. 192.168.1.30 上面安装git代码管理版本仓库

[BEGIN] // ::12
#本地创建一个git用户
[root@ ~]# useradd git
[root@ ~]# passwd git
更改用户 git 的密码 。
新的 密码:
无效的密码: 密码未通过字典检查 - 过于简单化/系统化
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。 #安装git代码管理仓库
[root@ ~]# yum install git -y
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: centos.ustc.edu.cn
* updates: mirrors.aliyun.com
base | 3.6 kB ::
docker-ce-stable | 3.5 kB ::
extras | 3.4 kB ::
updates | 3.4 kB ::
(/): updates//x86_64/primary_db | 3.3 MB ::
(/): extras//x86_64/primary_db | kB ::
正在解决依赖关系
--> 正在检查事务
---> 软件包 git.x86_64.0.1.8.3.-.el7 将被 安装
--> 正在处理依赖关系 perl-Git = 1.8.3.1-.el7,它被软件包 git-1.8.3.1-.el7.x86_64 需要
--> 正在处理依赖关系 perl >= 5.008,它被软件包 git-1.8.3.1-.el7.x86_64 需要
--> 正在处理依赖关系 rsync,它被软件包 git-1.8.3.1-.el7.x86_64 需要
--> 正在处理依赖关系 perl(warnings),它被软件包 git-1.8.3.1-.el7.x86_64 需要
--> 正在处理依赖关系 perl(vars),它被软件包 git-1.8.3.1-.el7.x86_64 需要
--> 正在处理依赖关系 perl(strict),它被软件包 git-1.8.3.1-.el7.x86_64 需要
--> 正在处理依赖关系 perl(lib),它被软件包 git-1.8.3.1-.el7.x86_64 需要
--> 正在处理依赖关系 perl(Term::ReadKey),它被软件包 git-1.8.3.1-.el7.x86_64 需要
--> 正在处理依赖关系 perl(Git),它被软件包 git-1.8.3.1-.el7.x86_64 需要
--> 正在处理依赖关系 perl(Getopt::Long),它被软件包 git-1.8.3.1-.el7.x86_64 需要
--> 正在处理依赖关系 perl(File::stat),它被软件包 git-1.8.3.1-.el7.x86_64 需要
--> 正在处理依赖关系 perl(File::Temp),它被软件包 git-1.8.3.1-.el7.x86_64 需要
--> 正在处理依赖关系 perl(File::Spec),它被软件包 git-1.8.3.1-.el7.x86_64 需要
--> 正在处理依赖关系 perl(File::Path),它被软件包 git-1.8.3.1-.el7.x86_64 需要
--> 正在处理依赖关系 perl(File::Find),它被软件包 git-1.8.3.1-.el7.x86_64 需要
--> 正在处理依赖关系 perl(File::Copy),它被软件包 git-1.8.3.1-.el7.x86_64 需要
--> 正在处理依赖关系 perl(File::Basename),它被软件包 git-1.8.3.1-.el7.x86_64 需要
--> 正在处理依赖关系 perl(Exporter),它被软件包 git-1.8.3.1-.el7.x86_64 需要
--> 正在处理依赖关系 perl(Error),它被软件包 git-1.8.3.1-.el7.x86_64 需要
--> 正在处理依赖关系 /usr/bin/perl,它被软件包 git-1.8.3.1-.el7.x86_64 需要
--> 正在检查事务
---> 软件包 perl.x86_64.4.5.16.3-.el7_6 将被 安装
--> 正在处理依赖关系 perl-libs = :5.16.-.el7_6,它被软件包 :perl-5.16.-.el7_6.x86_64 需要
--> 正在处理依赖关系 perl(Socket) >= 1.3,它被软件包 :perl-5.16.-.el7_6.x86_64 需要
--> 正在处理依赖关系 perl(Scalar::Util) >= 1.10,它被软件包 :perl-5.16.-.el7_6.x86_64 需要
--> 正在处理依赖关系 perl-macros,它被软件包 :perl-5.16.-.el7_6.x86_64 需要
--> 正在处理依赖关系 perl-libs,它被软件包 :perl-5.16.-.el7_6.x86_64 需要
--> 正在处理依赖关系 perl(threads::shared),它被软件包 :perl-5.16.-.el7_6.x86_64 需要
--> 正在处理依赖关系 perl(threads),它被软件包 :perl-5.16.-.el7_6.x86_64 需要
--> 正在处理依赖关系 perl(constant),它被软件包 :perl-5.16.-.el7_6.x86_64 需要
--> 正在处理依赖关系 perl(Time::Local),它被软件包 :perl-5.16.-.el7_6.x86_64 需要
--> 正在处理依赖关系 perl(Time::HiRes),它被软件包 :perl-5.16.-.el7_6.x86_64 需要
--> 正在处理依赖关系 perl(Storable),它被软件包 :perl-5.16.-.el7_6.x86_64 需要
--> 正在处理依赖关系 perl(Socket),它被软件包 :perl-5.16.-.el7_6.x86_64 需要
--> 正在处理依赖关系 perl(Scalar::Util),它被软件包 :perl-5.16.-.el7_6.x86_64 需要
--> 正在处理依赖关系 perl(Pod::Simple::XHTML),它被软件包 :perl-5.16.-.el7_6.x86_64 需要
--> 正在处理依赖关系 perl(Pod::Simple::Search),它被软件包 :perl-5.16.-.el7_6.x86_64 需要
--> 正在处理依赖关系 perl(Filter::Util::Call),它被软件包 :perl-5.16.-.el7_6.x86_64 需要
--> 正在处理依赖关系 perl(Carp),它被软件包 :perl-5.16.-.el7_6.x86_64 需要
--> 正在处理依赖关系 libperl.so()(64bit),它被软件包 :perl-5.16.-.el7_6.x86_64 需要
---> 软件包 perl-Error.noarch.1.0.-.el7 将被 安装
---> 软件包 perl-Exporter.noarch.0.5.-.el7 将被 安装
---> 软件包 perl-File-Path.noarch.0.2.-.el7 将被 安装
---> 软件包 perl-File-Temp.noarch.0.0.23.01-.el7 将被 安装
---> 软件包 perl-Getopt-Long.noarch.0.2.-.el7 将被 安装
--> 正在处理依赖关系 perl(Pod::Usage) >= 1.14,它被软件包 perl-Getopt-Long-2.40-.el7.noarch 需要
--> 正在处理依赖关系 perl(Text::ParseWords),它被软件包 perl-Getopt-Long-2.40-.el7.noarch 需要
---> 软件包 perl-Git.noarch.0.1.8.3.-.el7 将被 安装
---> 软件包 perl-PathTools.x86_64.0.3.-.el7 将被 安装
---> 软件包 perl-TermReadKey.x86_64.0.2.-.el7 将被 安装
---> 软件包 rsync.x86_64.0.3.1.2-.el7 将被 安装
--> 正在检查事务
---> 软件包 perl-Carp.noarch.0.1.-.el7 将被 安装
---> 软件包 perl-Filter.x86_64.0.1.-.el7 将被 安装
---> 软件包 perl-Pod-Simple.noarch.1.3.-.el7 将被 安装
--> 正在处理依赖关系 perl(Pod::Escapes) >= 1.04,它被软件包 :perl-Pod-Simple-3.28-.el7.noarch 需要
--> 正在处理依赖关系 perl(Encode),它被软件包 :perl-Pod-Simple-3.28-.el7.noarch 需要
---> 软件包 perl-Pod-Usage.noarch.0.1.-.el7 将被 安装
--> 正在处理依赖关系 perl(Pod::Text) >= 3.15,它被软件包 perl-Pod-Usage-1.63-.el7.noarch 需要
--> 正在处理依赖关系 perl-Pod-Perldoc,它被软件包 perl-Pod-Usage-1.63-.el7.noarch 需要
---> 软件包 perl-Scalar-List-Utils.x86_64.0.1.-.el7 将被 安装
---> 软件包 perl-Socket.x86_64.0.2.-.el7 将被 安装
---> 软件包 perl-Storable.x86_64.0.2.-.el7 将被 安装
---> 软件包 perl-Text-ParseWords.noarch.0.3.-.el7 将被 安装
---> 软件包 perl-Time-HiRes.x86_64.4.1.-.el7 将被 安装
---> 软件包 perl-Time-Local.noarch.0.1.-.el7 将被 安装
---> 软件包 perl-constant.noarch.0.1.-.el7 将被 安装
---> 软件包 perl-libs.x86_64.4.5.16.3-.el7_6 将被 安装
---> 软件包 perl-macros.x86_64.4.5.16.3-.el7_6 将被 安装
---> 软件包 perl-threads.x86_64.0.1.-.el7 将被 安装
---> 软件包 perl-threads-shared.x86_64.0.1.-.el7 将被 安装
--> 正在检查事务
---> 软件包 perl-Encode.x86_64.0.2.-.el7 将被 安装
---> 软件包 perl-Pod-Escapes.noarch.1.1.-.el7_6 将被 安装
---> 软件包 perl-Pod-Perldoc.noarch.0.3.-.el7 将被 安装
--> 正在处理依赖关系 perl(parent),它被软件包 perl-Pod-Perldoc-3.20-.el7.noarch 需要
--> 正在处理依赖关系 perl(HTTP::Tiny),它被软件包 perl-Pod-Perldoc-3.20-.el7.noarch 需要
---> 软件包 perl-podlators.noarch.0.2.5.1-.el7 将被 安装
--> 正在检查事务
---> 软件包 perl-HTTP-Tiny.noarch.0.0.-.el7 将被 安装
---> 软件包 perl-parent.noarch.1.0.-.el7 将被 安装
--> 解决依赖关系完成 依赖关系解决 ===============================================================================================
Package 架构 版本 源 大小
===============================================================================================
正在安装:
git x86_64 1.8.3.1-.el7 updates 4.4 M
为依赖而安装:
perl x86_64 :5.16.-.el7_6 updates 8.0 M
perl-Carp noarch 1.26-.el7 base k
perl-Encode x86_64 2.51-.el7 base 1.5 M
perl-Error noarch :0.17020-.el7 base k
perl-Exporter noarch 5.68-.el7 base k
perl-File-Path noarch 2.09-.el7 base k
perl-File-Temp noarch 0.23.-.el7 base k
perl-Filter x86_64 1.49-.el7 base k
perl-Getopt-Long noarch 2.40-.el7 base k
perl-Git noarch 1.8.3.1-.el7 updates k
perl-HTTP-Tiny noarch 0.033-.el7 base k
perl-PathTools x86_64 3.40-.el7 base k
perl-Pod-Escapes noarch :1.04-.el7_6 updates k
perl-Pod-Perldoc noarch 3.20-.el7 base k
perl-Pod-Simple noarch :3.28-.el7 base k
perl-Pod-Usage noarch 1.63-.el7 base k
perl-Scalar-List-Utils x86_64 1.27-.el7 base k
perl-Socket x86_64 2.010-.el7 base k
perl-Storable x86_64 2.45-.el7 base k
perl-TermReadKey x86_64 2.30-.el7 base k
perl-Text-ParseWords noarch 3.29-.el7 base k
perl-Time-HiRes x86_64 :1.9725-.el7 base k
perl-Time-Local noarch 1.2300-.el7 base k
perl-constant noarch 1.27-.el7 base k
perl-libs x86_64 :5.16.-.el7_6 updates k
perl-macros x86_64 :5.16.-.el7_6 updates k
perl-parent noarch :0.225-.el7 base k
perl-podlators noarch 2.5.-.el7 base k
perl-threads x86_64 1.87-.el7 base k
perl-threads-shared x86_64 1.43-.el7 base k
rsync x86_64 3.1.-.el7 base k 事务概要
===============================================================================================
安装 软件包 (+ 依赖软件包) 总下载量: M
安装大小: M
Downloading packages:
(/): perl-Carp-1.26-.el7.noarch.rpm | kB ::
(/): perl-Error-0.17020-.el7.noarch.rpm | kB ::
(/): perl-Exporter-5.68-.el7.noarch.rpm | kB ::
(/): perl-Encode-2.51-.el7.x86_64.rpm | 1.5 MB ::
(/): perl-File-Temp-0.23.-.el7.noarch.rpm | kB ::
(/): perl-Filter-1.49-.el7.x86_64.rpm | kB ::
(/): perl-Getopt-Long-2.40-.el7.noarch.rpm | kB ::
(/): git-1.8.3.1-.el7.x86_64.rpm | 4.4 MB ::
(/): perl-Git-1.8.3.1-.el7.noarch.rpm | kB ::
(/): perl-HTTP-Tiny-0.033-.el7.noarch.rpm | kB ::
(/): perl-PathTools-3.40-.el7.x86_64.rpm | kB ::
(/): perl-File-Path-2.09-.el7.noarch.rpm | kB ::
(/): perl-Pod-Escapes-1.04-.el7_6.noarch.rpm | kB ::
(/): perl-Pod-Simple-3.28-.el7.noarch.rpm | kB ::
(/): perl-5.16.-.el7_6.x86_64.rpm | 8.0 MB ::
(/): perl-Pod-Perldoc-3.20-.el7.noarch.rpm | kB ::
(/): perl-Pod-Usage-1.63-.el7.noarch.rpm | kB ::
(/): perl-Socket-2.010-.el7.x86_64.rpm | kB ::
(/): perl-Scalar-List-Utils-1.27-.el7.x86_64.rpm | kB ::
(/): perl-TermReadKey-2.30-.el7.x86_64.rpm | kB ::
(/): perl-Text-ParseWords-3.29-.el7.noarch.rpm | kB ::
(/): perl-Storable-2.45-.el7.x86_64.rpm | kB ::
(/): perl-Time-HiRes-1.9725-.el7.x86_64.rpm | kB ::
(/): perl-constant-1.27-.el7.noarch.rpm | kB ::
(/): perl-parent-0.225-.el7.noarch.rpm | kB ::
(/): perl-Time-Local-1.2300-.el7.noarch.rpm | kB ::
(/): perl-podlators-2.5.-.el7.noarch.rpm | kB ::
(/): perl-macros-5.16.-.el7_6.x86_64.rpm | kB ::
(/): perl-libs-5.16.-.el7_6.x86_64.rpm | kB ::
(/): perl-threads-1.87-.el7.x86_64.rpm | kB ::
(/): perl-threads-shared-1.43-.el7.x86_64.rpm | kB ::
(/): rsync-3.1.-.el7.x86_64.rpm | kB ::
-----------------------------------------------------------------------------------------------
总计 2.3 MB/s | MB ::
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
正在安装 : :perl-parent-0.225-.el7.noarch /
正在安装 : perl-HTTP-Tiny-0.033-.el7.noarch /
正在安装 : perl-podlators-2.5.-.el7.noarch /
正在安装 : perl-Pod-Perldoc-3.20-.el7.noarch /
正在安装 : :perl-Pod-Escapes-1.04-.el7_6.noarch /
正在安装 : perl-Encode-2.51-.el7.x86_64 /
正在安装 : perl-Text-ParseWords-3.29-.el7.noarch /
正在安装 : perl-Pod-Usage-1.63-.el7.noarch /
正在安装 : :perl-libs-5.16.-.el7_6.x86_64 /
正在安装 : :perl-macros-5.16.-.el7_6.x86_64 /
正在安装 : :perl-Time-HiRes-1.9725-.el7.x86_64 /
正在安装 : perl-Exporter-5.68-.el7.noarch /
正在安装 : perl-constant-1.27-.el7.noarch /
正在安装 : perl-Time-Local-1.2300-.el7.noarch /
正在安装 : perl-Socket-2.010-.el7.x86_64 /
正在安装 : perl-Carp-1.26-.el7.noarch /
正在安装 : perl-Storable-2.45-.el7.x86_64 /
正在安装 : perl-PathTools-3.40-.el7.x86_64 /
正在安装 : perl-Scalar-List-Utils-1.27-.el7.x86_64 /
正在安装 : :perl-Pod-Simple-3.28-.el7.noarch /
正在安装 : perl-File-Temp-0.23.-.el7.noarch /
正在安装 : perl-File-Path-2.09-.el7.noarch /
正在安装 : perl-threads-shared-1.43-.el7.x86_64 /
正在安装 : perl-threads-1.87-.el7.x86_64 /
正在安装 : perl-Filter-1.49-.el7.x86_64 /
正在安装 : perl-Getopt-Long-2.40-.el7.noarch /
正在安装 : :perl-5.16.-.el7_6.x86_64 /
正在安装 : :perl-Error-0.17020-.el7.noarch /
正在安装 : perl-TermReadKey-2.30-.el7.x86_64 /
正在安装 : rsync-3.1.-.el7.x86_64 /
正在安装 : perl-Git-1.8.3.1-.el7.noarch /
正在安装 : git-1.8.3.1-.el7.x86_64 /
验证中 : perl-HTTP-Tiny-0.033-.el7.noarch /
验证中 : perl-threads-shared-1.43-.el7.x86_64 /
验证中 : :perl-Time-HiRes-1.9725-.el7.x86_64 /
验证中 : :perl-Pod-Escapes-1.04-.el7_6.noarch /
验证中 : perl-Exporter-5.68-.el7.noarch /
验证中 : perl-constant-1.27-.el7.noarch /
验证中 : perl-PathTools-3.40-.el7.x86_64 /
验证中 : :perl-parent-0.225-.el7.noarch /
验证中 : perl-TermReadKey-2.30-.el7.x86_64 /
验证中 : :perl-libs-5.16.-.el7_6.x86_64 /
验证中 : perl-File-Temp-0.23.-.el7.noarch /
验证中 : :perl-Pod-Simple-3.28-.el7.noarch /
验证中 : perl-Time-Local-1.2300-.el7.noarch /
验证中 : :perl-macros-5.16.-.el7_6.x86_64 /
验证中 : perl-Socket-2.010-.el7.x86_64 /
验证中 : perl-Carp-1.26-.el7.noarch /
验证中 : :perl-Error-0.17020-.el7.noarch /
验证中 : git-1.8.3.1-.el7.x86_64 /
验证中 : perl-Storable-2.45-.el7.x86_64 /
验证中 : perl-Scalar-List-Utils-1.27-.el7.x86_64 /
验证中 : perl-Git-1.8.3.1-.el7.noarch /
验证中 : rsync-3.1.-.el7.x86_64 /
验证中 : perl-Pod-Usage-1.63-.el7.noarch /
验证中 : perl-Encode-2.51-.el7.x86_64 /
验证中 : perl-Pod-Perldoc-3.20-.el7.noarch /
验证中 : perl-podlators-2.5.-.el7.noarch /
验证中 : perl-File-Path-2.09-.el7.noarch /
验证中 : perl-threads-1.87-.el7.x86_64 /
验证中 : perl-Filter-1.49-.el7.x86_64 /
验证中 : perl-Getopt-Long-2.40-.el7.noarch /
验证中 : perl-Text-ParseWords-3.29-.el7.noarch /
验证中 : :perl-5.16.-.el7_6.x86_64 / 已安装:
git.x86_64 :1.8.3.1-.el7 作为依赖被安装:
perl.x86_64 :5.16.-.el7_6 perl-Carp.noarch :1.26-.el7
perl-Encode.x86_64 :2.51-.el7 perl-Error.noarch :0.17020-.el7
perl-Exporter.noarch :5.68-.el7 perl-File-Path.noarch :2.09-.el7
perl-File-Temp.noarch :0.23.-.el7 perl-Filter.x86_64 :1.49-.el7
perl-Getopt-Long.noarch :2.40-.el7 perl-Git.noarch :1.8.3.1-.el7
perl-HTTP-Tiny.noarch :0.033-.el7 perl-PathTools.x86_64 :3.40-.el7
perl-Pod-Escapes.noarch :1.04-.el7_6 perl-Pod-Perldoc.noarch :3.20-.el7
perl-Pod-Simple.noarch :3.28-.el7 perl-Pod-Usage.noarch :1.63-.el7
perl-Scalar-List-Utils.x86_64 :1.27-.el7 perl-Socket.x86_64 :2.010-.el7
perl-Storable.x86_64 :2.45-.el7 perl-TermReadKey.x86_64 :2.30-.el7
perl-Text-ParseWords.noarch :3.29-.el7 perl-Time-HiRes.x86_64 :1.9725-.el7
perl-Time-Local.noarch :1.2300-.el7 perl-constant.noarch :1.27-.el7
perl-libs.x86_64 :5.16.-.el7_6 perl-macros.x86_64 :5.16.-.el7_6
perl-parent.noarch :0.225-.el7 perl-podlators.noarch :2.5.-.el7
perl-threads.x86_64 :1.87-.el7 perl-threads-shared.x86_64 :1.43-.el7
rsync.x86_64 :3.1.-.el7 完毕!
#切换到用户 git
[root@ ~]# su - git
上一次登录:四 3月 :: CST 2019pts/ 上
#创建一个仓库文件夹 加上.git只是代码规范
[git@ ~]$ mkdir tomcat-java-demo.git
[git@ ~]$ ls
tomcat-java-demo.git
[git@ ~]$ ls
tomcat-java-demo.git
[git@ ~]$ cd tomcat-java-demo.git/
[git@ tomcat-java-demo.git]$ ls
# 把文件夹初始化为一个git代码仓库
[git@ tomcat-java-demo.git]$ git --bare init
初始化空的 Git 版本库于 /home/git/tomcat-java-demo.git/
[git@ tomcat-java-demo.git]$ ls
branches config description HEAD hooks info objects refs
[git@ tomcat-java-demo.git]$ pwd
/home/git/tomcat-java-demo.git [END] // ::

3. 192.168.1.40机器去拉取 git 代码仓库里的代码 

[BEGIN] // ::
[root@ ~]# clear
# git客户端也是这样安装的(git客户端和仓库端,安装方法一样)
[root@ ~]# yum install git -y
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.cn99.com
* updates: mirrors.huaweicloud.com
Resolving Dependencies
--> Running transaction check
---> Package git.x86_64 :1.8.3.1-.el7 will be installed
--> Processing Dependency: perl-Git = 1.8.3.1-.el7 for package: git-1.8.3.1-.el7.x86_64
--> Processing Dependency: perl >= 5.008 for package: git-1.8.3.1-.el7.x86_64
--> Processing Dependency: rsync for package: git-1.8.3.1-.el7.x86_64
--> Processing Dependency: perl(warnings) for package: git-1.8.3.1-.el7.x86_64
--> Processing Dependency: perl(vars) for package: git-1.8.3.1-.el7.x86_64
--> Processing Dependency: perl(strict) for package: git-1.8.3.1-.el7.x86_64
--> Processing Dependency: perl(lib) for package: git-1.8.3.1-.el7.x86_64
--> Processing Dependency: perl(Term::ReadKey) for package: git-1.8.3.1-.el7.x86_64
--> Processing Dependency: perl(Git) for package: git-1.8.3.1-.el7.x86_64
--> Processing Dependency: perl(Getopt::Long) for package: git-1.8.3.1-.el7.x86_64
--> Processing Dependency: perl(File::stat) for package: git-1.8.3.1-.el7.x86_64
--> Processing Dependency: perl(File::Temp) for package: git-1.8.3.1-.el7.x86_64
--> Processing Dependency: perl(File::Spec) for package: git-1.8.3.1-.el7.x86_64
--> Processing Dependency: perl(File::Path) for package: git-1.8.3.1-.el7.x86_64
--> Processing Dependency: perl(File::Find) for package: git-1.8.3.1-.el7.x86_64
--> Processing Dependency: perl(File::Copy) for package: git-1.8.3.1-.el7.x86_64
--> Processing Dependency: perl(File::Basename) for package: git-1.8.3.1-.el7.x86_64
--> Processing Dependency: perl(Exporter) for package: git-1.8.3.1-.el7.x86_64
--> Processing Dependency: perl(Error) for package: git-1.8.3.1-.el7.x86_64
--> Processing Dependency: /usr/bin/perl for package: git-1.8.3.1-.el7.x86_64
--> Running transaction check
---> Package perl.x86_64 :5.16.-.el7_6 will be installed
--> Processing Dependency: perl-libs = :5.16.-.el7_6 for package: :perl-5.16.-.el7_6.x86_64
--> Processing Dependency: perl(Socket) >= 1.3 for package: :perl-5.16.-.el7_6.x86_64
--> Processing Dependency: perl(Scalar::Util) >= 1.10 for package: :perl-5.16.-.el7_6.x86_64
--> Processing Dependency: perl-macros for package: :perl-5.16.-.el7_6.x86_64
--> Processing Dependency: perl-libs for package: :perl-5.16.-.el7_6.x86_64
--> Processing Dependency: perl(threads::shared) for package: :perl-5.16.-.el7_6.x86_64
--> Processing Dependency: perl(threads) for package: :perl-5.16.-.el7_6.x86_64
--> Processing Dependency: perl(constant) for package: :perl-5.16.-.el7_6.x86_64
--> Processing Dependency: perl(Time::Local) for package: :perl-5.16.-.el7_6.x86_64
--> Processing Dependency: perl(Time::HiRes) for package: :perl-5.16.-.el7_6.x86_64
--> Processing Dependency: perl(Storable) for package: :perl-5.16.-.el7_6.x86_64
--> Processing Dependency: perl(Socket) for package: :perl-5.16.-.el7_6.x86_64
--> Processing Dependency: perl(Scalar::Util) for package: :perl-5.16.-.el7_6.x86_64
--> Processing Dependency: perl(Pod::Simple::XHTML) for package: :perl-5.16.-.el7_6.x86_64
--> Processing Dependency: perl(Pod::Simple::Search) for package: :perl-5.16.-.el7_6.x86_64
--> Processing Dependency: perl(Filter::Util::Call) for package: :perl-5.16.-.el7_6.x86_64
--> Processing Dependency: perl(Carp) for package: :perl-5.16.-.el7_6.x86_64
--> Processing Dependency: libperl.so()(64bit) for package: :perl-5.16.-.el7_6.x86_64
---> Package perl-Error.noarch :0.17020-.el7 will be installed
---> Package perl-Exporter.noarch :5.68-.el7 will be installed
---> Package perl-File-Path.noarch :2.09-.el7 will be installed
---> Package perl-File-Temp.noarch :0.23.-.el7 will be installed
---> Package perl-Getopt-Long.noarch :2.40-.el7 will be installed
--> Processing Dependency: perl(Pod::Usage) >= 1.14 for package: perl-Getopt-Long-2.40-.el7.noarch
--> Processing Dependency: perl(Text::ParseWords) for package: perl-Getopt-Long-2.40-.el7.noarch
---> Package perl-Git.noarch :1.8.3.1-.el7 will be installed
---> Package perl-PathTools.x86_64 :3.40-.el7 will be installed
---> Package perl-TermReadKey.x86_64 :2.30-.el7 will be installed
---> Package rsync.x86_64 :3.1.-.el7 will be installed
--> Running transaction check
---> Package perl-Carp.noarch :1.26-.el7 will be installed
---> Package perl-Filter.x86_64 :1.49-.el7 will be installed
---> Package perl-Pod-Simple.noarch :3.28-.el7 will be installed
--> Processing Dependency: perl(Pod::Escapes) >= 1.04 for package: :perl-Pod-Simple-3.28-.el7.noarch
--> Processing Dependency: perl(Encode) for package: :perl-Pod-Simple-3.28-.el7.noarch
---> Package perl-Pod-Usage.noarch :1.63-.el7 will be installed
--> Processing Dependency: perl(Pod::Text) >= 3.15 for package: perl-Pod-Usage-1.63-.el7.noarch
--> Processing Dependency: perl-Pod-Perldoc for package: perl-Pod-Usage-1.63-.el7.noarch
---> Package perl-Scalar-List-Utils.x86_64 :1.27-.el7 will be installed
---> Package perl-Socket.x86_64 :2.010-.el7 will be installed
---> Package perl-Storable.x86_64 :2.45-.el7 will be installed
---> Package perl-Text-ParseWords.noarch :3.29-.el7 will be installed
---> Package perl-Time-HiRes.x86_64 :1.9725-.el7 will be installed
---> Package perl-Time-Local.noarch :1.2300-.el7 will be installed
---> Package perl-constant.noarch :1.27-.el7 will be installed
---> Package perl-libs.x86_64 :5.16.-.el7_6 will be installed
---> Package perl-macros.x86_64 :5.16.-.el7_6 will be installed
---> Package perl-threads.x86_64 :1.87-.el7 will be installed
---> Package perl-threads-shared.x86_64 :1.43-.el7 will be installed
--> Running transaction check
---> Package perl-Encode.x86_64 :2.51-.el7 will be installed
---> Package perl-Pod-Escapes.noarch :1.04-.el7_6 will be installed
---> Package perl-Pod-Perldoc.noarch :3.20-.el7 will be installed
--> Processing Dependency: perl(parent) for package: perl-Pod-Perldoc-3.20-.el7.noarch
--> Processing Dependency: perl(HTTP::Tiny) for package: perl-Pod-Perldoc-3.20-.el7.noarch
---> Package perl-podlators.noarch :2.5.-.el7 will be installed
--> Running transaction check
---> Package perl-HTTP-Tiny.noarch :0.033-.el7 will be installed
---> Package perl-parent.noarch :0.225-.el7 will be installed
--> Finished Dependency Resolution Dependencies Resolved ===============================================================================================
Package Arch Version Repository Size
===============================================================================================
Installing:
git x86_64 1.8.3.1-.el7 updates 4.4 M
Installing for dependencies:
perl x86_64 :5.16.-.el7_6 updates 8.0 M
perl-Carp noarch 1.26-.el7 base k
perl-Encode x86_64 2.51-.el7 base 1.5 M
perl-Error noarch :0.17020-.el7 base k
perl-Exporter noarch 5.68-.el7 base k
perl-File-Path noarch 2.09-.el7 base k
perl-File-Temp noarch 0.23.-.el7 base k
perl-Filter x86_64 1.49-.el7 base k
perl-Getopt-Long noarch 2.40-.el7 base k
perl-Git noarch 1.8.3.1-.el7 updates k
perl-HTTP-Tiny noarch 0.033-.el7 base k
perl-PathTools x86_64 3.40-.el7 base k
perl-Pod-Escapes noarch :1.04-.el7_6 updates k
perl-Pod-Perldoc noarch 3.20-.el7 base k
perl-Pod-Simple noarch :3.28-.el7 base k
perl-Pod-Usage noarch 1.63-.el7 base k
perl-Scalar-List-Utils x86_64 1.27-.el7 base k
perl-Socket x86_64 2.010-.el7 base k
perl-Storable x86_64 2.45-.el7 base k
perl-TermReadKey x86_64 2.30-.el7 base k
perl-Text-ParseWords noarch 3.29-.el7 base k
perl-Time-HiRes x86_64 :1.9725-.el7 base k
perl-Time-Local noarch 1.2300-.el7 base k
perl-constant noarch 1.27-.el7 base k
perl-libs x86_64 :5.16.-.el7_6 updates k
perl-macros x86_64 :5.16.-.el7_6 updates k
perl-parent noarch :0.225-.el7 base k
perl-podlators noarch 2.5.-.el7 base k
perl-threads x86_64 1.87-.el7 base k
perl-threads-shared x86_64 1.43-.el7 base k
rsync x86_64 3.1.-.el7 base k Transaction Summary
===============================================================================================
Install Package (+ Dependent packages) Total download size: M
Installed size: M
Downloading packages:
(/): perl-Error-0.17020-.el7.noarch.rpm | kB ::
(/): perl-Exporter-5.68-.el7.noarch.rpm | kB ::
(/): perl-File-Path-2.09-.el7.noarch.rpm | kB ::
(/): perl-File-Temp-0.23.-.el7.noarch.rpm | kB ::
(/): perl-Filter-1.49-.el7.x86_64.rpm | kB ::
(/): perl-Getopt-Long-2.40-.el7.noarch.rpm | kB ::
(/): git-1.8.3.1-.el7.x86_64.rpm | 4.4 MB ::
(/): perl-HTTP-Tiny-0.033-.el7.noarch.rpm | kB ::
(/): perl-Git-1.8.3.1-.el7.noarch.rpm | kB ::
(/): perl-PathTools-3.40-.el7.x86_64.rpm | kB ::
(/): perl-Pod-Perldoc-3.20-.el7.noarch.rpm | kB ::
(/): perl-Pod-Escapes-1.04-.el7_6.noarch.rpm | kB ::
(/): perl-Pod-Simple-3.28-.el7.noarch.rpm | kB ::
(/): perl-Scalar-List-Utils-1.27-.el7.x86_64.rpm | kB ::
(/): perl-Socket-2.010-.el7.x86_64.rpm | kB ::
(/): perl-Storable-2.45-.el7.x86_64.rpm | kB ::
(/): perl-Carp-1.26-.el7.noarch.rpm | kB ::
(/): perl-TermReadKey-2.30-.el7.x86_64.rpm | kB ::
(/): perl-Time-HiRes-1.9725-.el7.x86_64.rpm | kB ::
(/): perl-Time-Local-1.2300-.el7.noarch.rpm | kB ::
(/): perl-constant-1.27-.el7.noarch.rpm | kB ::
(/): perl-5.16.-.el7_6.x86_64.rpm | 8.0 MB ::
(/): perl-libs-5.16.-.el7_6.x86_64.rpm | kB ::
(/): perl-parent-0.225-.el7.noarch.rpm | kB ::
(/): perl-podlators-2.5.-.el7.noarch.rpm | kB ::
(/): perl-macros-5.16.-.el7_6.x86_64.rpm | kB ::
(/): perl-threads-1.87-.el7.x86_64.rpm | kB ::
(/): rsync-3.1.-.el7.x86_64.rpm | kB ::
(/): perl-threads-shared-1.43-.el7.x86_64.rpm | kB ::
(/): perl-Pod-Usage-1.63-.el7.noarch.rpm | kB ::
(/): perl-Text-ParseWords-3.29-.el7.noarch.rpm | kB ::
(/): perl-Encode-2.51-.el7.x86_64.rpm | 1.5 MB ::
-----------------------------------------------------------------------------------------------
Total 1.9 MB/s | MB ::
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : :perl-parent-0.225-.el7.noarch /
Installing : perl-HTTP-Tiny-0.033-.el7.noarch /
Installing : perl-podlators-2.5.-.el7.noarch /
Installing : perl-Pod-Perldoc-3.20-.el7.noarch /
Installing : :perl-Pod-Escapes-1.04-.el7_6.noarch /
Installing : perl-Encode-2.51-.el7.x86_64 /
Installing : perl-Text-ParseWords-3.29-.el7.noarch /
Installing : perl-Pod-Usage-1.63-.el7.noarch /
Installing : :perl-libs-5.16.-.el7_6.x86_64 /
Installing : :perl-macros-5.16.-.el7_6.x86_64 /
Installing : :perl-Time-HiRes-1.9725-.el7.x86_64 /
Installing : perl-Exporter-5.68-.el7.noarch /
Installing : perl-constant-1.27-.el7.noarch /
Installing : perl-Time-Local-1.2300-.el7.noarch /
Installing : perl-Socket-2.010-.el7.x86_64 /
Installing : perl-Carp-1.26-.el7.noarch /
Installing : perl-Storable-2.45-.el7.x86_64 /
Installing : perl-PathTools-3.40-.el7.x86_64 /
Installing : perl-Scalar-List-Utils-1.27-.el7.x86_64 /
Installing : :perl-Pod-Simple-3.28-.el7.noarch /
Installing : perl-File-Temp-0.23.-.el7.noarch /
Installing : perl-File-Path-2.09-.el7.noarch /
Installing : perl-threads-shared-1.43-.el7.x86_64 /
Installing : perl-threads-1.87-.el7.x86_64 /
Installing : perl-Filter-1.49-.el7.x86_64 /
Installing : perl-Getopt-Long-2.40-.el7.noarch /
Installing : :perl-5.16.-.el7_6.x86_64 /
Installing : :perl-Error-0.17020-.el7.noarch /
Installing : perl-TermReadKey-2.30-.el7.x86_64 /
Installing : rsync-3.1.-.el7.x86_64 /
Installing : perl-Git-1.8.3.1-.el7.noarch /
Installing : git-1.8.3.1-.el7.x86_64 /
Verifying : perl-HTTP-Tiny-0.033-.el7.noarch /
Verifying : perl-threads-shared-1.43-.el7.x86_64 /
Verifying : :perl-Time-HiRes-1.9725-.el7.x86_64 /
Verifying : :perl-Pod-Escapes-1.04-.el7_6.noarch /
Verifying : perl-Exporter-5.68-.el7.noarch /
Verifying : perl-constant-1.27-.el7.noarch /
Verifying : perl-PathTools-3.40-.el7.x86_64 /
Verifying : :perl-parent-0.225-.el7.noarch /
Verifying : perl-TermReadKey-2.30-.el7.x86_64 /
Verifying : :perl-libs-5.16.-.el7_6.x86_64 /
Verifying : perl-File-Temp-0.23.-.el7.noarch /
Verifying : :perl-Pod-Simple-3.28-.el7.noarch /
Verifying : perl-Time-Local-1.2300-.el7.noarch /
Verifying : :perl-macros-5.16.-.el7_6.x86_64 /
Verifying : perl-Socket-2.010-.el7.x86_64 /
Verifying : perl-Carp-1.26-.el7.noarch /
Verifying : :perl-Error-0.17020-.el7.noarch /
Verifying : git-1.8.3.1-.el7.x86_64 /
Verifying : perl-Storable-2.45-.el7.x86_64 /
Verifying : perl-Scalar-List-Utils-1.27-.el7.x86_64 /
Verifying : perl-Git-1.8.3.1-.el7.noarch /
Verifying : rsync-3.1.-.el7.x86_64 /
Verifying : perl-Pod-Usage-1.63-.el7.noarch /
Verifying : perl-Encode-2.51-.el7.x86_64 /
Verifying : perl-Pod-Perldoc-3.20-.el7.noarch /
Verifying : perl-podlators-2.5.-.el7.noarch /
Verifying : perl-File-Path-2.09-.el7.noarch /
Verifying : perl-threads-1.87-.el7.x86_64 /
Verifying : perl-Filter-1.49-.el7.x86_64 /
Verifying : perl-Getopt-Long-2.40-.el7.noarch /
Verifying : perl-Text-ParseWords-3.29-.el7.noarch /
Verifying : :perl-5.16.-.el7_6.x86_64 / Installed:
git.x86_64 :1.8.3.1-.el7 Dependency Installed:
perl.x86_64 :5.16.-.el7_6 perl-Carp.noarch :1.26-.el7
perl-Encode.x86_64 :2.51-.el7 perl-Error.noarch :0.17020-.el7
perl-Exporter.noarch :5.68-.el7 perl-File-Path.noarch :2.09-.el7
perl-File-Temp.noarch :0.23.-.el7 perl-Filter.x86_64 :1.49-.el7
perl-Getopt-Long.noarch :2.40-.el7 perl-Git.noarch :1.8.3.1-.el7
perl-HTTP-Tiny.noarch :0.033-.el7 perl-PathTools.x86_64 :3.40-.el7
perl-Pod-Escapes.noarch :1.04-.el7_6 perl-Pod-Perldoc.noarch :3.20-.el7
perl-Pod-Simple.noarch :3.28-.el7 perl-Pod-Usage.noarch :1.63-.el7
perl-Scalar-List-Utils.x86_64 :1.27-.el7 perl-Socket.x86_64 :2.010-.el7
perl-Storable.x86_64 :2.45-.el7 perl-TermReadKey.x86_64 :2.30-.el7
perl-Text-ParseWords.noarch :3.29-.el7 perl-Time-HiRes.x86_64 :1.9725-.el7
perl-Time-Local.noarch :1.2300-.el7 perl-constant.noarch :1.27-.el7
perl-libs.x86_64 :5.16.-.el7_6 perl-macros.x86_64 :5.16.-.el7_6
perl-parent.noarch :0.225-.el7 perl-podlators.noarch :2.5.-.el7
perl-threads.x86_64 :1.87-.el7 perl-threads-shared.x86_64 :1.43-.el7
rsync.x86_64 :3.1.-.el7 Complete!
[root@ ~]# git clone git@192.168.1.30:/home/git/tomcat-java-demo.git
Cloning into 'tomcat-java-demo'...
The authenticity of host '192.168.1.30 (192.168.1.30)' can't be established.
ECDSA key fingerprint is SHA256:J2OyGebNBy8rCxm7BLidiHnGY0ikFPrTkCrqMdvyJ78.
ECDSA key fingerprint is MD5:f1:9e:b6:a5:d8::8c:::f8:8d::8c:5a::a1.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.30' (ECDSA) to the list of known hosts.
git@192.168.1.30's password:
Permission denied, please try again.
git@192.168.1.30's password:
warning: You appear to have cloned an empty repository.
[root@ ~]# ls
anaconda-ks.cfg tomcat-java-demo
[root@ ~]# cd tomcat-java-demo/
[root@ tomcat-java-demo]# ls [END] // ::

4. 先在192.168.1.40机器上,编写代码(实际项目的代码,这里为了演示方便从github上拉取一个开源的代码),再将这些代码提交到192.168.1.30上的git代码版本仓库里,

[root@192 ~]# mv tomcat-java-demo tomcat-java-demo.bak
#从https://github.com/lizhenliang/tomcat-java-demo拉取代码
[root@ ~]# git clone https://github.com/lizhenliang/tomcat-java-demo
Cloning into 'tomcat-java-demo'...
remote: Enumerating objects: , done.
remote: Counting objects: % (/), done.
remote: Compressing objects: % (/), done.
remote: Total (delta ), reused (delta ), pack-reused
Receiving objects: % (/), 4.52 MiB | 46.00 KiB/s, done.
Resolving deltas: % (/), done.
[root@ ~]# ls
anaconda-ks.cfg tomcat-java-demo tomcat-java-demo.bak
[root@ ~]# cd tomcat-java-demo
[root@ tomcat-java-demo]# ls
doc Dockerfile LICENSE pom.xml README.md src

因为代码是从github上拉取的,需要修改隐藏的  .git/config文件, 修改url 为私有git仓库地址

#提交代码到本地暂存区
[root@ tomcat-java-demo]# git add .
#提交代码到本地代码仓库
[root@ tomcat-java-demo]# git commit -m 'all'
# On branch master
nothing to commit, working directory clean
#推送代码到中央代码仓库,至于origin 和master是什么,请看 .git/config文件
[root@ tomcat-java-demo]# git push origin master

5. 到192.168.1.30机器上 查看代码是否提交到了仓库 

很遗憾, 在代码仓库下,是没法直接查看的。 

我们可以通过其他的方式,在安装git工具的环境下,clone项目下来

另一个方法:在windows上安装 TortoiseGIT工具,进行如下配置后, clone项目到本地

另外, TortoiseGIT工具在windows上非常好用。 对测试人员来说, 看代码提交日志,非常方便

6. 在192.168.1.40机器上部署jenkins,安装jdk,maven

将准备好的jdk-8u45-linux-x64.tar.gz

apache-maven-3.5.0-bin.tar.gz

jenkins.war (下载地址:http://mirrors.jenkins.io/war-stable/latest/jenkins.war)

apache-tomcat-8.0.46.tar.gz文件放到 192.168.1.40 机器上, 不知道如何放文件 可参考 Docker: 构建Nginx,PHP,Tomcat基础镜像

解压maven,jdk 配置jdk环境变量

[root@ ~]# ls
anaconda-ks.cfg jdk-8u45-linux-x64.tar.gz tomcat-java-demo
apache-maven-3.5.-bin.tar.gz jenkins.war tomcat-java-demo.bak
apache-tomcat-8.0.46.tar.gz
[root@ ~]# tar xzvf jdk-8u45-linux-x64.tar.gz
...
[root@ ~]# tar zxvf apache-maven-3.5.-bin.tar.gz
[root@ ~]# mv apache-maven-3.5. /usr/local/maven
[root@ ~]# mv jdk1..0_45/ /usr/local/jdk
[root@ ~]# vi /etc/profile
在文件最后追加
JAVA_HOME=/usr/local/jdk
PATH=$PATH:$JAVA_HOME/bin
export JAVA_HOME PATH

[root@ ~]# source /etc/profile
[root@ ~]# java -version
java version "1.8.0_45"
Java(TM) SE Runtime Environment (build 1.8.0_45-b14)
Java HotSpot(TM) -Bit Server VM (build 25.45-b02, mixed mode)

部署jenkins

[root@ ~]# tar zxvf apache-tomcat-8.0..tar.gz
[root@ ~]# mv apache-tomcat-8.0. /usr/local/jenkins_tomcat
[root@ ~]# cd /usr/local/jenkins_tomcat
[root@ jenkins_tomcat]# ls
bin conf lib LICENSE logs NOTICE RELEASE-NOTES RUNNING.txt temp webapps work
#删除 webapps下的所有内容(默认都是一些测试页面,这里用不到,所以删除)
[root@ jenkins_tomcat]# cd webapps/
[root@ webapps]# ls
docs examples host-manager manager ROOT
[root@ webapps]# rm -rf *
#移动jenkins到webapps下,并重命名为 ROOT.war,因为浏览器默认访问地址输入后,默认访问路径是 ROOT下的index.html. 如果不重命名, 浏览器访问时,需要加jenkins.war中的jenkins这个关键字
[root@ webapps]# mv /root/jenkins.war ROOT.war
[root@ webapps]# cd ../bin
[root@ bin]# ./startup.sh
Using CATALINA_BASE: /usr/local/jenkins_tomcat
Using CATALINA_HOME: /usr/local/jenkins_tomcat
Using CATALINA_TMPDIR: /usr/local/jenkins_tomcat/temp
Using JRE_HOME: /usr/local/jdk
Using CLASSPATH: /usr/local/jenkins_tomcat/bin/bootstrap.jar:/usr/local/jenkins_tomcat/bin/tomcat-juli.jar
Tomcat started.
# catalina.out里面有jenkins登陆页面的初始密码
[root@ bin]# tail ../logs/catalina.out

到此,jenkins部署好了,可以通过浏览器 http://192.168.1.40:8080 进行访问了

[Skip plugin installations]->其他步骤 设置jenkins 管理界面登陆用户和密码,直到下一步完成。

jenkins插件安装 

登陆后,系统管理,插件管理,advanced标签页,拉到最下面 Update site 里,默认的地址, https 修改成http。(在上面jenkins提示offline,所以连接官方安装插件会有问题,这里https修改成http后,大多数情况,能解决插件安装连接不上的问题), submit 后,点check now

安装插件: Available标签里选择pipeline ,-> intall without restart,

安装完毕后,可以在intalled标签里,看到已安装的插件

这些都是pipeline勾选后,默认安装的关联插件。

Jenkins里创建job

New job->Enter an item name:tomcat-java-demo,类型,选流水线->OK,Configure

pipleline完整脚本

node {
// 拉取代码 git从git仓库中拉取代码,采用的是免交互方式 checkout如何产生?参考 Docker:pipeline编写基本技巧- jenkins配置通过密钥拉取git源码管理仓库的代码
stage('Git Checkout') {
checkout([$class: 'GitSCM', branches: [[name: '${branch}']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'a3b0ae29-ebaa-46b8-a75b-27c86c31fbba', url: 'git@192.168.1.30:/home/git/tomcat-java-demo.git']]])
}
// 代码编译
stage('Maven Build') {
sh '''
export JAVA_HOME=/usr/local/jdk
/usr/local/maven/bin/mvn clean package -Dmaven.test.skip=true
'''
}
// 项目打包到镜像并推送到镜像仓库
stage('Build and Push Image') {
sh '''
REPOSITORY=192.168.1.30/library/tomcat-java-demo:${branch}
cat > Dockerfile << EOF
FROM 192.168.1.30/library/tomcat:v1
MAINTAINER meimei
RUN rm -rf /usr/local/tomcat/webapps/*
ADD target/*.war /usr/local/tomcat/webapps/ROOT.war
EOF
docker build -t $REPOSITORY .
docker login 192.168.1.30 -u admin -p Harbor12345
docker push $REPOSITORY
'''
}
// 部署到Docker主机
stage('Deploy to Docker') {
sh '''
REPOSITORY=192.168.1.30/library/tomcat-java-demo:${branch}
docker rm -f tomcat-java-demo |true
docker pull $REPOSITORY
docker container run -d --name tomcat-java-demo -p 88:8080 $REPOSITORY
'''
}
}

上面脚本中有个变量  ${branch},branch这个变量是用了jenkins的参数化构建功能

选中job->Configure

配置好后,save。

jenkins机器需要往Harbor镜像仓库推送镜像,需要将Harbor服务器的地址设置成为jenkins所在机器的docker服务可信任Harbor地址

//192.168.1.40 机器上
[root@ ~]# cat /etc/docker/daemon.json
{"registry-mirrors": ["http://f1361db2.m.daocloud.io"]}
[root@ ~]# vi /etc/docker/daemon.json
{"registry-mirrors": ["http://f1361db2.m.daocloud.io"],
"insecure-registries":["192.168.1.30"]}
//保存后退出
[root@192 ~]# systemctl restart docker

(对这部分理解有困难的,可参考 Docker: 企业级镜像仓库Harbor的使用 )

执行构建

到此构建成功。

接下来我们验证一下 Harbor镜像仓库里是否有新的推送上来的tomcat-java-demo镜像,和jenkins服务器上是否有运行着的tomcat服务,并且通过网页访问是否成功

到此,测试成功。

总结一下:jenkins完成了如下流程

jenkins拉取git仓库的代码->maven编译打包产品成war包->把war包构建进docker镜像->将镜像推送到Harbor镜像仓库->从Harbor镜像仓库拉取镜像,并运行镜像

作者: 梅梅~

出处: https://www.cnblogs.com/keeptesting

关于作者:专注软件测试,测试运维相关工作,请多多赐教!

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出, 原文链接 欢迎沟通交流加微信联系。 微信:yangguangkg20140901 暗号:博客园.

Docker: Jenkins与Docker的自动化CI/CD流水线实战的相关教程结束。

《Docker: Jenkins与Docker的自动化CI/CD流水线实战.doc》

下载本文的Word格式文档,以方便收藏与打印。