Linux云计算 |【第二阶段】AUTOMATION-DAY2

news2024/11/15 11:07:34

主要内容:

部署GitLab、配置管理GitLab、CI/CD概述、Jenkins概述、部署Jenkins(初始化、拷贝插件)

一、GitLab概述

GitLab 是一个基于 Web 的 Git 仓库管理工具,它提供了一个集成的开发环境和代码管理平台。GitLab 不仅支持 Git 仓库的管理,还提供了项目管理、持续集成和持续交付(CI/CD)、代码审查、问题跟踪等一系列功能,旨在帮助团队更高效地协作开发软件。

1、GitLab 的主要功能

  1. 代码仓库管理:GitLab 提供了与 GitHub 类似的代码仓库管理功能,支持创建、克隆、推送和拉取代码仓库。
  2. 项目管理:GitLab 提供了看板、里程碑、任务和子任务等功能,帮助团队进行项目规划和任务管理。
  3. 持续集成和持续交付(CI/CD):GitLab CI/CD 是一个内置的自动化工具,可以自动构建、测试和部署代码。
  4. 代码审查:GitLab 支持通过合并请求(Merge Requests)进行代码审查,团队成员可以评论、讨论和批准代码变更。
  5. 问题跟踪: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.html
 404.html            contact.html   index.html   work.html
 about.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)

持续集成 是指开发人员频繁地将代码变更合并到共享的主分支中,并通过自动化构建和测试来验证这些变更。其主要目标是尽早发现和解决集成问题,减少后期集成的风险。

  1. 代码提交:开发人员将代码变更提交到版本控制系统(如 Git)。
  2. 自动化构建:CI 服务器检测到代码变更后,自动触发构建过程,将代码编译成可执行文件或库。
  3. 自动化测试:构建完成后,CI 服务器运行一系列自动化测试(单元测试、集成测试等),验证代码的正确性和稳定性。
  4. 反馈:测试结果和构建状态会立即反馈给开发团队,以便及时修复问题。

2)持续交付(CD)

持续交付 是在持续集成的基础上,进一步自动化软件的发布过程,使其可以随时交付到生产环境。持续交付的目标是确保软件始终处于可发布状态,减少发布风险。

  1. 自动化部署:在通过 CI 验证的代码基础上,自动化地将软件部署到预生产环境或测试环境。
  2. 手动验证:在预生产环境中进行手动验证和测试,确保软件满足发布标准。
  3. 发布决策:根据验证结果和业务需求,决定是否将软件发布到生产环境。

3)持续部署(CD)

持续部署 是持续交付的进一步延伸,它自动化了整个发布过程,包括将软件自动部署到生产环境。持续部署的目标是实现零停机发布,提高交付速度和频率。

  1. 自动化部署:在通过 CI 验证的代码基础上,自动化地将软件部署到生产环境。
  2. 自动验证:在生产环境中进行自动化的健康检查和监控,确保软件正常运行。
  3. 自动回滚:如果发现问题,自动化系统会自动回滚到之前的稳定版本。

CI/CD 的核心思想是通过自动化和频繁的集成、测试和部署,减少人为错误,提高软件质量和交付速度。它要求开发团队采用敏捷开发方法,频繁地进行代码变更和集成,并通过自动化工具和流程来支持这一过程。CI/CD 是现代软件开发和 DevOps 实践的重要组成部分。

流程图:CI / CD就是一个流程(通常形象地表述为管道)用于实现应用开发中的高度持续自动化和持续监控。

CI/CD相关工具集:

部署一个CI系统需要的最低要求:

  • ① 一个可获取的源代码的仓库(GitLab)
  • ② 一个包含构建脚本的项目(Jenkins)

三、Jenkins概述

Jenkins 是一个开源的自动化服务器,广泛用于持续集成(CI)和持续交付(CD)。它由 Kohsuke Kawaguchi 创建,最初名为 Hudson,后来由于与 Oracle 的商标争议而更名为 Jenkins。Jenkins 通过插件系统提供了丰富的扩展功能,使其能够支持各种构建、测试和部署任务。

主要特点:

  1. 开源和社区支持:Jenkins 是一个开源项目,拥有庞大的用户社区和贡献者群体,提供了丰富的文档和支持资源。

  2. 插件生态系统:Jenkins 通过插件系统提供了广泛的扩展能力,支持与各种工具和技术的集成,如版本控制系统(如 Git、SVN)、构建工具(如 Maven、Gradle)、测试框架(如 JUnit、Selenium)等。

  3. 分布式构建:Jenkins 支持分布式构建,可以在多台机器上并行执行构建任务,提高构建效率。

  4. 易于配置和管理:Jenkins 提供了直观的 Web 界面,用于配置和管理构建作业、查看构建历史和结果、设置权限和安全性等。

  5. 跨平台支持:Jenkins 可以在多种操作系统上运行,包括 Windows、Linux 和 macOS。

工作原理:

  1. 主从架构:Jenkins 采用主从架构,主节点(Master)负责管理和调度构建任务,从节点(Slave)负责实际执行构建任务。主节点和从节点可以通过网络进行通信。

  2. 构建作业:Jenkins 中的构建作业(Job)定义了具体的构建流程,包括代码检出、构建、测试和部署等步骤。构建作业可以通过 Jenkins 的 Web 界面进行配置。

  3. 触发构建:构建作业可以通过多种方式触发,如代码提交、定时任务、外部系统调用等。

  4. 构建执行:触发后,Jenkins 会根据构建作业的配置,自动执行代码检出、构建、测试和部署等步骤。构建过程中产生的日志和结果会记录在 Jenkins 中,供用户查看和分析。

  5. 通知和报告:Jenkins 可以配置通知机制,如邮件、即时消息等,及时通知相关人员构建结果。此外,Jenkins 还支持生成各种报告,如测试覆盖率报告、静态代码分析报告等。

应用场景:

  1. 持续集成:Jenkins 可以自动化构建和测试流程,确保开发人员频繁地集成代码变更,并及时发现和解决问题。

  2. 持续交付:Jenkins 可以自动化软件的发布过程,确保软件始终处于可发布状态,减少发布风险。

  3. 持续部署:Jenkins 可以自动化将软件部署到生产环境,实现零停机发布,提高交付速度和频率。

  4. 自动化测试:Jenkins 可以集成各种测试框架和工具,自动化执行单元测试、集成测试、性能测试等,提高测试效率和质量。

  5. 监控和报告:Jenkins 可以生成各种监控和报告,帮助团队了解软件质量和构建状态,及时发现和解决问题。

参考:Jenkins的主要作用_knjesc-CSDN博客


1)安装Jenkins所需其它软件

  • ① git 版本控制软件(Jenkins需要连接GitLab下载列表)
  • ② postfix 邮件服务器软件(可以发送邮件)
  • ③ mailx 邮件客户端软件(可以接收邮件)
  • ④ Java JDK(Jenkins基于Java开发,需要JDK环境;)

2)浏览器访问:http://服务器IP:8080 //由JAVA开发,默认端口为8080,与Tomcat服务相同

  1. Jenkins默认会把GitLab仓库代码下载目录:/var/lib/jenkins/workspace/
  2. 存放密码文件:/var/lib/Jenkins/secrets//initialAdminPassword
  3. 存放插件目录:/var/lib/jenkins/plugins/
  4. 配置文件:/etc/sysconfig/jenkins
  5. 日志文件:/var/log/jenkins/jenkins.log

案例:部署Jenkins

整体思路:准备实验环境、部署Jenkins、初始化Jenkins、管理Jenkins插件、调整系统配置;

环境准备:

  1. 5台RHEL8虚拟机,主机名分别为 develop、gitlab、jenkins、web1 和 web2。
  2. develop 主机的IP地址为:192.168.4.10;
  3. gitlab 主机的IP地址为:192.168.4.20;
  4. jenkins 主机的IP地址为:192.168.4.30;
  5. web1 和 web2 主机的IP地址分别为:192.168.4.100、192.168.4.200;
  6. 所有主机都需要配置可用的系统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:毕竟两个人的智慧大于一个人的智慧,如果你不理解本章节的内容或需要相关笔记、视频,可私信小安,请不要害羞和回避,可以向他人请教,花点时间直到你真正的理解

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1946434.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深入探讨:如何在Shopee平台上安全运营多个店铺?

在Shopee平台上&#xff0c;卖家如何避免店铺被关联&#xff1f;这是一个关乎账号安全和业务持续性的重要问题。Shopee严格规定每个卖家只能拥有一个店铺&#xff0c;以维护市场竞争公平和购物体验的稳定性。如果你开了多个店铺被平台判定关联&#xff0c;会面临冻结或封禁的风…

AI数字人+城市交通大数据可视化平台,让交通管理与服务更简便、更智能

如今&#xff0c;AI数字人作为科技革命和产业革命的重要驱动力&#xff0c;AI数字人接入城市交通大数据可视化平台&#xff0c;可以有效地将各硬件与业务系统进行深度融合&#xff0c;完成业务闭环。依托AI数字人的应用&#xff0c;使城市交通大数据可视化平台的使用复杂度大幅…

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第三篇 嵌入式Linux驱动开发篇-第五十章 Linux设备树

i.MX8MM处理器采用了先进的14LPCFinFET工艺&#xff0c;提供更快的速度和更高的电源效率;四核Cortex-A53&#xff0c;单核Cortex-M4&#xff0c;多达五个内核 &#xff0c;主频高达1.8GHz&#xff0c;2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…

【Gin】架构的精妙编织:Gin框架中组合模式的革新实践与技术深度解析(下)

【Gin】架构的精妙编织&#xff1a;Gin框架中组合模式的革新实践与技术深度解析(下) 大家好 我是寸铁&#x1f44a; 【Gin】架构的精妙编织&#xff1a;Gin框架中组合模式的革新实践与技术深度解析(下)✨ 喜欢的小伙伴可以点点关注 &#x1f49d; 前言 本次文章分为上下两部分…

Typora 【最新1.8.6】版本安装下载教程 (轻量级 Markdown 编辑器),图文步骤详解,免费领取(软件可激活使用)

文章目录 软件介绍软件下载安装步骤激活步骤 软件介绍 Typora 是一款专为 Markdown 爱好者设计的文本编辑器&#xff0c;它结合了简洁的界面设计与强大的 Markdown 渲染能力&#xff0c;为用户提供了一个流畅、高效的写作环境。以下是对 Typora 更详细的介绍&#xff1a; 核心特…

[k8s源码]8.deltaFIFO

deltaFIFO DeltaFIFO: 这是一个特殊类型的队列&#xff0c;它结合了FIFO&#xff08;先进先出&#xff09;队列的特性和增量&#xff08;Delta&#xff09;处理的能力。DeltaFIFO 中是按顺序存储的&#xff0c;但它们不必严格按照发生的顺序逐个处理。这种设计提供了处理的灵…

iPhone 17系列取消17 Plus版本?新一代苹果手机迎来新变革

随着科技的飞速发展&#xff0c;苹果公司再次准备刷新我们的期待&#xff0c;即将推出的iPhone 17系列携带着一系列令人兴奋的升级。今年&#xff0c;苹果打破了常规&#xff0c;将四款新机型带入市场——iPhone 17、17 Pro、17 Pro Max&#xff0c;以及一款全新的成员&#xf…

QT串口和数据库通信

创建串口 串口连接客户端并向服务器发送消息 client.pro #------------------------------------------------- # # Project created by QtCreator 2024-07-02T14:11:20 # #-------------------------------------------------QT core gui network QT core gui…

Music Tag Editor Pro for Mac:强大的音频标签管理工具

Music Tag Editor Pro for Mac是一款专为Mac系统设计的音频标签管理工具&#xff0c;其简易直观的操作界面和强大的功能深受用户喜爱。 这款软件的核心功能在于它能够批量编辑各类音频文件的标签。无论是修改元数据、重命名文件&#xff0c;还是转换音乐标签的文本编码&#x…

(十三)Spring教程——依赖注入之工厂方法注入

1.工厂方法注入 工厂方法是在应用中被经常使用的设计模式&#xff0c;它也是控制反转和单例设计思想的主要实现方法。由于Spring IoC容器以框架的方式提供工厂方法的功能&#xff0c;并以透明的方式开放给开发者&#xff0c;所以很少需要手工编写基于工厂方法的类。正是因为工厂…

参加可观测性Observability Foundation认证培训,您有哪些收益?

一、可观测性认证培训的内容 作为SRE&#xff08;站点可靠性工程&#xff09;课程体系的最新发展&#xff0c;可观测性&#xff08;Observability&#xff09;认证课程介绍了一系列结合应用程序生命周期和复杂体系架构中推进可观测性的核心概念和实践。为关注全栈可观测性&…

Hyper-V 安装 CentOS 8.5

前言 Hyper-V安装文档:在 Windows 10 上安装 Hyper-VCentOS 系统下载:CentOS 国内镜像源 8.5.2111作者:易墨发布时间:2023.10.01原文地址:https://www.cnblogs.com/morang/p/devops-hyperv-centos-install.html使用命令安装 以管理员身份运行 PowerShell 命令: Enable-…

【React】全面解析:从基础知识到高级应用,掌握现代Web开发利器

文章目录 一、React 的基础知识1. 什么是 React&#xff1f;2. React 的基本概念3. 基本示例 二、React 的进阶概念1. 状态&#xff08;State&#xff09;和属性&#xff08;Props&#xff09;2. 生命周期方法&#xff08;Lifecycle Methods&#xff09;3. 钩子&#xff08;Hoo…

pikauchu之Unsafe Fileupload(不安全的文件上传)

Client check&#xff08;客户检查&#xff09; 第一步先新建一个一句话木马 <?php eval($_POST[1]);?> 然后上传文件 有限制&#xff0c;只能上传那几种类型 现在看看源代码 我们将一句话木马文件的后缀改为png 然后用burp抓包&#xff0c;将png改成php 就能上传成功 …

Android中Service学习记录

目录 一 概述二 生命周期2.1 启动服务startService()2.2 绑定服务bindService()2.3 先启动后绑定2.4 先绑定后启动 三 使用3.1 本地服务&#xff08;启动式&#xff09;3.2 可通信的服务&#xff08;绑定式&#xff09;3.3 前台服务3.4 IntentService 总结参考 一 概述 Servic…

无人机之起飞前准备

一、检查无人机状态 1、确保无人机的电池充满电或有足够的电量&#xff1b; 2、检查螺旋桨是否安装牢固&#xff0c;没有损坏&#xff1b; 3、确认无人机的固件是最新版本&#xff0c;以保证拥有最新的功能和修正。 二、选择合适的起飞地点 1、避免在人群密集或有障碍物的…

husky引发git commit报错的解决方案

在git commit的时候&#xff0c;有可能会遇到这样的报错&#xff0c;husky - pre-commit hook exited with code 1 (error) 出现这个问题的原因主要是&#xff0c;假如项目中采用 husky和lint-staged结合进行代码校验&#xff0c;那么&#xff0c;只要项目代码中有不规范的地方…

新手学习python 安装Anaconda

PyCharm选择社区版就够用了&#xff0c;专业版本太多花哨的东西没必要&#xff0c;环境可以用Anaconda&#xff0c;单纯的python环境需要下载很多包 一&#xff1a;安装Anaconda 下载打包坏境 Anaconda 地址 https://www.anaconda.com/&#xff0c;我本地是安装在D:\ProgramD…

CTF ssti零基础(一) 模块注入的payload

这里先推荐一个还不错的工具 git clone https://github.com/vladko312/SSTImap.gitcd SSTImappip install requirements.txt命令还是挺多的 有点像sqlmap但是这个暴力多了不用加那么多的参数 ./sstimap.py -u http://example.com ./sstimap.py -u http://example.com --os-sh…

Word 导入导出

在实际的开发过程中&#xff0c;也会遇到导入导出的功能&#xff0c;今天就简单的做一下总结。 1.需求&#xff1a;将下面word 数据导入到数据库并进行存储 在Controller中 RequestMapping(value "/ImportWord")public RawResponseBodyObject ImportWord(HttpServl…