CI/CD 持续集成与持续交付

目录

一 CI/CD是什么

1.1 持续集成(Continuous Integration)

1.2 持续部署(Continuous Deployment)

1.3 持续交付(Continuous Delivery)

二 git工具使用

2.1 git简介

2.2 git 工作流程

三 部署git

3.1 安装git

3.2 初始化

四 git的使用方法

4.1 常用方法

4.2 git对于文件如何忽略

五 gitlab代码仓库

5.1 gitlab简介

5.2 gitlab 的部署实施

5.2.1 部署gitlab

5.2.2 配置gitlab

5.2.3 登陆gitlab

5.3 在gitlab中新建项目

六 jenkins

6.1 jenkins 简介

6.2 部署 jenkins

6.3 jenkins 与gitlab的整合


 

一 CI/CD是什么

CI/CD 是指持续集成(Continuous Integration)和持续部署(Continuous Deployment)或持续交付(Continuous Delivery)

1.1 持续集成(Continuous Integration)


持续集成是一种软件开发实践,团队成员频繁地将他们的工作集成到共享的代码仓库中。其主要特点包括:

  1. 频繁提交代码:开发人员可以每天多次提交代码,确保代码库始终保持最新状态。
  2. 自动化构建:每次提交后,自动触发构建过程,包括编译、测试、静态分析等。
  3. 快速反馈:如果构建失败或测试不通过,能够快速地向开发人员提供反馈,以便及时修复问题。

1.2 持续部署(Continuous Deployment)


持续部署是在持续集成的基础上,将通过所有测试的代码自动部署到生产环境中。其特点如下:

  1. 自动化流程:从代码提交到生产环境的部署完全自动化,无需人工干预。
  2. 高频率部署:可以实现频繁的部署,使得新功能能够快速地提供给用户。
  3. 风险控制:需要有强大的测试和监控体系来确保部署的稳定性和可靠性。

1.3 持续交付(Continuous Delivery)


持续交付与持续部署类似,但不一定自动部署到生产环境,而是随时可以部署。其重点在于确保软件随时处于可发布状态。

 

CI/CD 的好处包括:

  1. 提高开发效率:减少手动操作和等待时间,加快开发周期。
  2. 尽早发现问题:通过频繁的集成和测试,问题能够在早期被发现和解决。
  3. 降低风险:减少了大规模部署时可能出现的问题,提高了软件的质量和稳定性。
  4. 增强团队协作:促进团队成员之间的沟通和协作,提高团队的整体效率。

常见的 CI/CD 工具包括 Jenkins、GitLab CI/CD、Travis CI 等。这些工具可以帮助团队实现自动化的构建、测试和部署流程。

二 git工具使用


a188cbb18967427eaeb7cbac48ba8731.png

2.1 git简介


Git 是一个分布式版本控制系统,被广泛用于软件开发中,以管理代码的版本和变更。 主要特点:

  • 分布式

        每个开发者都有完整的代码仓库副本,这使得开发者可以在离线状态下进行工作,并且在网络出现问题时也不会影响开发。

        即使中央服务器出现故障,开发者仍然可以在本地进行开发和查看项目历史。

  • 高效的分支管理

        Git 中的分支创建和切换非常快速和简单。开发人员可以轻松地创建新的分支来进行新功能的开发或修复 bug,而不会影响主分支。

        合并分支也相对容易,可以使用多种合并策略来满足不同的需求。

  • 快速的版本回退

        如果发现某个版本存在问题,可以快速回退到之前的版本。

        可以查看每个版本的详细变更记录,方便了解代码的演进过程。

  • 强大的提交管理

        每个提交都有一个唯一的标识符,可以方便地引用和查看特定的提交。

        提交可以包含详细的提交信息,描述本次提交的更改内容。

  • 支持协作开发

        开发者可以将自己的更改推送到远程仓库,供其他开发者拉取和合并。

        可以处理多个开发者同时对同一文件进行修改的情况,通过合并冲突解决机制来确保代码的完整性。

 

Git必看秘籍:Git

2.2 git 工作流程


79a043da36f04a04a922138732932390.png

Git 有三种状态:已提交(committed)、已修改(modified) 和 已暂存(staged)。

  • 已修改表示修改了文件,但还没保存到数据库中。
  • 已暂存表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中。
  • 已提交表示数据已经安全地保存在本地数据库中。

这会让我们的 Git 项目拥有三个阶段:工作区、暂存区以及 Git 目录。

三 部署git

3.1 安装git


#在rhel9的系统中默认自带git

[root@gitlab ~]# dnf install git -y
 

#设定命令补全功能

[root@gitlab ~]# echo "source  /usr/share/bash-completion/completions/git" >> ~/.bashrc
[root@gitlab ~]# source  ~/.bashrc

3.2 初始化


获取 Git 仓库通常有两种方式:

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

初始化版本库

[root@gitlab ~]# mkdir timinglee
[root@gitlab ~]# cd timinglee/
[root@gitlab timinglee]# ls
[root@gitlab timinglee]# git init 
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint: 
hint:     git config --global init.defaultBranch <name>
hint: 
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint: 
hint:     git branch -m <name>
Initialized empty Git repository in /root/timinglee/.git/


#中文翻译

[root@gitlab timinglee]# git init
提示:使用 'master' 作为初始分支的名称。这个默认分支名称可能会更改。要在新仓库中
提示:配置使用初始分支名,并消除这条警告,请执行:
提示:
提示:  git config --global init.defaultBranch <名称>
提示:
提示:除了 'master' 之外,通常选定的名字有 'main'、'trunk' 和 'development'。
提示:可以通过以下命令重命名刚创建的分支:
提示:
提示:  git branch -m <name>
已初始化空的 Git 仓库于 /root/timinglee/.git/

 

[root@gitlab timinglee]# ls -a
.  ..  .git
[root@gitlab timinglee]# ls .git/
branches  description  hooks  objects
config    HEAD         info   refs

 

#设定用户信息

[root@gitlab timinglee]# git config --global user.name "timinglee"
[root@gitlab timinglee]# git config --global user.email "timinglee@timinglee.org"

 

#查看当前文件状态

[root@gitlab timinglee]# git status 
On branch master

No commits yet

nothing to commit (create/copy files and use "git add" to track)


#中文翻译

[root@gitlab timinglee]# git status
位于分支 master

尚无提交

无文件要提交(创建/拷贝文件并使用 "git add" 建立跟踪)


[root@gitlab timinglee]# git status -s        #简化输出

注意:

.git目录是git跟踪管理版本库的,没事别瞎溜达

四 git的使用方法

1c14cd109b4249b6b5edf5a6cf518567.jpeg

4.1 常用方法


[root@gitlab timinglee]# echo timinglee > README.md
[root@gitlab timinglee]# git status 
On branch master

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)
    README.md

nothing added to commit but untracked files present (use "git add" to track)
 

#中文翻译

[root@gitlab timinglee]# echo timnglee > README.md
[root@CICD-node1 timinglee]# git status
位于分支 master

尚无提交

未跟踪的文件:
  (使用 "git add <文件>..." 以包含要提交的内容)
        README.md

提交为空,但是存在尚未跟踪的文件(使用 "git add" 建立跟踪)

 

[root@gitlab timinglee]# git status -s
?? README.md        #??    新建文件未添加到版本库

 

[root@gitlab timinglee]# git add README.md 
[root@gitlab timinglee]# git status -s
A  README.md        #A 已添加到暂存区

 

#提交暂存区的数据

[root@gitlab timinglee]# git commit -m "add README.md"
[master (root-commit) e16d40e] add README.md
 1 file changed, 1 insertion(+)
 create mode 100644 README.md


[root@gitlab timinglee]# git status -s        #无任何显示,标识已经提交到版本库

 

#再次修改

[root@gitlab timinglee]# vim README.md 
timinglee
timinglee
[root@gitlab timinglee]# git status -s
 M README.md        #右M 表示文件在工作区被修改

 

#撤销修改

[root@gitlab timinglee]# git checkout -- README.md
[root@gitlab timinglee]# cat README.md 
timinglee

 

#从新修改

[root@gitlab timinglee]# echo timinglee >> README.md 

[root@gitlab timinglee]# git add README.md 
[root@gitlab timinglee]# git status -s
M  README.md        #左M表示文件已经在版本库中并被跟踪

 

#从暂存区撤销

[root@gitlab timinglee]# git restore --staged README.md
[root@gitlab timinglee]# git status -s
 M README.md

 

#从新提交

[root@gitlab timinglee]# git add README.md 
[root@gitlab timinglee]# git status -s
M  README.md


#更新

[root@gitlab timinglee]# git commit -m "update v1"
[master 6852c42] update v1
 1 file changed, 1 insertion(+)
[root@gitlab timinglee]# git status -s
[root@gitlab timinglee]# 


#更新文件

[root@gitlab timinglee]# echo xixi >> README.md 
[root@gitlab timinglee]# git add README.md 
[root@gitlab timinglee]# echo xixi >> README.md 
[root@gitlab timinglee]# git status -s
MM README.md        #MM表示有一部分在暂存区,还有一部分没有提交

 

#如果现在提交只能提交在暂存区中的部分

[root@gitlab timinglee]# git commit -m "update v2"
[master e4bba82] update v2
 1 file changed, 1 insertion(+)
[root@gitlab timinglee]# git status -s
 M README.md        #右M还在

 

#查看已暂存和未暂存的修改变化

[root@gitlab timinglee]# echo haha >> README.md 
[root@gitlab timinglee]# git diff
diff --git a/README.md b/README.md
index e002bfd..63d1257 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,5 @@
 timinglee
 timinglee
 xixi
+xixi
+haha

#跳过使用暂存区,只能在提交过的在版本库中存在的文件使用如果文件状态是“??”不能用此方法

[root@gitlab timinglee]# git commit -a -m "update v3"
[master 6a4e902] update v3
 1 file changed, 2 insertions(+)


#撤销工作区中删除动作

[root@gitlab timinglee]# touch lee.txt
[root@gitlab timinglee]# git add lee.txt 
[root@gitlab timinglee]# git commit -m "add lee.txt"
[master c623e38] add lee.txt
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 lee.txt
[root@gitlab timinglee]# git status -s
[root@gitlab timinglee]# rm -f lee.txt 
[root@gitlab timinglee]# git status -s
 D lee.txt        #右D表示文件在工作区被删除

[root@gitlab timinglee]# git checkout -- lee.txt
[root@gitlab timinglee]# ls
lee.txt  README.md


#从版本库中删除文件

[root@gitlab timinglee]# git rm lee.txt 
rm 'lee.txt'

[root@gitlab timinglee]# git status -s
D  lee.txt        #左D表示文件删除动作被提交到暂存区

 

[root@gitlab timinglee]# git commit -m "delete lee.txt"
[master 9bc9078] delete lee.txt
 1 file changed, 0 insertions(+), 0 deletions(-)
 delete mode 100644 lee.txt
[root@gitlab timinglee]# git status -s
[root@gitlab timinglee]# 

 

#恢复从版本库中被删除的文件

[root@gitlab timinglee]# git log         #查看操作日志
commit 9bc90784f6990b845e3d5186774a430a7acef6c8 (HEAD -> master)
Author: timinglee <timinglee@timinglee.org>
Date:   Sun Oct 20 22:39:07 2024 +0800

    delete lee.txt

commit c623e3833e8aac8fedd1dffc658618b3abdf18c2
Author: timinglee <timinglee@timinglee.org>
Date:   Sun Oct 20 22:35:08 2024 +0800

    add lee.txt

commit 6a4e9021fa6a4a287494fcaf33ff1d5364c21712
Author: timinglee <timinglee@timinglee.org>
Date:   Sun Oct 20 22:33:56 2024 +0800

    update v3

commit e4bba82b596de1dbb644618c7bf791cffd13c08a
Author: timinglee <timinglee@timinglee.org>
Date:   Sun Oct 20 22:30:32 2024 +0800

    update v2

commit 6852c420818792f2347d642da11b061b4283a8df
Author: timinglee <timinglee@timinglee.org>
Date:   Sun Oct 20 22:27:45 2024 +0800

    update v1

commit e16d40e888e096c3149357abcb3d70154876646a
Author: timinglee <timinglee@timinglee.org>
Date:   Sun Oct 20 22:17:19 2024 +0800


[root@gitlab timinglee]# git reflog         #查看提交动作
9bc9078 (HEAD -> master) HEAD@{0}: commit: delete lee.txt
c623e38 HEAD@{1}: commit: add lee.txt
6a4e902 HEAD@{2}: commit: update v3
e4bba82 HEAD@{3}: commit: update v2
6852c42 HEAD@{4}: commit: update v1
e16d40e HEAD@{5}: commit (initial): add README.md

 

#版本回退到删除之前

[root@gitlab timinglee]# git reset --hard c623e38
HEAD is now at c623e38 add lee.txt
[root@gitlab timinglee]# ls
lee.txt  README.md

4.2 git对于文件如何忽略


在做软件开发时对源码编译会产生一些临时文件,我们在提交时需要忽略这些临时文件

[root@gitlab timinglee]# mkdir dir1/
[root@gitlab timinglee]# touch dir1/.file2
[root@gitlab timinglee]# git status -s
?? dir1/


[root@gitlab timinglee]# echo .file1 > .gitignore
[root@gitlab timinglee]# git status -s
?? .gitignore
?? dir1/
[root@gitlab timinglee]# echo ".*" > .gitignore 
[root@gitlab timinglee]# git status -s
[root@gitlab timinglee]# 

五 gitlab代码仓库

5.1 gitlab简介


a0d6708172704c4b9c5c5e5ec2df8251.png

  • GitLab 是一个用于仓库管理系统的开源项目,使用 Git 作为代码管理工具,并在此基础上搭建起来的 web 服务。
  • GitLab 具有很多功能,比如代码托管、持续集成和持续部署(CI/CD)、问题跟踪、合并请求管理等。它可以帮助开发团队更好地协作开发软件项目,提高开发效率和代码质量。

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

中文站点: GitLab下载安装_GitLab安装和配置_GitLab最新中文官网免费版下载-极狐GitLab

官方包地址:gitlab/gitlab-ce - Packages · packages.gitlab.com

5.2 gitlab 的部署实施


5.2.1 部署gitlab


部署gitlab需要内存大于4G

[root@gitlab ~]# yum install -y curl policycoreutils-python-utils openssh-server perl

 

[root@gitlab ~]# dnf install gitlab-ce-17.1.6-ce.0.el9.x86_64.rpm -y

7a7a82f6f50c4b588161adb37d444318.png

5.2.2 配置gitlab


#修改配置文件

[root@gitlab ~]# cd /etc/gitlab/
[root@gitlab gitlab]# ls
gitlab.rb
[root@gitlab gitlab]# vim gitlab.rb
32 external_url 'http://192.168.10.110'

 

#修改配置文件后需利用gitlab-crt来生效,

[root@gitlab gitlab]# gitlab-ctl reconfigure

#执行命令成功后会把所有组件全部启动起来

5.2.3 登陆gitlab


用户名默认为 root 。如果在安装过程中指定了初始密码,则用初始密码登录,如果未指定密码,则系统会随机生成一个密码并存储在 /etc/gitlab/initial_root_password 文件中, 查看随机密码并使用 root 用户名登录。

注意:出于安全原因,24 小时后,/etc/gitlab/initial_root_password 会被第一次 gitlab-ctl reconfigure 自动删除,因此若使用随机密码登录,建议安装成功初始登录成功之后,立即修改初始密码。

#查看原始密码

[root@gitlab gitlab]# cat /etc/gitlab/initial_root_password 
# WARNING: This value is valid only in the following conditions
#          1. If provided manually (either via `GITLAB_ROOT_PASSWORD` environment variable or via `gitlab_rails['initial_root_password']` setting in `gitlab.rb`, it was provided before database was seeded for the first time (usually, the first reconfigure run).
#          2. Password hasn't been changed manually, either via UI or via command line.
#
#          If the password shown here doesn't work, you must reset the admin password following https://docs.gitlab.com/ee/security/reset_user_password.html#reset-your-root-password.

Password: jQa+dFkMdVLPJJOT0XyXYn33SbvsH+tB2mouMSh2wJE=        #密码

# NOTE: This file will be automatically deleted in the first reconfigure run after 24 hours.

登陆

d35df43e14a34564b36daa2e6bfaaddd.png

设置语言

162ff2fe21d84a2ea557feb55e20fd44.png

设置密码

a3ece0b50fe3459490d2b15af3b6e162.png

5.3 在gitlab中新建项目


3734b27ec785405c9c637e8bf6f0ba6b.png

5ba11efb1d9c471e848c9b7af7a30b70.png

b6008270b02441aba58694c338eea9af.png

251b1a85839e46f59875b91cb9b3eb61.png

#生成sshd密钥

[root@gitlab ~]# ssh-keygen 
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa
Your public key has been saved in /root/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:AShjVR88aurM8P6ameZJ/yIZyczhijhkqtT8kXSeXaU root@gitlab.com
The key's randomart image is:
+---[RSA 3072]----+
|   ..oo..        |
|  + .  oo.       |
| . o   .o.   .   |
|    . o  .  o    |
|   = * .S  E     |
| o+ X + o .      |
|=o X.= o .       |
|* ..X*o          |
|o. +O=oo.        |
+----[SHA256]-----+


[root@gitlab ~]# cat .ssh/id_rsa.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDcngjDHLzqELSAUQqYz9VUFoia+wVCgS+Sy1e/XyyK3t2m6Jf3r+r8kxnpvKdzIlsCSZ4X4nX9DAkKj9cPUGTIOiP/oSF/b8PGIYTs2YZdD5+RBeZ0Sf1HKKSKH/7BFvpDQ2Y6g2dzBWaIfkSEaIIJxdb5VSifAiIfhXnHYiJ/cm7iO8poO54z5Vr/VIfcxFtil7gQB5L/lm9DnkUmA0OCeRfSxUgpBF49ElexFAOHzYiXaex5CAVg6Ub0PItqRQdCEf+pJ+4i9iDec2reC0rw+n/U/MTW+LZ0L2Yst+z6MgfatbQaJyjUX4m0w9bBjhTV1VP/+oVAsTuyOe6wibNwijffuqLhxcHKm89dKUjHMqoJ8wn7+Ma0eYojJWx3umk3vDVipstWs0sgYLWPANtm5ehno8uHzPiNiiqqQi/VP0mOabkCY8VVE6lKfc86nwg80U0aZPpF1NpX7aZJegnvolgxY/g7qGwuVcwOsHHf9qXC1jy0gSrGIxh0cY1mCR8= root@gitlab.com
 

上传公钥到gitlab中

b8eca8d276be4d658d7ee5fefcff0cfc.png

下载项目

[root@gitlab ~]# git clone git@192.168.10.110:root/timinglee.git
Cloning into 'timinglee'...
The authenticity of host '192.168.10.110 (192.168.10.110)' can't be established.
ED25519 key fingerprint is SHA256:aPQhrNl0dlmH+S91HwLx/iUxFtRBR8KY1GIdXwaLi40.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.10.110' (ED25519) to the list of known hosts.
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Compressing objects: 100% (2/2), done.
Receiving objects: 100% (3/3), 2.81 KiB | 2.81 MiB/s, done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0)

 

[root@gitlab ~]# ls -R
.:
anaconda-ks.cfg  Downloads                             Public
a.sh             gitlab-ce-17.1.6-ce.0.el9.x86_64.rpm  Templates
b.sh             hadoop-2.10.2.tar.gz                  timinglee
c.sh             hadoop-3.4.0.tar.gz                   Videos
Desktop          Music
Documents        Pictures

./Desktop:

./Documents:

./Downloads:

./Music:

./Pictures:

./Public:

./Templates:

./timinglee:
README.md

./Videos:

 

[root@gitlab ~]# cd timinglee/
[root@gitlab timinglee]# ls
README.md
[root@gitlab timinglee]# git remote -v
origin    git@192.168.10.110:root/timinglee.git (fetch)
origin    git@192.168.10.110:root/timinglee.git (push)

 

#文件提交

[root@gitlab timinglee]# echo timinglee > timinglee
[root@gitlab timinglee]# git add timinglee 
[root@gitlab timinglee]# git commit -m "add timinglee"
[main a6f5ce0] add timinglee
 1 file changed, 1 insertion(+)
 create mode 100644 timinglee
[root@gitlab timinglee]# git push origin main 
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 274 bytes | 274.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To 192.168.10.110:root/timinglee.git
   4207c3b..a6f5ce0  main -> main

 

#中文翻译

[root@gitlab timinglee]# git push -u origin main
枚举对象中: 4, 完成.
对象计数中: 100% (4/4), 完成.
使用 4 个线程进行压缩
压缩对象中: 100% (2/2), 完成.
写入对象中: 100% (3/3), 274 字节 | 274.00 KiB/s, 完成.
总共 3(差异 0),复用 0(差异 0),包复用 0
To 172.25.254.80:root/timinglee.git
   2a97cba..6c08cbb  main -> main
分支 'main' 设置为跟踪 'origin/main'。

六 jenkins

6.1 jenkins 简介


d2d138180dc5421c84382c3aeb5d7c6e.png

  • Jenkins是开源CI&CD软件领导者, 提供超过1000个插件来支持构建、部署、自动化, 满足任何项目的需要。
  • Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行,也可独立运行

CI(Continuous integration持续集成)持续集成强调开发人员提交了新代码之后,立刻进行构建、(单元)测试。

7a339375dca34af5a75c034ad14e9089.png

CD(Continuous Delivery持续交付) 是在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境(类生产环境)中

e0143882e6f74785a1424b0d797d83ef.png

6.2 部署 jenkins


软件下载:https://www.jenkins.io/download/

jenkins需要部署在新的虚拟机中

注意: jenkins需要部署在新的虚拟机中,建议最少4G内存,4核心cpu

#安装依赖包

[root@jenkins ~]# yum install fontconfig java-17-openjdk git -y

 

#安装jenkins

[root@jenkins ~]# yum install jenkins-2.462.2-1.1.noarch.rpm -y


#启动jenkins

[root@jenkins ~]# systemctl enable --now jenkins.service 
Created symlink /etc/systemd/system/multi-user.target.wants/jenkins.service → /usr/lib/systemd/system/jenkins.service.
[root@jenkins ~]# 

 

#查看原始密码

[root@jenkins ~]# cat /var/lib/jenkins/secrets/initialAdminPassword 7554ab1f02e949c58d2f33c56f2a67e2

部署插件(访问你所使用的主机IP+8080端口)

e01885c2cdda4e30a61bd3c9529cddab.png

fe4d808854cb484592cd94f5221bf65b.png

f936edad24c942b296057a35756f067e.png

#安装推荐插件完成后自动跳到创建第一个管理员用户,底下是网络不好时操作

[root@jenkins ~]# systemctl stop jenkins.service

[root@jenkins ~]# rm -rf /var/lib/jenkins/*
[root@jenkins ~]# systemctl start jenkins.service

[root@jenkins ~]# cd /var/lib/jenkins/
[root@jenkins jenkins]# ls
config.xml                        plugins
hudson.model.UpdateCenter.xml     secret.key
hudson.plugins.git.GitTool.xml    secret.key.not-so-secret
identity.key.enc                  secrets
jenkins.telemetry.Correlator.xml  updates
jobs                              userContent
logs                              users
nodeMonitors.xml
[root@jenkins jenkins]# rm -rf plugins/
[root@jenkins jenkins]# tar zxf /root/plugins.tar.gz

[root@jenkins jenkins]# ll
total 40
-rw-r--r--  1 jenkins jenkins 1660 Oct 21 00:11 config.xml
-rw-r--r--  1 jenkins jenkins  156 Oct 21 00:10 hudson.model.UpdateCenter.xml
-rw-r--r--  1 jenkins jenkins  370 Oct 21 00:22 hudson.plugins.git.GitTool.xml
-rw-------  1 jenkins jenkins 1680 Oct 21 00:22 identity.key.enc
-rw-r--r--  1 jenkins jenkins  171 Oct 21 00:10 jenkins.telemetry.Correlator.xml
drwxr-xr-x  2 jenkins jenkins    6 Oct 21 00:10 jobs
drwxr-xr-x  2 jenkins jenkins   32 Oct 21 00:22 logs
-rw-r--r--  1 jenkins jenkins 1037 Oct 21 00:10 nodeMonitors.xml
drwxr-xr-x 93 jenkins jenkins 8192 Oct 21 00:22 plugins
-rw-r--r--  1 jenkins jenkins   64 Oct 21 00:10 secret.key
-rw-r--r--  1 jenkins jenkins    0 Oct 21 00:10 secret.key.not-so-secret
drwx------  2 jenkins jenkins  164 Oct 21 00:22 secrets
drwxr-xr-x  2 jenkins jenkins  149 Oct 21 00:22 updates
drwxr-xr-x  2 jenkins jenkins   24 Oct 21 00:10 userContent
drwxr-xr-x  3 jenkins jenkins   56 Oct 21 00:10 users
[root@jenkins jenkins]# cd plugins/
[root@jenkins plugins]# ls
ant
antisamy-markup-formatter
antisamy-markup-formatter.jpi
ant.jpi
apache-httpcomponents-client-4-api
apache-httpcomponents-client-4-api.jpi
asm-api
asm-api.jpi
bootstrap5-api
bootstrap5-api.jpi
bouncycastle-api
bouncycastle-api.jpi
branch-api
branch-api.jpi
build-timeout
build-timeout.jpi
caffeine-api
caffeine-api.jpi
checks-api
checks-api.jpi
cloudbees-folder
cloudbees-folder.jpi
commons-lang3-api
commons-lang3-api.jpi
commons-text-api
commons-text-api.jpi
credentials
credentials-binding
credentials-binding.jpi
credentials.jpi
dark-theme
dark-theme.jpi
display-url-api
display-url-api.jpi
durable-task
durable-task.jpi
echarts-api
echarts-api.jpi
eddsa-api
eddsa-api.jpi
email-ext
email-ext.jpi
font-awesome-api
font-awesome-api.jpi
git
git-client
git-client.jpi
github
github-api
github-api.jpi
github-branch-source
github-branch-source.jpi
github.jpi
git.jpi
gradle
gradle.jpi
gson-api
gson-api.jpi
instance-identity
instance-identity.jpi
ionicons-api
ionicons-api.jpi
jackson2-api
jackson2-api.jpi
jakarta-activation-api
jakarta-activation-api.jpi
jakarta-mail-api
jakarta-mail-api.jpi
javax-activation-api
javax-activation-api.jpi
javax-mail-api
javax-mail-api.jpi
jaxb
jaxb.jpi
jjwt-api
jjwt-api.jpi
joda-time-api
joda-time-api.jpi
jquery3-api
jquery3-api.jpi
json-api
json-api.jpi
json-path-api
json-path-api.jpi
junit
junit.jpi
ldap
ldap.jpi
localization-support
localization-support.jpi
localization-zh-cn
localization-zh-cn.jpi
mailer
mailer.jpi
matrix-auth
matrix-auth.jpi
matrix-project
matrix-project.jpi
metrics
metrics.jpi
mina-sshd-api-common
mina-sshd-api-common.jpi
mina-sshd-api-core
mina-sshd-api-core.jpi
okhttp-api
okhttp-api.jpi
pam-auth
pam-auth.jpi
pipeline-build-step
pipeline-build-step.jpi
pipeline-github-lib
pipeline-github-lib.jpi
pipeline-graph-analysis
pipeline-graph-analysis.jpi
pipeline-graph-view
pipeline-graph-view.jpi
pipeline-groovy-lib
pipeline-groovy-lib.jpi
pipeline-input-step
pipeline-input-step.jpi
pipeline-milestone-step
pipeline-milestone-step.jpi
pipeline-model-api
pipeline-model-api.jpi
pipeline-model-definition
pipeline-model-definition.jpi
pipeline-model-extensions
pipeline-model-extensions.jpi
pipeline-stage-step
pipeline-stage-step.jpi
pipeline-stage-tags-metadata
pipeline-stage-tags-metadata.jpi
plain-credentials
plain-credentials.jpi
plugin-util-api
plugin-util-api.jpi
resource-disposer
resource-disposer.jpi
scm-api
scm-api.jpi
script-security
script-security.jpi
snakeyaml-api
snakeyaml-api.jpi
ssh-credentials
ssh-credentials.jpi
ssh-slaves
ssh-slaves.jpi
structs
structs.jpi
theme-manager
theme-manager.jpi
timestamper
timestamper.jpi
token-macro
token-macro.jpi
trilead-api
trilead-api.jpi
variant
variant.jpi
workflow-aggregator
workflow-aggregator.jpi
workflow-api
workflow-api.jpi
workflow-basic-steps
workflow-basic-steps.jpi
workflow-cps
workflow-cps.jpi
workflow-durable-task-step
workflow-durable-task-step.jpi
workflow-job
workflow-job.jpi
workflow-multibranch
workflow-multibranch.jpi
workflow-scm-step
workflow-scm-step.jpi
workflow-step-api
workflow-step-api.jpi
workflow-support
workflow-support.jpi
ws-cleanup
ws-cleanup.jpi
[root@jenkins plugins]# systemctl restart jenkins.service 

 

#重新查看原始密码
[root@jenkins ~]# cat /var/lib/jenkins/secrets/initialAdminPassword

b5bbf53ae2144ee38ba12d566f9dad99.png

0b0803aba1104127bbbe30d6b961b403.png

8971d7d63bb14d2d89b8e0ceb2e55c07.png

注意:建议修改admin的密码,在admin的设置中修改即可

6.3 jenkins 与gitlab的整合


c16441e52f8f4378888202bdf023c11a.png

cb6a7752f35f444681225e15c031cebb.png

a5a6abe724bc4d2f8e0061b472b6183a.png

这个错误的原因是因为本机没有gitlab上的sshkey

[root@jenkins ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa
Your public key has been saved in /root/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:n6I0byHIA5uD0FeBBnmAqDRMfFIDIO+o4dOEAirh0bI root@jenkins.com
The key's randomart image is:
+---[RSA 3072]----+
|O+=* ...         |
|+Bo.= .          |
|=+=+ .           |
|*+B .            |
|BE.B .  S        |
|*.* + . .. .     |
|.o o .o...o      |
|  .  . +..       |
|      ...        |
+----[SHA256]-----+


[root@jenkins ~]# cat /root/.ssh/id_rsa.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC6q/G++x0OECdUy7Rb88iVbw4y+kgRw/IU97kjfDz2rl145wA93XfTCda/ixdfx7t6ATKeCZIQ9PbxnLUVNTLywmcTyONQ9Ljz97GFQcTzNURPCjderYehACPrmq/ALN6+1xqOBcwpQrkkdVaSKErrWb2B5vL6U0nwap0VVWU3SRw8G8Xi7youiyG9MiKPk29dLhC1h/BywE5k/LQdfxkKgqejPJuVebQLJzrc3aTdUPA35f5JRhJ1ZG/uM4hwZHCMywRHI6kRny+pAR7qlzuefA8l3el7VzWzr7fFq1dMHa5u9nt3QX7/bly0/evNV/Rbv+MCsyXlUDMQKc4wX9AnGIoEmBs4uO+F2sxGcJWCF1RC0t7kPU+GSlf6pvm4jGPpgh013hiMKR/5AfkV80zaf3KlSfRw3Ly8QuuyqfrsOQQTcBsAsrM+D8hVXQUoyCfImUspAbhOcHs/pMsTaFuUtgQAwvHt8UmsplbNdS9vugkY2wmuAO/rHwaBmiGC6ps= root@jenkins.com
 

把此密钥添加到gitlab上即可

添加密钥凭据

329d8b6d7ebf4a77862a1c437e7a2ff2.png

941a9b26fe044e09a615510f80a27229.png

添加完成后报错依然存在,因为ssh首次连接主机是需要签名认证,需要手动输入yes

还有两太主机之间一定要做好解析

[root@jenkins ~]# vim /etc/ssh/ssh_config
Host *
    StrictHostKeyChecking no

814a6da2c6e947c9a94b1b9707a99ac4.png

2ea786cd8bdd44a4b3ee7d053833f6a3.png

3bd0cbaa0e424ee594404b03c2098029.png

 

b502758ffd4c4df98146a81d3ba88a5c.png

f4201f77f41d4e638b96703ba781bfd3.png

a6f051d56c0a48cc9ffee39ca65b79cf.png

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值