什么是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流水线实战的更多相关文章

  1. SpringCloud+Docker+Jenkins+GitLab+Maven实现自动化构建与部署实战

    1.前言与初衷 本文章会涉及Docker常见命令基础知识点结合不同场景实操一起使用. 本文章会涉及结合工作过程中部署不同环境服务器的项目案例场景为初心进行实际细讲. 本文章主要讲述Docker.Jen ...

  2. Jenkins自动化CI CD流水线之1--介绍与安装

    第1章 大纲 CI/CD, DevOps介绍 Git安装与使用 Jenkins安装与使用 权限管理 参数化构建 Master-Slave 流水线(Pipeline) 邮件通知 应用案例 自动发布PHP ...

  3. Jenkins自动化CI CD流水线之8--流水线自动化发布Java项目

    一.前提 插件:Maven Integration plugin 环境: maven.tomcat 用的博客系统代码: git clone https://github.com/b3log/solo. ...

  4. Jenkins自动化CI&CD流水线

    1 环境说明 主机名称 IP cpu核数/内存/硬盘 安装软件 用途 controlnode 172.16.1.120 2/2/60 git 代码仓库 slavenode1 172.16.1.121 ...

  5. Jenkins自动化CI CD流水线之5--pipeline

    一.概览 二.安装 在对jenkins进行初始化安装时,默认已经安装了jenkins的相关插件,如下图所示: 三.实操 新建任务: 编写pipeline脚本: 我们可以借助流水线语法去做. test流 ...

  6. Jenkins自动化CI CD流水线之4--Master-Slave架构

    一.介绍 jenkins的Master-slave分布式架构主要是为了解决jenkins单点构建任务多.负载较高.性能不足的场景. Master/Slave相当于Server和agent的概念.Mas ...

  7. Jenkins自动化CI CD流水线之3--参数化构建

    一. 背景 如果只是简单的构建,jenkins自己默认的插件可以做,但是如果我们想要在构建过程中有更多功能,比如说:选择性构建.传参.项目指定变量等等其他功能,基础的参数化构建可以实现一些简单功能,但 ...

  8. Jenkins自动化CI CD流水线之7--流水线自动化发布PHP项目

    一.前提 环境为:lnmp PHP项目:wordpress(此处我们下载一个wordpress的源码.将其模拟为我们的代码上传到我们的git仓库) 二.配置 1)创建job 2)参数化构建 3)配置p ...

  9. Jenkins自动化CI CD流水线之6--构建邮件状态通知

    一. 前提 前提: 服务器开启邮箱服务: 二. 基础配置 需要安装一个插件: 插件: Email Extension Plugin 进行配置: 系统管理->系统设置-> 相关配置如下图: ...

随机推荐

  1. 配置IIS网站,我遇到的那些坑~

    配置错误 不能在此路径中使用此配置节.如果在父级别上锁定了该节,便会出现这种情况.锁定是默认设置的(overrideModeDefault="Deny"),或者是通过包含 over ...

  2. 深入理解 new 操作符

    和其他高级语言一样 JavaScript 也有 new 操作符,我们知道 new 可以用来实例化一个类,从而在内存中分配一个实例对象. 但在 JavaScript 中,万物皆对象,为什么还要通过 ne ...

  3. 【从零开始搭建自己的.NET Core Api框架】(七)授权认证进阶篇

    系列目录 一.  创建项目并集成swagger 1.1 创建 1.2 完善 二. 搭建项目整体架构 三. 集成轻量级ORM框架——SqlSugar 3.1 搭建环境 3.2 实战篇:利用SqlSuga ...

  4. iFace Chain [ 爱妃链 ] 或将凭借人脸密钥技术成为安全领域最大的赢家

    前段时间iFace Chain [ 中文音译名称: 爱妃链 ] 安全专家揭密了区块链领域,数字资产存放于无信用钱包中的一些风险,并为区块链玩家解密如何安全保护资产私钥,我们再来回顾分析一下目前跑路钱包 ...

  5. Java笔试题库之选题题篇【71-140题】

    71下面哪几个函数是public void method(){̷}的重载函数?() A.public void method( int m){̷} B.public int method(){̷} C ...

  6. C语言中的神兽strdup

    C语言的确博大精深,在C语言的世界中遨游了那么多年,发现自己仍是菜鸟一枚,很多利器没有能够驾驭,今天介绍一个神兽,威力无比,但是却很少人能用得好. 函数原型: #include <string. ...

  7. JavaScript 执行机制

    一.宏任务与微任务 macro-task(宏任务):包括整体代码script,setTimeout,setInterval micro-task(微任务):Promise,process.nextTi ...

  8. sqlserver数据库备份时出现3241问题

    工作中需要将生产上的数据库备份到测试数据库一份,然后同步生产环境进行测试.但是在将数据库还原的过程中,遇到了下面的问题: 说是,介质簇结构不正确,猜测应该是sqlserver的版本不一致的问题,然后查 ...

  9. DotNetCore跨平台~EFCore废弃了TransactionScope取而代之的Context.Database.BeginTransaction

    回到目录 TransactionScope是.net平台基于的分布式事务组件,它默认为本地事务,同时当系统有需要时可以自动提升为分布式事务,而对系统的前提是要开启MSDTC服务,必要时需要在数据库服务 ...

  10. 【最短路径Floyd算法详解推导过程】看完这篇,你还能不懂Floyd算法?还不会?

    简介 Floyd-Warshall算法(Floyd-Warshall algorithm),是一种利用动态规划的思想寻找给定的加权图中多源点之间最短路径的算法,与Dijkstra算法类似.该算法名称以 ...