主要内容:
部署GitLab、配置管理GitLab、CI/CD概述、Jenkins概述、部署Jenkins(初始化、拷贝插件)
一、GitLab概述
GitLab 是一个基于 Web 的 Git 仓库管理工具,它提供了一个集成的开发环境和代码管理平台。GitLab 不仅支持 Git 仓库的管理,还提供了项目管理、持续集成和持续交付(CI/CD)、代码审查、问题跟踪等一系列功能,旨在帮助团队更高效地协作开发软件。
1、GitLab 的主要功能
- 代码仓库管理:GitLab 提供了与 GitHub 类似的代码仓库管理功能,支持创建、克隆、推送和拉取代码仓库。
- 项目管理:GitLab 提供了看板、里程碑、任务和子任务等功能,帮助团队进行项目规划和任务管理。
- 持续集成和持续交付(CI/CD):GitLab CI/CD 是一个内置的自动化工具,可以自动构建、测试和部署代码。
- 代码审查:GitLab 支持通过合并请求(Merge Requests)进行代码审查,团队成员可以评论、讨论和批准代码变更。
- 问题跟踪:GitLab 提供了问题跟踪系统,可以创建、分配和跟踪问题,帮助团队更好地管理项目进度。
2、GitLab 和 GitHub 的区别
都是流行的代码托管和协作平台,但在功能、架构和使用体验上有一些区别:
1. 功能和集成
GitLab:
- GitLab 提供了一个更全面的开发平台,集成了代码仓库管理、项目管理、CI/CD、代码审查、问题跟踪等一系列功能。
- GitLab CI/CD 是内置的,可以直接在 GitLab 平台上配置和运行自动化构建、测试和部署流程。
- GitLab 提供了更多的自定义选项和插件支持,适合需要高度定制化的团队。
GitHub:
- GitHub 主要专注于代码托管和协作,提供了基本的代码仓库管理、问题跟踪和拉取请求(Pull Requests)功能。
- GitHub Actions 是 GitHub 的 CI/CD 工具,但它是作为一个独立的服务提供的,需要额外配置和集成。
- GitHub 的用户界面更为简洁,适合初学者和中小型团队。
2. 私有仓库
GitLab:
- GitLab 提供了免费的私有仓库,用户可以创建不限数量的私有项目,并且可以邀请任意数量的协作者。
GitHub:
- GitHub 在 2019 年之前,私有仓库是收费的,之后改为免费,但私有仓库的协作者数量有限制(通常是 3 个)。
3. 社区和支持
GitLab:
- GitLab 有一个活跃的社区,但相对于 GitHub,其社区规模较小。
- GitLab 提供了企业版和付费支持选项,适合需要专业支持的大型企业。
GitHub:
- GitHub 拥有全球最大的开发者社区,有大量的开源项目和活跃的社区讨论。
- GitHub 也提供企业版和付费支持,但其社区支持更为强大。
4. 自托管选项
GitLab:
- GitLab 提供了自托管选项,用户可以在自己的服务器上安装和运行 GitLab,这对于需要更多控制和安全性的企业非常有吸引力。
GitHub:
- GitHub 主要是一个云服务,虽然也有 GitHub Enterprise Server 提供自托管选项,但相对较少使用。
5. 用户体验和界面
GitLab:
- GitLab 的用户界面相对复杂,提供了更多的功能和选项,适合需要高度定制化的团队。
GitHub:
- GitHub 的用户界面更为简洁和直观,适合初学者和中小型团队。
案例1:部署GitLab
整体思路:准备环境(容器环境)、安装GitLab
环境要求:
- 1)准备两台RHEL8虚拟机,主机名分别为 develop 和 gitlab ;
- 2)develop(客户端):IP地址为:192.168.4.10
- 3)gitlab(服务器):IP地址为:192.168.4.20
- 4)给 develop 和 git 两台主机配置可用的YUM源;
备注:跨网段走路由,相同网段不需要配置网关就可以互联互通!
注意:由于GitLab容器镜像运行占用大量内存,所以需要将主机内存空间提至少3G;
步骤1:环境准备(Git主机,192.168.4.20)
1)设置防火墙信任所有,设置SELinux放行所有(所有主机都要操作)
[root@gitlab ~]# firewall-cmd --set-default-zone=trusted
[root@gitlab ~]# setenforce 0
[root@gitlab ~]# sed -i '/SELINUX/s/enforcing/permissive/' /etc/selinux/config
2)修改sshd默认端口
补充:因为Git是通过SSH协议形式访问,后面需要启动GitLab容器,该容器需要占用22端口,而主机的sshd服务也占用22端口(端口冲突),所以需要提前将GitLab主机的sshd默认端口修改为2022;
[root@gitlab ~]# vim /etc/ssh/sshd_config //修改SSH配置文件
Port 2022 //将默认端口22修改为2022
或者sed方式:
[root@gitlab ~]# sed -i '/#Port/s/#Port 22/Port 2022/' /etc/ssh/sshd_config
[root@gitlab ~]# systemctl restart sshd //重启服务
[root@localhost ~]# ssh -p 2022 192.168.2.20 // 真机测试
3)准备容器环境(参考:/linux-soft/2/gitlab_zh.tar容器镜像)
[root@localhost 2]# scp -P 2022 gitlab_zh.tar root@192.168.4.20:/root
gitlab_zh.tar 100% 1648MB 84.2MB/s 00:19
补充:scp远程拷贝基于SSH协议访问,由于端口已修改,则需要使用-P指定端口
[root@gitlab ~]# ls
anaconda-ks.cfg gitlab_zh.tar[root@gitlab ~]# dnf -y install podman //安装podman软件包
[root@gitlab ~]# podman load < ./gitlab_zh.tar //导入gitlab容器镜像
[root@gitlab ~]# podman images //查看镜像
REPOSITORY TAG IMAGE ID CREATED SIZE
localhost/gitlab_zh latest 1f71f185271a 3 years ago 1.73 GB
4)创建数据目录
补充:容器无法持久保存数据,需要将真机目录和容器目录绑定,实现数据永久保存
[root@gitlab ~]# mkdir -p /srv/gitlab/{config,logs,data} //配置文件、日志、数据
[root@gitlab ~]# ls /srv/gitlab/
config data logs
步骤2:启动GitLab容器
1)启动容器(GitLab已被封装成为容器镜像,运行容器即可运行GitLab)
[root@gitlab ~]# touch /etc/resolv.conf //检查是否有resolv.conf,没有该文件启动容器时则报错
[root@gitlab ~]# podman run -d -h gitlab --name gitlab -p 443:443 -p 80:80 -p 22:22 --restart always -v /srv/gitlab/config:/etc/gitlab -v /srv/gitlab/logs:/var/log/gitlab -v /srv/gitlab/data:/var/opt/gitlab gitlab_zh
78bb2e2fb6481be2b4b7e2ef3ffe1c0e09a08b1625fe7b7f94125c8f1af10aa6
[root@gitlab ~]# podman ps //查看当前运行的容器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
78bb2e2fb648 localhost/gitlab_zh:latest /assets/wrapper 7 minutes ago Up 7 minutes ago 0.0.0.0:22->22/tcp gitlab
选项解释:
- [-d] 将容器放入后台启动。
- [-h] 设置容器的主机名为gitlab。
- [--name] 设置容器名称为gitlab。
- [-p] 进行端口映射,将git主机的443、80、22端口和git上面运行的容器端口绑定;
- [-v] 将git主机上面的目录和容器里面的目录绑定,例如:git主机的/srv/gitlab/config目录对应容器里面的/etc/gitlab/目录。
- [--restart always] 设置当服务挂掉自行重启
- gitlab_zh是镜像名称。(不用【<】导入镜像,也可用[-i]选项,指定导入容器)
常见报错:启动Podman时,未有/etc/resolv.conf文件会导致报错
[root@gitlab ~]# podman run -d -h gitlab --name gitlab -p 443:443 -p 80:80 -p 22:22 --restart always -v /srv/gitlab/config:/etc/gitlab -v /srv/gitlab/logs:/var/log/gitlab -v /srv/gitlab/data:/var/opt/gitlab gitlab_zh
Error: error creating resolv.conf for container bc035a10d7a42be9739ad2afe6811f6d98162eea57dc4d057af38fd2ce124cad: lstat /etc/resolv.conf: no such file or directory
2)配置systemd,实现容器开机自启动
生成service文件,-n是容器的名称,给gitlab容器生成service文件
[root@gitlab ~]# podman generate systemd -n gitlab --files
设置开机自启动
[root@gitlab ~]# systemctl enable container-gitlab.service
3)初始化登录密码(真机使用浏览器访问GitLab页面)
- 测试浏览器访问:http://192.168.4.20
- GitLab默认用户名为:root,第一次访问需要设置密码(密码设置8位数,否则500报错)
正常登录后,如图所示:
报错:500,服务器内部错误(建议删除容器重新创建并检查配置是否错误)
报错:502,网关启动失败(可能服务未完全启动,待启动成功)
参考:GitLab安装、使用教程(Docker版)
https://www.imooc.com/article/23168
案例2;配置GitLab
整体思路:创建GitLab用户和组、创建GitLab项目、客户端管理GitLab项目、上传代码
步骤1:创建用户和组
1)创建用户,点击GitLab页面导航栏的小扳手图标【管理区域】,进行用户创建
创建用户并填写相关账号信息,第一步先创建,再首页点击【编辑】设置用户的密码
2)创建组,点击GitLab页面导航栏的小扳手图标【管理区域】,进行组创建
设置组名称(组名称为devops)以及可见等级(等级为公开)
3)将用户加入到组,并设置用户权限为主程序员(将用户加入devops组)
步骤2:创建GitLab项目
1)创建Project项目
2)设置项目路径(组名称devops)、项目仓库名称(仓库myproject)、可见等级(公开)
步骤3:管理GitLab项目(Develop主机,192.168.4.10操作)
1)客户端使用密码管理GitLab项目
[root@develop ~]# git config --global user.name "tom"
[root@develop ~]# git config --global user.email "tom@qq.com"
[root@develop ~]# cat .gitconfig //用户标记信息
[user]
email = tom@qq.com
name = tom[root@develop ~]# git clone http://192.168.4.20/devops/myproject.git
# 解释:克隆devops组下的仓库myproject(.git类似后缀,可忽略)
[root@develop ~]# cd myproject/
[root@develop myproject]# ls -a
. .. .git[root@develop myproject]# touch README.md
[root@develop myproject]# git add README.md
[root@develop myproject]# git commit -m "Add README"
[root@develop myproject]# git push -u origin master
Username for 'http://192.168.4.20': tom //输入账户
Password for 'http://tom@192.168.4.20': //输入密码
补充:私有仓库克隆下载仓库和上传数据都需要密码,公有仓库克隆下载仓库不需要密码,但上传数据时需要输入用户名密码;
2)客户端生成SSH密钥
[root@develop myproject]# ssh-keygen //生成ssh密钥文件
[root@develop myproject]# cat ~/.ssh/id_rsa.pub //查看密钥文件
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC+tlX+Uofq2xqw2XJeVoU2tkMADfI1/UMxg/ME50pgajuKKCqOdfr2+dDyEiVNJJNnknZdA9CdwfxPFk6xWYQHWjvzSDYR5Bk6Dmv/snliOulrWrCYMkpjZjPFZf36gBw3Ryc8MTdLIB+1NHzIy41Tr1n+LBsMUfZQE8zsnptxXHffKwmPbiH9LtCzS5pzMhXxfi6HmnrKx+g3Tvc+WPoB2FMUjR/Z5VwI8aULa0xlgJDR+LF9p5PS4lArrZeasGg9qS9FFT+CWte42oRgLCz7jc+Y+v469AKU9hebndxvbPUPKvNv1icI8AIIt/Y1UKE+R6FjhxMcatwDzSYZ7s7gu6Gu2XvhQ9ZqRGViZspQhKccP0TnsuYwa1s3V7mWIqB6tjA9AsGbsXM7fGJsZDb2fhcL1kl5bjF04//i+wClzoXbQNhtihzrIYp7gV0h5heiSVY9ww9Q3HukW//XiJJj/KwNPJUDEXiveNwvycoClMJz5VjGMBSJyUf/uirMO0twD8= root@develop
3)使用Tom用户登录GitLab页面,上传密钥
第一次登录页面需要重置一次密码,密码可以与旧密码相同
4)将192.168.4.10创建的密钥文件内容上传到GitLab
点击右上角账户图标,点【设置】,点击【SSH密钥】,将develop主机生成的密钥文件/root/.ssh/id_rsa.pub内容复制到GitLab上面;(不能重复上传)
5)使用密钥管理GitLab项目
首先查看项目基于SSH连接方式的链接
[root@develop myproject]# git remote -v //查看对应远程仓库服务器
origin http://192.168.4.20/devops/myproject.git (fetch)
origin http://192.168.4.20/devops/myproject.git (push)
[root@develop myproject]# git remote remove origin //删除远程仓库服务器关联
[root@develop myproject]# git remote -v //再次查看,未有对应关联[root@develop myproject]# git remote add origin git@192.168.4.20:devops/Myproject.git //通过git方式添加关联远程服务器(注意服务器IP)
[root@develop myproject]# git remote -v
origin git@gitlab:devops/Myproject.git (fetch)
origin git@gitlab:devops/Myproject.git (push)[root@develop myproject]# echo 'hello word' >> README.md
[root@develop myproject]# git add .
[root@develop myproject]# git commit -m "modify readme"
[root@develop myproject]# git push -u origin master //直接推送,无需输入密码
补充:在未有Clone远程仓库到本地时,则需要对本地存放仓库的目录进行git init初始化一个空仓库.git(工作区)才能进行git remote add操作;当已Clone并进行remove删除对应远程服务器关联时,只是删除关联并未删除本地仓库.git(工作区),所以可以进行git remote add操作;
注意:通过Clone方式或remote add方式,必须输入完整服务器IP
注意:创建的普通用户权限为【主程序员】,否则Push操作会报错权限不足;
常见报错:clone的远程仓库服务器,无法已http://gitlab/进行域名识别
[root@develop ~]# git clone http://gitlab/devops/myproject.git
Cloning into 'myproject'...
fatal: unable to access 'http://gitlab/devops/myproject.git/': Could not resolve host: gitlab
常见报错:push远程仓库服务器,无法已gib://gitlab/进行域名识别
[root@develop myproject]# git push -u origin master
ssh: Could not resolve hostname gitlab: Name or service not known
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
常见报错:推送时,用户权限不足报错;
解决办法:修改普通用户权限为【主程序员】
remote: GitLab: You are not allowed to push code to protected branches on this project.
To 192.168.4.20:devops/myproject.git! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'git@192.168.4.20:devops/myproject.git'
如图所示:
6)上传静态页面代码(参考素材lnmp_soft.tar.gz中www_template.zip)
[root@develop ~]# dnf -y install unzip //安装zip解压包工具
[root@develop ~]# cd lnmp_soft/
[root@develop lnmp_soft]# unzip www_template.zip
[root@develop lnmp_soft]# cp -r www_template/* ~/myproject/ //拷贝到仓库目录
[root@develop lnmp_soft]# cd ~/myproject/
[root@develop myproject]# ls
'#U8bf4#U660e.txt' blog.html images single.html404.html contact.html index.html work.htmlabout.html css js[root@develop myproject]# git add .
[root@develop myproject]# git commit -m "web site"
[root@develop myproject]# git push -u origin master
[root@develop myproject]# git tag v1 //设置版本标签
[root@develop myproject]# git push -u origin v1 //将版本标签V1推到服务器
Total 0 (delta 0), reused 0 (delta 0)
To 192.168.4.20:devops/myproject.git* [new tag] v1 -> v1
[root@develop myproject]# git reflog //查看版本日志可查看到tag标签
如图所示:
补充:通过 git tag --help 帮助查看
命令:git tag -d //删除本地标签
测试:通过浏览器访问http://192.168.4.20/devops/myproject 网页,可查看【项目存储库】,从本地仓库.git推送上的文件,如图所示:
二、CI / CD概念
CI/CD 是持续集成(Continuous Integration)和持续交付(Continuous Delivery)/持续部署(Continuous Deployment)的缩写。它是一种软件开发实践,旨在通过自动化流程来提高软件开发和交付的效率和质量。
1)持续集成(CI)
持续集成 是指开发人员频繁地将代码变更合并到共享的主分支中,并通过自动化构建和测试来验证这些变更。其主要目标是尽早发现和解决集成问题,减少后期集成的风险。
- 代码提交:开发人员将代码变更提交到版本控制系统(如 Git)。
- 自动化构建:CI 服务器检测到代码变更后,自动触发构建过程,将代码编译成可执行文件或库。
- 自动化测试:构建完成后,CI 服务器运行一系列自动化测试(单元测试、集成测试等),验证代码的正确性和稳定性。
- 反馈:测试结果和构建状态会立即反馈给开发团队,以便及时修复问题。
2)持续交付(CD)
持续交付 是在持续集成的基础上,进一步自动化软件的发布过程,使其可以随时交付到生产环境。持续交付的目标是确保软件始终处于可发布状态,减少发布风险。
- 自动化部署:在通过 CI 验证的代码基础上,自动化地将软件部署到预生产环境或测试环境。
- 手动验证:在预生产环境中进行手动验证和测试,确保软件满足发布标准。
- 发布决策:根据验证结果和业务需求,决定是否将软件发布到生产环境。
3)持续部署(CD)
持续部署 是持续交付的进一步延伸,它自动化了整个发布过程,包括将软件自动部署到生产环境。持续部署的目标是实现零停机发布,提高交付速度和频率。
- 自动化部署:在通过 CI 验证的代码基础上,自动化地将软件部署到生产环境。
- 自动验证:在生产环境中进行自动化的健康检查和监控,确保软件正常运行。
- 自动回滚:如果发现问题,自动化系统会自动回滚到之前的稳定版本。
CI/CD 的核心思想是通过自动化和频繁的集成、测试和部署,减少人为错误,提高软件质量和交付速度。它要求开发团队采用敏捷开发方法,频繁地进行代码变更和集成,并通过自动化工具和流程来支持这一过程。CI/CD 是现代软件开发和 DevOps 实践的重要组成部分。
流程图:CI / CD就是一个流程(通常形象地表述为管道)用于实现应用开发中的高度持续自动化和持续监控。
CI/CD相关工具集:
部署一个CI系统需要的最低要求:
- ① 一个可获取的源代码的仓库(GitLab)
- ② 一个包含构建脚本的项目(Jenkins)
三、Jenkins概述
Jenkins 是一个开源的自动化服务器,广泛用于持续集成(CI)和持续交付(CD)。它由 Kohsuke Kawaguchi 创建,最初名为 Hudson,后来由于与 Oracle 的商标争议而更名为 Jenkins。Jenkins 通过插件系统提供了丰富的扩展功能,使其能够支持各种构建、测试和部署任务。
主要特点:
开源和社区支持:Jenkins 是一个开源项目,拥有庞大的用户社区和贡献者群体,提供了丰富的文档和支持资源。
插件生态系统:Jenkins 通过插件系统提供了广泛的扩展能力,支持与各种工具和技术的集成,如版本控制系统(如 Git、SVN)、构建工具(如 Maven、Gradle)、测试框架(如 JUnit、Selenium)等。
分布式构建:Jenkins 支持分布式构建,可以在多台机器上并行执行构建任务,提高构建效率。
易于配置和管理:Jenkins 提供了直观的 Web 界面,用于配置和管理构建作业、查看构建历史和结果、设置权限和安全性等。
跨平台支持:Jenkins 可以在多种操作系统上运行,包括 Windows、Linux 和 macOS。
工作原理:
主从架构:Jenkins 采用主从架构,主节点(Master)负责管理和调度构建任务,从节点(Slave)负责实际执行构建任务。主节点和从节点可以通过网络进行通信。
构建作业:Jenkins 中的构建作业(Job)定义了具体的构建流程,包括代码检出、构建、测试和部署等步骤。构建作业可以通过 Jenkins 的 Web 界面进行配置。
触发构建:构建作业可以通过多种方式触发,如代码提交、定时任务、外部系统调用等。
构建执行:触发后,Jenkins 会根据构建作业的配置,自动执行代码检出、构建、测试和部署等步骤。构建过程中产生的日志和结果会记录在 Jenkins 中,供用户查看和分析。
通知和报告:Jenkins 可以配置通知机制,如邮件、即时消息等,及时通知相关人员构建结果。此外,Jenkins 还支持生成各种报告,如测试覆盖率报告、静态代码分析报告等。
应用场景:
持续集成:Jenkins 可以自动化构建和测试流程,确保开发人员频繁地集成代码变更,并及时发现和解决问题。
持续交付:Jenkins 可以自动化软件的发布过程,确保软件始终处于可发布状态,减少发布风险。
持续部署:Jenkins 可以自动化将软件部署到生产环境,实现零停机发布,提高交付速度和频率。
自动化测试:Jenkins 可以集成各种测试框架和工具,自动化执行单元测试、集成测试、性能测试等,提高测试效率和质量。
监控和报告:Jenkins 可以生成各种监控和报告,帮助团队了解软件质量和构建状态,及时发现和解决问题。
参考:Jenkins的主要作用_knjesc-CSDN博客
1)安装Jenkins所需其它软件
- ① git 版本控制软件(Jenkins需要连接GitLab下载列表)
- ② postfix 邮件服务器软件(可以发送邮件)
- ③ mailx 邮件客户端软件(可以接收邮件)
- ④ Java JDK(Jenkins基于Java开发,需要JDK环境;)
2)浏览器访问:http://服务器IP:8080 //由JAVA开发,默认端口为8080,与Tomcat服务相同
- Jenkins默认会把GitLab仓库代码下载目录:/var/lib/jenkins/workspace/
- 存放密码文件:/var/lib/Jenkins/secrets//initialAdminPassword
- 存放插件目录:/var/lib/jenkins/plugins/
- 配置文件:/etc/sysconfig/jenkins
- 日志文件:/var/log/jenkins/jenkins.log
案例:部署Jenkins
整体思路:准备实验环境、部署Jenkins、初始化Jenkins、管理Jenkins插件、调整系统配置;
环境准备:
- 5台RHEL8虚拟机,主机名分别为 develop、gitlab、jenkins、web1 和 web2。
- develop 主机的IP地址为:192.168.4.10;
- gitlab 主机的IP地址为:192.168.4.20;
- jenkins 主机的IP地址为:192.168.4.30;
- web1 和 web2 主机的IP地址分别为:192.168.4.100、192.168.4.200;
- 所有主机都需要配置可用的系统YUM源,设置防火墙信任所有,SELinux放行所有。
备注:跨网段走路由,相同网段不需要配置网关就可以互联互通!
步骤1:环境准备
1)设置防火墙和SELinux(仅以一台主机为例,其他主机都需要操作)
[root@jenkins ~]# firewall-cmd --set-default-zone=trusted
[root@jenkins ~]# setenforce 0
[root@jenkins ~]# sed -i '/SELINUX/s/enforcing/permissive/' /etc/selinux/config
2)安装依赖软件:git、postfix、java JDK(Jenkins主机,192.168.4.30操作)
[root@jenkins ~]# dnf -y install java-11-openjdk //openjdk(Java JDK工具)
[root@jenkins ~]# dnf -y install git //Git(版本控制软件)
[root@jenkins ~]# dnf -y install postfix //postfix(邮件服务器软件)
[root@jenkins ~]# dnf -y install mailx //mailx(邮件客户端软件)
步骤2:部署、初始化Jenkins
1)安装、启动Jenkins(参考素材lnmp_soft.tar.gz中的jenkins软件包、插件包)
[root@localhost 2]# scp jenkins* 192.168.4.30:/root/
jenkins-2.263.1-1.1.noarch.rpm 100% 64MB 64.2MB/s 00:00
jenkins_plugins.tar.gz 100% 18MB 127.1MB/s 00:00 [root@jenkins ~]# ls
anaconda-ks.cfg jenkins-2.263.1-1.1.noarch.rpm jenkins_plugins.tar.gz
[root@jenkins ~]# dnf -y install ./jenkins-2.263.1-1.1.noarch.rpm //安装Jenkins
[root@jenkins ~]# systemctl start jenkins //启动Jenkins服务
[root@jenkins ~]# netstat -nlptu | grep :8080 //因JAVA开发软件,默认端口8080
tcp6 0 0 :::8080 :::* LISTEN 5299/java
[root@jenkins ~]# systemctl enable jenkins --now //设置jenkins服务为开机自启动服务,并立刻启动该服务
补充:jenkins-2.263.1-1.1.noarch.rpm为软件包,jenkins_plugins.tar.gz为插件包
2)初始化Jenkins
使用带GUI的终端上的浏览器访问 Jenkins:http://192.168.4.30
第一次访问会提示初始密码的位置:在/var/lib/Jenkins/secrets/initialAdminPassword日志文件中;
[root@jenkins ~]# cat /var/lib/jenkins/secrets/initialAdminPassword
24a45370161247c3ad60c22cdf6daf3e
初始化时选择不安装插件,直接跳过操作;
使用默认的admin用户登录,完成初始化操作;
开始使用Jenkins。
步骤3:管理Jenkins插件、系统配置
1)设置密码,因初始密码太长不方便记忆,建议重置管理员admin的密码
使用新密码重新登录(密码123456)
2)插件管理,打开【Manage Jenkins】,找到【Manage Plugins】
3)将真机素材jenkins_plugins.tar.gz插件包拷贝到Jenkins主机
补充:拷贝插件文件到Jenkins插件目录(插件包含:中文插件、Git插件等)
Jenkins插件目录为插件目录:/var/lib/jenkins/plugins/
[root@jenkins ~]# tar -xf jenkins_plugins.tar.gz
[root@jenkins ~]# ls
anaconda-ks.cfg jenkins-2.263.1-1.1.noarch.rpm jenkins_plugins jenkins_plugins.tar.gz[root@jenkins ~]# id jenkins //安装软件后默认生成jenkins用户
uid=994(jenkins) gid=991(jenkins) groups=991(jenkins)
[root@jenkins ~]# cp -rp jenkins_plugins/* /var/lib/jenkins/plugins/ //权限方式拷贝,使得Jenkins用户有对文件目录的操作权限
[root@jenkins ~]# ls -ll /var/lib/jenkins/plugins/
total 18120
drwxr-xr-x. 4 jenkins jenkins 56 Apr 21 14:33 command-launcher
-rw-r--r--. 1 jenkins jenkins 38820 Dec 9 22:34 command-launcher.jpi
...
[root@jenkins ~]# systemctl restart jenkins.service //重启Jenkins服务
4)重新登录Jenkins网页控制台,再次查看插件列表【已安装】、查看中英文翻译
5)调整系统设置,配置并测试邮箱
[root@jenkins ~]# systemctl start postfix.service //开启邮箱服务
通过发送测试邮件测试配置,测试结果为 Email was successfully sent
6)mail测试收邮件
[root@jenkins ~]# mail
Heirloom Mail version 12.5 7/5/10. Type ? for help.
"/var/spool/mail/root": 1 message 1 new
>N 1 nobody@nowhere Wed Apr 21 14:59 18/643 "Test email #2"
&
补充:Jenkins忘记密码等操作,需要还原,尝试以下方式:
yum -y reinstall --force ./jenkins-2.263.1-1.1.noarch.rpm
扩展:Git 家族
Git 是一个分布式版本控制系统,由 Linus Torvalds 在 2005 年创建。随着时间的推移,Git 生态系统发展出了许多相关的工具和平台,形成了 Git 家族。以下是一些主要的 Git 家族成员:
1. Git 核心
- Git:Git 本身是一个命令行工具,用于版本控制和代码管理。它是整个 Git 生态系统的核心。
2. 代码托管平台
- GitHub:GitHub 是一个基于 Web 的 Git 仓库托管服务,提供了代码托管、协作和社区功能。
- GitLab:GitLab 是一个开源的 Git 仓库管理平台,提供了代码托管、CI/CD、项目管理和问题跟踪等功能。
- Bitbucket:Bitbucket 是 Atlassian 提供的 Git 和 Mercurial 仓库托管服务,集成了 Jira 和 Confluence 等工具。
3. 图形用户界面(GUI)工具
- GitKraken:GitKraken 是一个跨平台的 Git GUI 客户端,提供了直观的界面和丰富的功能。
- Sourcetree:Sourcetree 是 Atlassian 提供的一个免费的 Git 和 Mercurial 客户端,适用于 Windows 和 macOS。
- GitHub Desktop:GitHub Desktop 是 GitHub 提供的官方 Git GUI 客户端,简化了 Git 操作。
4. 持续集成和持续交付(CI/CD)工具
- GitLab CI/CD:GitLab CI/CD 是 GitLab 内置的自动化工具,可以配置和运行自动化构建、测试和部署流程。
- GitHub Actions:GitHub Actions 是 GitHub 提供的 CI/CD 工具,可以在 GitHub 仓库中配置和运行自动化工作流。
- Jenkins:Jenkins 是一个开源的自动化服务器,支持 Git 和其他版本控制系统,用于构建、测试和部署软件。
5. 命令行工具和插件
- tig:tig 是一个基于文本的 Git 仓库浏览器和 Git 命令行接口。
- hub:hub 是一个命令行工具,扩展了 Git 的功能,使其更容易与 GitHub 交互。
- git-flow:git-flow 是一个 Git 扩展集,帮助管理功能分支和发布流程。
6. 其他相关工具
- Git LFS(Large File Storage):Git LFS 是一个 Git 扩展,用于管理大文件的版本控制。
- GitBook:GitBook 是一个现代的文档平台,使用 Git 和 Markdown 来编写和发布文档。
- Gogs 和 Gitea:Gogs 和 Gitea 是轻量级的自托管 Git 服务,提供了类似 GitHub 的功能。
这些工具和平台共同构成了 Git 家族,为开发者提供了丰富的选择和功能,以满足不同的版本控制和协作需求。
小结:
本篇章节为【第二阶段】AUTOMATION-DAY2 的学习笔记,这篇笔记可以初步了解到 部署GitLab、配置管理GitLab、CI/CD概述、Jenkins概述、部署Jenkins(初始化、拷贝插件)。除此之外推荐参考相关学习网址:
- Jenkins
- Jenkins 系列教程-史上最简单Jenkins教程,教你一天学会使用Jenkins利器_jenkins菜鸟教程-CSDN博客
- Jenkins中文文档_w3cschool
Tip:毕竟两个人的智慧大于一个人的智慧,如果你不理解本章节的内容或需要相关笔记、视频,可私信小安,请不要害羞和回避,可以向他人请教,花点时间直到你真正的理解