CICD的详细流程

CICD

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 流程部署1
1.jenkins服务的部署
2.gitlab的服务的部署
3.仓库连接方式和网址的连接方式
4.构建的方式,普通构建和流水线构建
5.自动化流程的构建,钩子wevhook的搭建

# 插件的下载 -- 后续有插件进行补充
1.publish-over-ssh # ssh功能插件
2.git-plugin # git-plugin
3.Kubernetes CLI Plugin # kubectl功能插件,运用到k8s可以下载
4.Generic Webhook Trigger # 触发器、构建参数,Webhook触发器
5.git lab # 触发器 GitLab模块是用于与GitLab进行集成的插件
6.Parameterized Trigger # (参数化触发器):这是Jenkins插件中的一个用于实现构建参数化的插件,可以在构建任务执行时动态传递一些参数,以适应不同的构建需求。
7.Git Parameter # (Git参数):这是Jenkins插件中的一个用于从Git仓库中获取分支列表和提交记录的插件,可以用于在构建任务执行时选择Git仓库中的特定分支或提交记录。
8.Extended Choice Parameter # (扩展选择参数):这是Jenkins插件中的一个用于实现更丰富选择参数的插件,可以提供多种选择形式(如单选、多选、下拉列表、复选框等),以满足不同的选择需求。
9.Pipeline # 流水线构建项目
10.gitlab Hook plugin # 钩子
11.gitlab plugin

1.jenkins服务的部署

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
1.上传jenkins2.375.war安装包
# 不知道怎么上传包,如果需要包的请留言

2.运行Jenkins
nohup java -jar /root/jenkins2.375.3.war --httpPort=8080 -Djava.awt.headless=true & # 后台运行

3.查看日志
cat nohup.out # 查看日志

4.打开浏览器进入链接
10.0.9.247:8080

5.填写初始密码,激活系统
找到页面对应密码输入

6.安装推荐插件

7.设置初始用户和密码

8.进入系统,安装完成

1.出现模板错误

CICD

https://updates.jenkins.io/download/plugins/workflow-basic-steps/

2.下载插件

CICD

3.点击进入导入插件

CICD

CICD

4.下载导入的插件

选择文件导入,让他加载重启登录就可以了

如果这里有重新加载登录,就点一下,就没问题了

CICD

2.gitlab的服务部署

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# 环境准备
安装gitlab
2C/4G

# 安装前的准备
1. 关闭seliux、firewalld、iptables
2. !!!停止其他服务 80 3306
3. 配置yum源

1.wget http://10.3.148.241/gz2204/soft/gitlab-ce-15.8.0-ce.0.el7.x86_64.rpm -- 下载gitlab rpm包
2.yum localinstall -y gitlab-ce-15.8.0-ce.0.el7.x86_64.rpm -- 安装gitlab软件包
3.head -1 /opt/gitlab/version-manifest.txt -- 查看gitlab版本

4.修改配置文件
# vim /etc/gitlab/gitlab.rb
external_url 'http://192.168.160.129' -- 修改成本地的ip

5.初始化 Gitlab (第一次使用配置时间较长)
gitlab-ctl reconfigure
Username: root # 这里是用户和密码的位置/etc/gitlab/initial_root_password
Password: You didn't opt-in to print initial root password to STDOUT.
Password stored to /etc/gitlab/initial_root_password. This file will be cleaned up in first reconfigure run after 24 hours. # 这个密码将在24小时消失,所以得赶快改密码

NOTE: Because these credentials might be present in your log files in plain text, it is highly recommended to reset the password following https://docs.gitlab.com/ee/security/reset_user_password.html#reset-your-root-password.

gitlab Reconfigured!

6.启动 Gitlab 服务
gitlab-ctl start

7.登录gitlab web页面(192.168.168.129)
user: root
pass: 查看改文件 # cat /etc/gitlab/initial_root_password
因为系统给出的初始化密码只能使用24小时,所以需要修改密码

# web界面
修改密码--> 用户设置 --->密码
Xiaocai@123

8.如果忘记密码
# 打开控制台
gitlab-rails console -e production

# 找到用户,输入密码,确认密码,保存
user = User.find_by(username: 'root') -- 修改的用户
user.password = 'Xiaocai@123' -- 修改的密码
user.password_confirmation = 'Xiaocai@123' -- 再次确认密码
user.save! -- 保存密码

9.gitlab的常用命令
gitlab命令管理
gitlab-ctl start # 启动所有 gitlab 组件;
gitlab-ctl stop # 停止所有 gitlab 组件;
gitlab-ctl restart # 重启所有 gitlab 组件;
gitlab-ctl status # 查看服务状态;
gitlab-ctl reconfigure # 重新配置服务;
vim /etc/gitlab/gitlab.rb # 修改默认的配置文件;
gitlab-ctl tail # 查看日志;
git push --force origin master # 改变默认分支上传
git remote set-url origin git@10.0.9.234:jenkins/test.git # 另一种连接远程仓库的方法
ssh-keygen -- 生成密钥

CICD

2.1–git本地仓库的搭建和连接
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 安装git
1.yum -y install git # 安装本地仓库git

2.配置git
git config --global user.name "username" -- 配置git使用用户
git config --global user.name xiaocai
git config --global user.email "email@mail.com" -- 配置git使用邮箱
git config --global color.ui true -- 语法高亮
git config --list -- 查看全局配置
cat ~/.gitconfig -- 查看全局配置

代码仓库 [初始化之后目录]
本地仓库[git] 远程仓库[gitlab]

本地仓库工作区分为三种 [目录]
工作[编辑] 、 暂存[追踪]、本地仓库
2.2–本地仓库(目录)的使用
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
1.创建目录
mkdir -pv /code/gzcloud # -v显示详细信息 -p递归创建
cd /code/gzcloud
git init # 初始化仓库
git status # 查看当前仓库的状态

2.工作区: touchcpmvmkdir
touch index.html # 在工作区创建文件

3.暂存区
git add . # 把当前git仓库中未追踪的文件添加到暂存区 git add index.html

4.本地仓库
git commit -m '提交信息说明'
git commit -m 'filename index.html id:1103'

5.查看本地仓库
git log # 查看当前主版本变化
git reflog # 查看所有的历史变化
git log --pretty=oneline # 以一行的方式查看

6.代码回退
git reset --hard commit-id
git reset --hard 4397d533 # 根据本地仓库文件id继续回退
git reset --hard HEAD^ //默认回滚到上一个版本 [git log中的版本关系]
git reset --hard HEAD^^ //默认回滚到上两个版本
git reset --hard HEAD^^^ //默认回滚到上三个版本
git reset --hard HEAD^^^^ //默认回滚到上四个版本

删除工作区的内容
# rm -rf xxx

删除暂存区的内容
# git rm xx -f //该文件xx会从暂存区和工作区同时删除

暂存区文件重命名
# git mv src_name dest_name //该文件xx在暂存区和工作区同时改名
2.3–git标签和分支的使用
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# 标签的使用
git tag # 查看tag标签
git tag tagname # 给当前所处版本添加标签
git tag tagname -m "标签的详细信息" # 给标签写上备注
git show tagname # 查看标签详细信息
git tag -d tagname # 删除指定标签

对比数据
git diff可以对比当前文件与仓库已保存文件的区别,知道了对README作了什么修改

git diff --name-only HEAD HEAD^
git diff --name-only head_id head_id2

git stash使用
前提:必须是处于git下的文件,未add到git的文件无法使用。在暂存区的内容进行保存进度
git stash //保存当前工作进度
git stash save message // message为此次进度保存的说明。
git stash list //查看所有的进度
git stash pop stash@{num} //恢复工作进度 stash恢复后被删除
git stash apply stash@{num} //恢复工作进度 stash恢复后依旧存在
git stash drop stash@{num} //删除某个工作进度
git stash clear //清空所有的保存

# 分支的使用
1.查看分支
git branch # 查看分支

2.创建分支
git branch branch_name # 创建分支
git checkout -b branch_name # 如果分支不存在,则创建并切换分支

3.切换分支
git checkout branch_name # 切换分支

4.删除分支
git branch --no-merged # 查看是否有分支未合并代码
git branch -d testing # 删除分支testing [分支代码已经完全合并]
git branch -D gz2204 # 删除有未合并代码的分支

git merge branch_name(分支名称) # 把分支的提交合并到当前分支

5.示例
1.1 创建并切换到分支gz2204
# git checkout -b gz2204

1.2 查看当前所处分支
# git branch
* gz2204
gzcloud
master

1.3 编辑文件
# vim gz2204.txt

1.4 添加到暂存区
# git add .

1.5 提交到本地仓库[仅在分支gz2204]
# git commit -m 'branch:gz2204 add file gz2204.txt'

1.6 查看日志
# git log --pretty=oneline

1.7 切回到master分支
# git checkout master

1.8查看日志,并没有发现分支gz2204的提交
git log --pretty=oneline

1.9把gz2204分支的提交合并到当前分支
# git merge gz2204

2.0 查看日志,发现分支gz2204的提交已经到了master分支
# git log --pretty=oneline

3.仓库连接方式和网址的连接方式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
git switch -m name(main) 	# 修改分支名

1.创建一个公有的群组和项目,
2.ssh-keygen # 生成密钥
3.密钥认证:
cat /root/.ssh/id_rsa.pub # 将一下复制粘贴到web网页-SSH密钥认证
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCoRyov+SeAfemEL2w/MQdWVtsBZmBEgRWKr4dwCJF4EzurHcAEhtSWJO3L/DxqMoVNzXkWe3BZry3RXphcFA4vcg+o8zzUrv384y9SA1Z92M42F0DpNVmQx3QqQxN6GDX6OXVgNmA1a+KFhxb75ijVA/NxX0F0Na1IWE1qItBCNaMR8xrYsmkjeoksQ2ukAmvLJv3WA347+ypdVcC23Ggkzznmh9UkmPdEulz9gkpObHQXK8/XG1lZvbOMp5OE58zL5WHM210HmOsZMjp+n9MDBtr9MZXajTcGDrYQZzcoE2BZMkapwaCU2HZzb/P/denF9pTII9EQLqXU8sXFssOH root@localhost.localdomain

5.git clone git@192.168.160.129:test/web1.git # 将远端的仓库链接到本地,后面接群组和项目
cd /web1 # 进入项目目录,这一步很重要
git remote set-url origin git@10.0.9.234:jenkins/test.git # 如果上条命令不成功,试试这条

6.vim README.md -- 部署简单项目,添加到本地仓库
# web 项目
## 环境需求
​```
centos7.6
nginx:1.16
java1.8+
mysql5.6+
​```
##部署过程
​```
yum -y install nginx
​```
:Wq

7.git push # 从本地仓库把项目文件推算到远程仓库
git branch # 查看分支
git push -u origin main # 一般第一次推送都要加上分支名

8.git remote -v # 查看项目属于那个组
origin git@192.168.160.129:test/web1.git (fetch) # 这个应该是远程
origin git@192.168.160.129:test/web1.git (push)

9.git remote add origin git@192.168.160.129:test/web3.git # 本地有仓库,本地连接远程仓库

10.git push -u origin --all #将本地仓库的文件推送到远程仓库,包括分支,如果分支为master就在master上,
git push -u origin --tags # 将本地版本推送到远程仓库

11.git pull # 同步远端仓库的内容到本地

12.创建新的用户,修改密码,并开启另一台机器下载git
branch master dev
user admin dev [group:gz2204] [角色:developer]
129 128

13.其他机器拷贝远程仓库
git clone git@192.168.160.129:test/web3.git -- 其他机器拷贝远程
cd web3/
git checkout -b dev
git config --global user.name dev -- 创建新的角色
git config --global user.email "dev@xiaocai.com"
vim test.txt
git add .
git commit -m 'fielname test'

11.创建分支上传远程
git branch -- 查看当前分支,在main主分支的前提下创建分支
* dev
main

git push

12.合并分支
需要管理员进行批准合并,并是否保留分支
3.1网址连接
1
2
3
4
5
6
7
8
9
1.配置http凭证

# 第一张图片
这里配置的是gitlab的用户名和密码-作为Jenkins的凭证
# 第二张图片
点击生产流水线语句
1.git拉取gitlab的语句类型为这个
2.gitlab的网址
3.gitlab的用户凭证

CICD

CICD

4.构建的方式,普通构建和流水线构建

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
第一张图片:创建流水线
第二张图片:点击This project is parameterized。添加参数,选择String Parameter,填入变量参数信息
第三张图片:同第二张
第三张图片:选择流水线 Pipeline script,并将变量参数添加到流水线中

流水线实例:
pipeline {
agent any
stages {
stage('pull code') {
steps {
checkout scmGit(branches: [[name: '*/${branch}']], extensions: [], userRemoteConfigs: [[credentialsId: '2', url: 'https://ip地址/framework/仓库地址']])
}
}
stage('build projeck') {
steps {
sh ' cd /root/.jenkins/workspace/jenkins项目目录/ && npm install '
sh ' cd /root/.jenkins/workspace/jenkins项目目录/ && npm run build:test '
sh ' ssh root@${ip} " ls /etc/nginx/html/构建后项目的目录/ && rm -rf /etc/nginx/html/构建后项目的目录/ || ls " '
sh ' scp -r /root/.jenkins/workspace/jenkins项目目录/构建后项目的目录/ ${ip}:/etc/nginx/html/'
}
}
}
}

CICD

CICD

CICD

CICD

5.自动化流程的构建,钩子wevhook的搭建

1
2
3
4
5
6
7
8
第一张图片:打开gitlab的设置
第二张图片:打开网络设置,允许访问
第三张图片:Build when a change is pushed to GitLab. GitLab webhook URL:进行自动构建
第四张图片:选择Poll,scm
第五张图片:选择gitlab的某一个项目设置,将第三张图片jenkins的项目网址粘贴gitlab中,默认选项然后添加,即可成功
第六张图片:添加信息如下
第七张图片:Dashboard-》Manage Jenkins-》Configure System,找到gitlab的设置,取消gitlab的身份验证
第八张图片:回到gitlab点击test测试,发现测试成功,自动化流程构建完成,至此cicd流程全部解释

CICD

CICD

CICD

CICD

CICD

CICD

CICD

CICD


CICD的详细流程
https://xiaocai.icu/2023/08/16/博客-CICD的流程/
作者
小菜
发布于
2023年8月16日
许可协议