目录
一 CICD是什么
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的整合
一 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 - Book
2.2 git 工作流程
Git 有三种状态:已提交(committed)、已修改(modified) 和 已暂存(staged)。
已修改表示修改了文件,但还没保存到数据库中。
已暂存表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中。
已提交表示数据已经安全地保存在本地数据库中。
这会让我们的 Git 项目拥有三个阶段:工作区、暂存区以及 Git 目录。
三 部署git
3.1 安装git
#在rhel9的系统中默认自带git[root@CICD-node1 ~]# dnf install git -y#设定命令补全功能[root@CICD-node1 ~]# echo "source /usr/share/bash-completion/completions/git" >> ~/.bashrc[root@CICD-node1 ~]# source ~/.bashrc
3.2 初始化
获取 Git 仓库通常有两种方式:
将尚未进行版本控制的本地目录转换为 Git 仓库。
从其它服务器克隆 一个已存在的 Git 仓库。比如: git clone
初始化版本库
[root@CICD-node1 ~]# mkdir howe[root@CICD-node1 ~]# cd howe/[root@CICD-node1 howe]# git init hint: Using 'master' as the name for the initial branch. This default branch namehint: is subject to change. To configure the initial branch name to use in allhint: 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' andhint: 'development'. The just-created branch can be renamed via this command:hint: hint: git branch -m <name>Initialized empty Git repository in /root/howe/.git/[root@CICD-node1 howe]# ls -a. .. .git[root@CICD-node1 howe]# ls .git/branches config description HEAD hooks info objects refs#设定用户信息[root@CICD-node1 howe]# git config --global user.name "howe"[root@CICD-node1 howe]# git config --global user.email "howe@exam.com"#查看当前文件状态[root@CICD-node1 howe]# git status On branch masterNo commits yetnothing to commit (create/copy files and use "git add" to track)[root@CICD-node1 howe]# git status -s#简化输出
警告:.git目录是git跟踪管理版本库的,没事别瞎溜达!
四 git的使用方法
4.1 常用方法
[root@CICD-node1 howe]# echo superme > README.md [root@CICD-node1 howe]# git status On branch masterNo commits yetUntracked files: (use "git add <file>..." to include in what will be committed)README.mdnothing added to commit but untracked files present (use "git add" to track)[root@CICD-node1 howe]# git status -s?? README.md#??新建文件未添加到版本库[root@CICD-node1 howe]# git add README.md [root@CICD-node1 howe]# git status -sA README.md#A 已添加到暂存区#提交暂存区的数据[root@CICD-node1 howe]# git commit -m "add README.md"[master (root-commit) 2b36cab] add README.md 1 file changed, 1 insertion(+) create mode 100644 README.md[root@CICD-node1 howe]# git status -s#无任何显示,标识已经提交到版本库#再次修改[root@CICD-node1 howe]# vim README.md [root@CICD-node1 howe]# cat README.md supermesuperme[root@CICD-node1 howe]# git status -s M README.md#_M 右边的M表示文件在工作区被修改#撤销修改[root@CICD-node1 howe]# git checkout -- README.md从索引区更新了 1 个路径[root@CICD-node1 howe]# cat README.md superme#重新修改[root@CICD-node1 howe]# echo howe > README.md [root@CICD-node1 howe]# git add README.md [root@CICD-node1 howe]# git status -sM README.md#M_ 左M表示文件已经在版本库中并被跟踪#从暂存区撤销[root@CICD-node1 howe]# git restore --staged README.md [root@CICD-node1 howe]# git status -s M README.md#重新提交[root@CICD-node1 howe]# git add README.md [root@CICD-node1 howe]# git status -sM README.md#更新[root@CICD-node1 howe]# git commit -m "update v1"[master a6318aa] update v1 1 file changed, 1 insertion(+), 1 deletion(-)[root@CICD-node1 howe]# git status -s#更新文件[root@CICD-node1 howe]# echo hahaha >> README.md [root@CICD-node1 howe]# git add README.md [root@CICD-node1 howe]# echo xixixi >> README.md [root@CICD-node1 howe]# git status -sMM README.md#MM表示有一部分在暂存区,还有一部分没有提交#如果现在提交只能提交在暂存区中的部分[root@CICD-node1 howe]# git commit -m "update v2"[master 3381f25] update v2 1 file changed, 1 insertion(+)[root@CICD-node1 howe]# git status -s M README.md#右M还在 #查看已暂存和未暂存的修改变化[root@CICD-node1 howe]# echo hehehe >> README.md [root@CICD-node1 howe]# git diffdiff --git a/README.md b/README.mdindex 9f19a78..9a1a9d2 100644--- a/README.md+++ b/README.md@@ -1,2 +1,4 @@ howe hahaha+xixixi+hehehe#跳过使用暂存区,只能在提交过的在版本库中存在的文件使用如果文件状态是“??”不能用此方法[root@CICD-node1 howe]# git commit -a -m "update v3"[master 365b7bf] update v3 1 file changed, 1 insertion(+) #撤销工作区中删除动作[root@CICD-node1 howe]# touch lee.txt[root@CICD-node1 howe]# git add lee.txt[root@CICD-node1 howe]# git commit -m "add lee.txt"[master c6189a6] add lee.txt 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 lee.txt [root@CICD-node1 howe]# rm lee.txt rm: remove regular empty file 'lee.txt'? y[root@CICD-node1 howe]# git status -s D lee.txt#右D表示文件在工作区被删除[root@CICD-node1 howe]# git checkout -- lee.txt#恢复被删除文件[root@CICD-node1 howe]# lslee.txt README.md#从版本库中删除文件[root@CICD-node1 howe]# git rm lee.txt rm 'lee.txt'[root@CICD-node1 howe]# git status -sD lee.txt#左D表示文件删除动作被提交到暂存区[root@CICD-node1 howe]# git commit -m "delete lee.txt"[master ed13788] delete lee.txt 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 lee.txt#恢复从版本库中被删除的文件[root@CICD-node1 howe]# git log查看日志[root@CICD-node1 howe]# git reflog ed13788 (HEAD -> master) HEAD@{0}: commit: delete lee.txtc6189a6 HEAD@{1}: commit: add lee.txt365b7bf HEAD@{2}: commit: update v331bea73 HEAD@{3}: commit: update v2fed7d84 HEAD@{4}: commit: add test.txt2590b49 HEAD@{5}: commit: delete file.txt9f79896 HEAD@{6}: commit: add file.txtd9268c2 HEAD@{7}: commit: add howe.txt30766d4 HEAD@{8}: commit: update v33381f25 HEAD@{9}: commit: update v2a6318aa HEAD@{10}: commit: update v12b36cab HEAD@{11}: commit (initial): add README.md#版本回退到删除之前[root@CICD-node1 howe]# git reset --hard c6189a6HEAD is now at c6189a6 add lee.txt[root@CICD-node1 howe]# lslee.txt README.md test.txt
4.2 git对于文件如何忽略
在做软件开发时对源码编译会产生一些临时文件,我们在提交时需要忽略这些临时文件
[root@CICD-node1 howe]# mkdir dir1/[root@CICD-node1 howe]# touch dir1/.file2[root@CICD-node1 howe]# git status -s?? dir1/[root@CICD-node1 howe]# echo .file1 > /gitignore[root@CICD-node1 howe]# git status -s?? .gitignore?? dir1/[root@CICD-node1 howe]# echo ".*" > /gitignore [root@CICD-node1 howe]# git status -s[root@CICD-node1 howe]#
五 gitlab代码仓库
5.1 gitlab简介
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@CICD-node1 ~]# yum install -y curl policycoreutils-python openssh-server perl[root@CICD-node1 ~]# lsgitlab-ce-17.1.6-ce.0.el9.x86_64.rpm[root@CICD-node1 ~]# dnf install gitlab-ce-17.1.6-ce.0.el9.x86_64.rpm -y
5.2.2 配置gitlab
#修改配置文件[root@CICD-node1 ~]# cd /etc/gitlab/[root@CICD-node1 gitlab]# lsgitlab.rb[root@CICD-node1 gitlab]# vim gitlab.rb32 external_url 'http://172.25.250.10'#修改配置文件后需利用gitlab-crt来生效,[root@CICD-node1 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@CICD-node1 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: oeBO3vlL00XzqJSv3RjliicyU0RAyKupuj6boCV1yAk=#密码# NOTE: This file will be automatically deleted in the first reconfigure run after 24 hours.
[!WARNING]
注意:出于安全原因,24 小时后,/etc/gitlab/initial_root_password
会被第一次 gitlab-ctl reconfigure
自动删除,因此若使用随机密码登录,建议安装成功初始登录成功之后,立即修改初始密码。
登陆
设置语言
设置密码
5.3 在gitlab中新建项目
#生成sshd密钥[root@CICD-node1 ~]# ssh-keygen Generating public/private rsa key pair.Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsaYour public key has been saved in /root/.ssh/id_rsa.pubThe key fingerprint is:SHA256:tD/HEFuyQqQtzHrhJSMYoH1Uri+kI47/nnG3nLivhug root@CICD-node1.exam.comThe key's randomart image is:+---[RSA 3072]----+|... ... . ||.. + + + ||. o o X = o . || . = O . * || + o S + || o o o o ||. o.o.o . o o ||o....=.+ o o ||.+Eo+.++= |+----[SHA256]-----+[root@CICD-node1 ~]# cat .ssh/id_rsa.pub ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCPwT7M13rAjGvO9rRXBC6Ux79CwlUb9NKcJZ6Z2t/1nSmT3Wv2akV3n1jF9Ja+AiBPOe8T25D8nlD4GVtieNLIk0oelESkzvjdPjVMajVPmOERvM5y5IK0EAxJnLi2tOp1IQBEXT6MoKdOuljOTAtYQT7rxg3522L1YIoxrTe4CTK1ECu8IHJRIADGjE55mm4+CG+DVt2qJa8QxCfKeLbxq+Us2lXtuTbs1trOQMlzpVE2IwmSwdGsuowchuv25bJwwwPq/R4dQm1xyKLl7epLVhjxaeD9vr1jv1JL1M62u3Wrsk1vkNGutj0oB2Lr82Q9Uhkd7mRTB6Ny7zC3qDBC6DQCNaZ2ohtmqXPPyh5zOmiGkjDLH/e1U/mizjML80SYwlpCvtoVZqE0NZ83HeT1+VEQayypl7NTxyrO50L2piNtymntHheXc2Dn8ke6wHZGCGJNH6uGvIa1REbQonPuc18SEIFdxaE360k4mclacT1mjhxd5bFuClEXN2PFwLM= root@CICD-node1.exam.com
上传公钥到gitlab中
下载项目
[root@CICD-node1 ~]# git clone git@172.25.250.10:/root/superhowe.gitCloning into 'superhowe'...The authenticity of host '172.25.250.10 (172.25.250.10)' can't be established.ED25519 key fingerprint is SHA256:0KxVks073rJRW4wBFxu4/GJQrfD2k8n22qHtN6e7K7c.This host key is known by the following other names/addresses: ~/.ssh/known_hosts:1: 172.25.250.105Are you sure you want to continue connecting (yes/no/[fingerprint])? yesWarning: Permanently added '172.25.250.10' (ED25519) to the list of known hosts.remote: Enumerating objects: 3, done.remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 3 (from 1)Receiving objects: 100% (3/3), done.[root@CICD-node1 ~]# ls -R.:howe ./howe:dir1 lee.txt README.md test.txt./SuperHowe:README.md[root@CICD-node1 ~]# cd superhowe/[root@CICD-node1 superhowe]# lsREADME.md[root@CICD-node1 superhowe]# git remote -vorigingit@172.25.250.10:/root/superhowe.git (fetch)origingit@172.25.250.10:/root/superhowe.git (push)#文件提交[root@CICD-node1 superhowe]# echo welcome > superhowe[root@CICD-node1 superhowe]# git add superhowe[root@CICD-node1 superhowe]# git commit -m "add superhowe"[main 12784d0] add superhowe 1 file changed, 1 insertion(+) create mode 100644 superhowe[root@CICD-node1 superhowe]# git push -u origin mainEnumerating objects: 4, done.Counting objects: 100% (4/4), done.Delta compression using up to 4 threadsCompressing 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 0To 172.25.250.10:/root/superhowe.git a0b2b94..12784d0 main -> mainbranch 'main' set up to track 'origin/main'.
六 jenkins
6.1 jenkins 简介
Jenkins是开源CI&CD软件领导者, 提供超过1000个插件来支持构建、部署、自动化, 满足任何项目的需要。
Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行,也可独立运行
CI(Continuous integration持续集成)持续集成强调开发人员提交了新代码之后,立刻进行构建、(单元)测试。
CD(Continuous Delivery持续交付) 是在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境(类生产环境)中
6.2 部署 jenkins
软件下载:Download and deploy
[WARNING]
jenkins需要部署在新的虚拟机中建议最少4G内存,4核心cpu#安装依赖包[root@jenkins ~]# yum install fontconfig java-17-openjdk git -y#安装jenkins[root@jenkins ~]# lsjenkins-2.462.2-1.1.noarch.rpm[root@jenkins ~]# dnf install jenkins-2.476-1.1.noarch.rpm #启动jenkins[root@jenkins ~]# systemctl enable --now jenkins.service#查看原始密码[root@jenkins ~]# cat /var/lib/jenkins/secrets/initialAdminPassword b9461bbe81854d4d851a4ecd46216749
部署插件
#注意端口为8080[root@jenkins ~]# netstat -lntup | jenkins Caused: java.io.IOException: Failed to bind to 0.0.0.0/0.0.0.0:8080网页访问172.25.250.150:8080
建议修改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): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsaYour public key has been saved in /root/.ssh/id_rsa.pubThe key fingerprint is:SHA256:PnpP1ZB1ZFjPjMTokoXtWp0QwHD8kQj8M0p5XgdrkMg root@jenkins.exam.comThe key's randomart image is:+---[RSA 3072]----+| oo*o*.=o+=|| E.B O+o*.|| o Bo*..+|| o B Oo+ || .S+ O... || .. o. || o . || ..o || .. .. |+----[SHA256]-----+[root@jenkins ~]# cat .ssh/id_rsa.pub ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDGvXaZaxNw3IkX1buNDhOci6jz+3eNixBd2sBP25qr65sK2bdTgR44BYb0lxd7g2UPu6tUwaAqqAlcWPFOw4jQi+jHNA8W4vdowozYIivsHySabGS7kcJSxZIE0KIdDhNmei02/zpoQNoxxOdenkrxP2Gj/syjIXIEn5YaPONl8wji50lBiEbTESkfFmNPt8Rnew+XkqBt9UGPvzoTZj5pknang8Z2CWxjH+G41cXTOgvTPGw9rV9hJdLPzWRJ36qcAcge+HBhCEgwboELDZalXr6QPPykOMbUFu8C/dkDcH/jjmLiCfw/skzu5/QqzV2dNXfdXcQ5Zc+D3kMjRRR6CViU37FoxDzvEYo4U/XdKVLdT4kprGY8yWwyoFZx6Bu8qqYYvmjDpowmQjXH0fJkAXBuVrIz9rNVMAJjAPguFF+cG+Y5rX77hlMQst3tA/VC8S+4eI881IH2VlAylIzdCi17jLYskBzV+5BgkuNkSIYnICRyjS5aDBwpTKnp980= root@jenkins.exam.com
把此密钥添加到gitlab上即可
添加密钥凭据
#查看本机私钥[root@jenkins ~]# cat .ssh/id_rsa-----BEGIN OPENSSH PRIVATE KEY-----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-----END OPENSSH PRIVATE KEY-----
添加完成后报错依然存在,因为ssh首次连接主机是需要签名认证,需要手动输入yes
还有两主机之间要做好解析
[root@jenkins ~]# vim /etc/ssh/ssh_config20 Host *33 StrictHostKeyChecking no