1.git工具使用

实验环境:
server1:172.25.0.1(4G内存)

1.1 git介绍

Git特点:
• 速度
• 简单的设计
• 对非线性开发模式的强力支持(允许成千上万个并行开发的分支)
• 完全分布式
• 有能力高效管理类似 Linux 内核一样的超大规模项目(速度和数据量)
• 自诞生于 2005 年以来,Git 日臻成熟完善,在高度易用的同时,仍然保留着初期设定的 目标。 它的速度飞快,极其适合管理大项目,有着令人难以置信的非线性分支管理系统。
• Git必看秘籍:https://git-scm.com/book/zh/v2

Git 有三种状态:已提交(committed)、已修改(modified) 和 已暂存(staged)。
• 已修改表示修改了文件,但还没保存到数据库中。
• 已暂存表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中。
• 已提交表示数据已经安全地保存在本地数据库中。
• 这会让我们的 Git 项目拥有三个阶段:工作区、暂存区以及 Git 目录。
在这里插入图片描述


1.2 git版本控制系统介绍

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


1.3 git安装

安装git:yum install -y git
初始化版本库:
mkdir demo
git init
ls .git/ .git目录是git跟踪管理版本库的

在这里插入图片描述
在这里插入图片描述

获取Git 仓库通常有两种方式:
• 将尚未进行版本控制的本地目录转换为 Git 仓库。
• 从其它服务器克隆 一个已存在的 Git 仓库。比如:git clone


1.4 gif的使用命令

用户信息
git config --global user.name "red"
git config --global user.email root@red.org

检查当前文件状态
git status
git status -s //简化输出

新添加的未跟踪文件前面有 ?? 标记,新添加到暂存区中的文件前面有 A 标记,修改过的文件前面有 M 标记。输出中有两栏,左栏指明了暂存区的状态,右栏指明了工作区的状态。

跟踪新文件
git add README

忽略文件
一般我们总会有些文件无需纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。
通常都是些自动生成的文件,比如日志文件,或者编译过程中创建的临时文件等。
在这种情况下,我们可以创建一个名为 .gitignore 的文件,列出要忽略的文件的模式。

cat .gitignore

.*  ##忽略所有隐藏文件 
/test ##只忽略当前目录下的test文件
 build/ ##忽略任何目录下名为 build 的文件夹 

文件 .gitignore 的格式规范如下:
所有空行或者以 # 开头的行都会被 Git 忽略。
可以使用标准的 glob 模式匹配,它会递归地应用在整个工作区中。
匹配模式可以以(/)开头防止递归。
匹配模式可以以(/)结尾指定目录。
要忽略指定模式以外的文件或目录,可以在模式前加上叹号(!)取反。
所谓的 glob 模式是指 shell 所使用的简化了的正则表达式。
星号(*)匹配零个或多个任意字符;[abc] 匹配任何一个列在方括号中的字符

查看已暂存和未暂存的修改
git diff

提交更新
git commit
此命令比较的是工作目录中当前文件和暂存区域快照之间的差异。也就是修改之后还没有暂存起来的变化内容。

跳过使用暂存区域
git commit -a -m 'added new benchmarks'

移除文件
要从 Git 中移除某个文件,就必须要从已跟踪文件清单中移除(确切地说,是从暂存区域移除),然后提交。可以用 git rm 命令完成此项工作,并连带从工作目录中删除指定的文件,这样以后就不会出现在未跟踪文件清单中了。
git rm PROJECTS.md
git rm --cached README

重命名文件
git mv README.md README其实,运行 git mv 就相当于运行了下面三条命令:
mv README.md README
git rm README.md
git add README

查看提交历史
git log
git log -p -2
git log --stat
git log --pretty=oneline
git reflog

取消暂存的文件
git reset HEAD README.md

撤消对文件的修改
git checkout -- README.md

版本回退
git reflog
git reset --hard efa267a

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


1.5 远程仓库的使用

远程仓库:注册github帐号,并新建一个仓库:
在这里插入图片描述
在这里插入图片描述
使用https方式推送每次需要输入用户名和密码,如果不想麻烦的话采用ssh方式:
ssh-keygen -t rsa -b 4096 -C "server1@red.org生成本地密钥,并上传公钥到github:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
推送本地仓库内容到github:
cd demo需要进入工作目录
git remote add origin https://github.com/aimee-red/demo.git

关联远程仓库
git push -u origin master //第一次推送需要加 -u参数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
**

2.gitlab代码仓库

2.1 GitLab的安装

官网:https://about.gitlab.com/install

软件下载(官方下载慢,推荐使用国内镜像站点) :https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/

软件安装: (官方推荐至少4G内存)
yum install -y curl policycoreutils-python openssh-server 解决依赖性
yum install -y gitlab-ce-12.8.5-ce.0.el7.x86_64.rpm 安装gitlab
vim /etc/gitlab/gitlab.rb

external_url 'http://172.25.0.1' //访问gitlab的地址

gitlab-ctl reconfigure 重载服务
登录gitlab: http://172.25.0.1 注意:用户:root 第一次登录需要强制修改密码

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


2. gitlab常用命令:

gitlab-ctl start # 启动所有gitlab 组件
gitlab-ctl stop # 停止所有 gitlab 组件
gitlab-ctl restart # 重启所有 gitlab 组件
gitlab-ctl status # 查看服务状态
gitlab-ctl reconfigure重载服务
gitlab-ctl tail # 查看日志


2.3 GitLab的使用

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

上传文件到私有仓库:
rm -fr demo删除原有文件
git clone git@172.25.0.1:root/demo.git远程登录私有仓库
cd demo/
git remote -v查看远程登录仓库信息
vim index.html
git add index.html
git commit -m "add index.html"
git push -u origin master上传

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


3.jenkins持续集成

实验环境:
server2:172.25.0.2(2G内存)

3.1 Jenkins的介绍

1.Jenkins是开源CI&CD软件领导者, 提供超过1000个插件来支持构建、部署、 自动化, 满足任何项目的需要。

2.Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行,也可独立运行。

3.CI(Continuous integration持续集成)持续集成强调开发人员提交了新代码之后, 立刻进行构建、(单元)测试。
在这里插入图片描述
4.CD(Continuous Delivery持续交付) 是在持续集成的基础上,将集成后的代码部 署到更贴近真实运行环境(类生产环境)中。
在这里插入图片描述


3.2 Jenkins的安装

软件下载:https://jenkins.io/zh/download
国内镜像站:https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat
安装jenkins:
rpm -ivh jdk-8u171-linux-x64.rpm
rpm -ivh jenkins-2.225-1.1.noarch.rpm
systemctl start jenkins

在这里插入图片描述
在这里插入图片描述
访问: http://172.25.0.12:8080
使用初始密码登录:cat /var/lib/jenkins/secrets/initialAdminPassword安装默认插件即可,使用admin用户,登录后修改密码。

在这里插入图片描述
在这里插入图片描述
更新插件源:
vim /var/lib/jenkins/hudson.model.UpdateCenter.xml

<?xml version='1.1' encoding='UTF-8'?>
<sites>
  <site>
    <id>default</id>
    <url>https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json</url>
  </site>
</sites>

cd /var/lib/jenkins/update
sed -i.bak 's/http:\/\/updates.jenkinsci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json
systemctl restart jenkins重启后下载才会变快

在这里插入图片描述
在这里插入图片描述

3.3 Jenkins的使用

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
添加访问git仓库的私钥 在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
定义轮询间隔,有更新时触发jinkens构建
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Git提交代码到gitlab,jinkens轮询检测到代码仓库的变更,触发构建。在这里插入图片描述
在这里插入图片描述


3.4 Jenkins自动构建docker镜像

在Jenkins主机中安装docker
yum install -y containerd.io-1.2.5-3.1.el7.x86_64.rpm docker-ce-18.09.6-3.el7.x86_64.rpm container-selinux-2.21-1.el7.noarch.rpm docker-ce-cli-18.09.6-3.el7.x86_64.rpm
vim /etc/sysctl.d/bridge.conf

net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1

sysctl --system
systemctl start docker
docker load -i nginx.tar

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
修改docker.sock权限,不然jenkins无法直接执行docker命令在这里插入图片描述
在gitlab主机编写dockerfile
cd demo/
vim Dockerfile

FROM nginx
COPY index.html /usr/share/nginx/html

git add Dockerfile
git commit -m "add Dockerfile"
git push -u origin master

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


在Jenkins中设置
删除之前的构建
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
代码提交,镜像构建等一系列动作都自动完成


3.5 gitlab自动触发jenkins(添加gitlab插件)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

手动触发
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
配置实时触发
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


3.6 Jenkins使用tls方式连接docker构建主机

使用环境:
增加主机server3:172.25.0.3

server3安装docker,作为docker主机被远程构建
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Jenkins使用tls方式连接docker构建主机
1.生成key和ca证书
cd /etc/docker
openssl genrsa -aes256 -out ca-key.pem 4096
openssl req -new -x509 -days 365 -key ca-key.pem -sha256 -out ca.pem

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2.生成server-key和csr文件(server3为dcker主机名)
openssl genrsa -out server-key.pem 4096
openssl req -subj "/CN=server3" -sha256 -new -key server-key.pem -out server.csr

在这里插入图片描述

3.可以使用ip地址方式进行tls连接
echo subjectAltName = DNS:server3,IP:172.25.0.13,IP:127.0.0.1 >> extfile.cnf
echo extendedKeyUsage = serverAuth >> extfile.cnf
openssl x509 -req -days 365 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem -extfile extfile.cnf
在这里插入图片描述
在这里插入图片描述

4.安装docker证书:
cp /usr/lib/systemd/system/docker.service /etc/systemd/system/docker.service
vim /etc/systemd/system/docker.service

ExecStart=/usr/bin/dockerd -H fd:// -containerd=/run/containerd/containerd.sock --tlsverify 
--tlscacert=/etc/docker/ca.pem --tlscert=/etc/docker/server-cert.pem --tlskey=/etc/docker/server-key.pem -H tcp://0.0.0.0:2375 

systemctl daemon-reload
systemctl restart docker
netstat -antlp |grep :2375

在这里插入图片描述
在这里插入图片描述
5.生成客户端key和证书
openssl genrsa -out key.pem 4096
openssl req -subj '/CN=client' -new -key key.pem -out client.csr
echo extendedKeyUsage = clientAuth > extfile.cnf
openssl x509 -req -days 365 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out cert.pem -extfile extfile.cnf

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
测试
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


6.添加ssh插件,配置server4使工作交付到server4
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


完整测试
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
git—>gitLab(server1)—>jenkins(server2)—>build host(server3)—>harbor—>deliver(server4)


3.7 Jenkins+ansible

实验环境:
server4作为ansible交付
server5:172.25.0.5作为
在这里插入图片描述
添加ansible交付任务:
• Jenkins服务器提前部署好到目标主机的ssh免密,并安装ansible软件包。
• 由于是以jenkins用户调用ansible命令,所以需要设置jenkins用户到目标主机的免密。
• 新建playbook代码仓库

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

vim playbook/ansible.cfg

[defaults] 
command_warnings = False 
remote_user = ansible

[privilege_escalation] 
become = True 
become_method = sudo 
become_user = root 
become_ask_pass = False

在这里插入图片描述
mkdir inventory
cd inventory/
vim test

[test]
172.25.0.4

vim proc

[proc]
172.25.0.5

在这里插入图片描述
vim playbook.yml

---
- hosts: all
  tasks:
    - name: install apache
      yum:
        name: httpd
        state: present
        
    - name: start apache
      service: 
        name: httpd
        state: started

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


4.配置企业级镜像仓库harbor

实验环境:
harbor:172.25.0.10
官方下载:https://github.com/goharbor/harbor/releases

4.1 安装配置harbor

安装docker
·yum install -y containerd.io-1.2.5-3.1.el7.x86_64.rpm container-selinux-2.21-1.el7.noarch.rpm docker-ce-18.09.6-3.el7.x86_64.rpm docker-ce-cli-18.09.6-3.el7.x86_64.rpm安装docker
vim /etc/sysctl.d/bridge.conf

net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1

systemctl enable docker --now启动docker

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
安装harbor
cp docker-compose-Linux-x86_64-1.24.1 /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
mkdir -p /data/certs
cd /data/certs
openssl req -newkey rsa:4096 -nodes -sha256 -keyout red.org.key -x509 -days 365 -out red.org.crt Generating a 4096 bit RSA private key生成https加密证书

..++
..................................................++
writing new private key to 'red.org.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:cn  
State or Province Name (full name) []:shaanxi
Locality Name (eg, city) [Default City]:xi'an
Organization Name (eg, company) [Default Company Ltd]:red
Organizational Unit Name (eg, section) []:linux
Common Name (eg, your name or your server's hostname) []:reg.red.org
Email Address []:root@red.com

tar zxf harbor-offline-installer-v1.10.1.tgz解压包
cd harbor/
vim harbor.yml配置harbor

hostname: reg.red.org

https:
  # https port for harbor, default is 443
  port: 443
  # The path of cert and key files for nginx
  certificate: /data/certs/red.org.crt ##设置证书位置
  private_key: /data/certs/red.org.key

harbor_admin_password: redhat ##设置密码

vim /etc/hosts做地址解析

172.25.0.10  localhost reg.red.com

./install.sh安装harbor

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


4.2 配置本地上传文件

mkdir -p /etc/docker/certs.d/reg.red.org
cp /data/certs/red.org.crt /etc/docker/certs.d/reg.red.org/ca.crt拷贝证书到docker主机
docker load -i nginx.tar
docker tag nginx:latest reg.red.org/library/nginx:latest
docker login localhost
docker push reg.red.org/library/nginx

在这里插入图片描述
在这里插入图片描述

4.3 配置远程上传文件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
也可以设置私有仓库
vim /etc/docker/daemon.json

{  
   "registry-mirrors": ["https://reg.red.org"]  
} 

systemctl restart docker
docker rmi reg.red.org/library/nginx:latest删除之前的镜像
docker pull nginx直接从私有仓库下载

在这里插入图片描述


4.4 设置harbor私有仓库

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


开发人员具备上传文件的权利
docker tag busybox:latest reg.red.org/private/busybox:latest
docker login reg.red.org
docker push reg.red.org/private/busybox

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
私有仓库公开以后可以匿名下载


4.5 增加harbor仓库镜像扫描、签名功能

参考官网:https://goharbor.io/docs/1.10/working-with-projects/working-with-images/pulling-pushing-images/
cd harbor/
docker-compose stop
./prepare

在这里插入图片描述
在这里插入图片描述
镜像检测
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


镜像信任
参考官方文档:https://docs.docker.com/engine/security/trust/content_trust/

在这里插入图片描述
在这里插入图片描述

1.部署根证书: (使docker引擎和操作系统都可以识别到证书)

/etc/docker/certs.d/reg.westos.org/ca.crt 给docker引擎使用
 ~/.docker/tls/reg.westos.org:4443/ca.crt 给操作系统使用

mkdir -p .docker/tls/reg.red.org:4443
cp /etc/docker/certs.d/reg.red.org/ca.crt .docker/tls/reg.red.org:4443
在这里插入图片描述
2.启用docker内容信任:
export DOCKER_CONTENT_TRUST=1
export DOCKER_CONTENT_TRUST_SERVER=https://reg.red.org:4443
在这里插入图片描述
在这里插入图片描述
3.上传镜像:
docker tag game2048:latest reg.red.org/private/game2048:latest
docker push reg.red.org/private/game2048上传没有打标签的镜像

docker tag game2048:latest reg.red.org/private/game2048:v1
docker push reg.red.org/private/game2048:v1上传没有打标签的镜像,这里签名和标签是绑定的

docker tag game2048:latest reg.red.org/private/game2048:v2
docker push reg.red.org/private/game2048:v2

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


4.删除签名:
docker trust revoke reg.westos.org/library/nginx:latest回收签名

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐