目录
[一 CICD是什么](#一 CICD是什么)
[1.1 持续集成(Continuous Integration)](#1.1 持续集成(Continuous Integration))
[1.2 持续部署(Continuous Deployment)](#1.2 持续部署(Continuous Deployment))
[1.3 持续交付(Continuous Delivery)](#1.3 持续交付(Continuous Delivery))
[二 git工具使用](#二 git工具使用)
[2.1 git简介](#2.1 git简介)
[2.2 git 工作流程](#2.2 git 工作流程)
[三 部署git](#三 部署git)
[3.1 安装git](#3.1 安装git)
[3.2 初始化](#3.2 初始化)
[四 git的使用方法](#四 git的使用方法)
[4.1 常用方法](#4.1 常用方法)
[4.2 git对于文件如何忽略](#4.2 git对于文件如何忽略)
[五 gitlab代码仓库](#五 gitlab代码仓库)
[5.1 gitlab简介](#5.1 gitlab简介)
[5.2 gitlab 的部署实施](#5.2 gitlab 的部署实施)
[5.2.1 部署gitlab](#5.2.1 部署gitlab)
[5.2.2 配置gitlab](#5.2.2 配置gitlab)
[5.2.3 登陆gitlab](#5.2.3 登陆gitlab)
[5.3 在gitlab中新建项目](#5.3 在gitlab中新建项目)
[六 jenkins](#六 jenkins)
[6.1 jenkins 简介](#6.1 jenkins 简介)
[6.2 部署 jenkins](#6.2 部署 jenkins)
[6.3 jenkins 与gitlab的整合](#6.3 jenkins 与gitlab的整合)
一 CICD是什么
CI/CD 是指持续集成(Continuous Integration)和持续部署(Continuous Deployment)或持续交付(Continuous Delivery)
1.1 持续集成(Continuous Integration)
持续集成是一种软件开发实践,团队成员频繁地将他们的工作集成到共享的代码仓库中。其主要特点包括:
- 频繁提交代码:开发人员可以每天多次提交代码,确保代码库始终保持最新状态。
- 自动化构建:每次提交后,自动触发构建过程,包括编译、测试、静态分析等。
- 快速反馈:如果构建失败或测试不通过,能够快速地向开发人员提供反馈,以便及时修复问题。
1.2 持续部署(Continuous Deployment)
持续部署是在持续集成的基础上,将通过所有测试的代码自动部署到生产环境中。其特点如下:
- 自动化流程:从代码提交到生产环境的部署完全自动化,无需人工干预。
- 高频率部署:可以实现频繁的部署,使得新功能能够快速地提供给用户。
- 风险控制:需要有强大的测试和监控体系来确保部署的稳定性和可靠性。
1.3 持续交付(Continuous Delivery)
持续交付与持续部署类似,但不一定自动部署到生产环境,而是随时可以部署。其重点在于确保软件随时处于可发布状态。
CI/CD 的好处包括:
- 提高开发效率:减少手动操作和等待时间,加快开发周期。
- 尽早发现问题:通过频繁的集成和测试,问题能够在早期被发现和解决。
- 降低风险:减少了大规模部署时可能出现的问题,提高了软件的质量和稳定性。
- 增强团队协作:促进团队成员之间的沟通和协作,提高团队的整体效率。
常见的 CI/CD 工具包括 Jenkins、GitLab CI/CD、Travis CI 等。这些工具可以帮助团队实现自动化的构建、测试和部署流程。
二 git工具使用

2.1 git简介
Git 是一个分布式版本控制系统,被广泛用于软件开发中,以管理代码的版本和变更。 主要特点:
- 分布式
每个开发者都有完整的代码仓库副本,这使得开发者可以在离线状态下进行工作,并且在网络出现问题时也不会影响开发。
即使中央服务器出现故障,开发者仍然可以在本地进行开发和查看项目历史。
- 高效的分支管理
Git 中的分支创建和切换非常快速和简单。开发人员可以轻松地创建新的分支来进行新功能的开发或修复 bug,而不会影响主分支。
合并分支也相对容易,可以使用多种合并策略来满足不同的需求。
- 快速的版本回退
如果发现某个版本存在问题,可以快速回退到之前的版本。
可以查看每个版本的详细变更记录,方便了解代码的演进过程。
- 强大的提交管理
每个提交都有一个唯一的标识符,可以方便地引用和查看特定的提交。
提交可以包含详细的提交信息,描述本次提交的更改内容。
- 支持协作开发
开发者可以将自己的更改推送到远程仓库,供其他开发者拉取和合并。
可以处理多个开发者同时对同一文件进行修改的情况,通过合并冲突解决机制来确保代码的完整性。
Git必看秘籍:Git
2.2 git 工作流程

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 \
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 \ 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 \ 已初始化空的 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 "[email protected]" #查看当前文件状态 \[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的使用方法

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 \
..." 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 \ Date: Sun Oct 20 22:39:07 2024 +0800 delete lee.txt commit c623e3833e8aac8fedd1dffc658618b3abdf18c2 Author: timinglee \ Date: Sun Oct 20 22:35:08 2024 +0800 add lee.txt commit 6a4e9021fa6a4a287494fcaf33ff1d5364c21712 Author: timinglee \ Date: Sun Oct 20 22:33:56 2024 +0800 update v3 commit e4bba82b596de1dbb644618c7bf791cffd13c08a Author: timinglee \ Date: Sun Oct 20 22:30:32 2024 +0800 update v2 commit 6852c420818792f2347d642da11b061b4283a8df Author: timinglee \ Date: Sun Oct 20 22:27:45 2024 +0800 update v1 commit e16d40e888e096c3149357abcb3d70154876646a Author: timinglee \ 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简介

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

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.
登陆

设置语言

设置密码

5.3 在gitlab中新建项目




#生成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 [email protected] 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= [email protected]

下载项目
root@gitlab \~\]# git clone [email protected]: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 [email protected]:root/timinglee.git (fetch) origin [email protected]: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 简介

- Jenkins是开源CI&CD软件领导者, 提供超过1000个插件来支持构建、部署、自动化, 满足任何项目的需要。
- Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行,也可独立运行
CI(Continuous integration持续集成)持续集成强调开发人员提交了新代码之后,立刻进行构建、(单元)测试。

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

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端口)



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



注意:建议修改admin的密码,在admin的设置中修改即可
6.3 jenkins 与gitlab的整合



这个错误的原因是因为本机没有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 [email protected] 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= [email protected]
添加密钥凭据


添加完成后报错依然存在,因为ssh首次连接主机是需要签名认证,需要手动输入yes
还有两太主机之间一定要做好解析
root@jenkins \~\]# vim /etc/ssh/ssh_config Host \* StrictHostKeyChecking no





