Jenkins从配置到实践

Jenkins从配置到实践

1 持续集成 Continuous integration(CI)

1.1 什么是持续集成?

持续集成Continuous integration(CI)是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽快地发现集成错误。许多团队发现这个过程可以大大减少集成的问题,让团队能够更快的开发内聚的软件。

image-20220818115226144

1.2 持续集成的原则

  • 需要版本控制工具来保障团队成员提交的代码不会导致集成失败。常用的版本控制工具有svn、git等。
  • 开发人员需要及时向版本控制库中提交代码,也需要经常性地从版本控制库中更新代码到本地。
  • 需要有专门的集成服务器来执行集成构建。

​ 根据项目的实际情况,集成构建可以通过代码仓库中代码的变动(如push事件、merge事件等)来自动触发构建,也可以定时启动构建,如每半小时构建一次。

  • 必须保证构建的成功。

​ 如果构建失败,则修复构建过程中的错误将是优先级最高的工作。一旦修复,需手动启动一次构建。

  • 一个自动构建过程,包括自动编译、分发、部署和测试等。
  • 一个代码仓库,即需要版本控制工具来保障代码的可维护性,同时作为构建过程的素材库。
  • 一个持续集成服务器。

2 Jenkins介绍

2.1 Jenkins简介

Jenkins,原名 Hudson,2011 年改为现在的名字。它是一个开源的实现持续集成的软件工具。

Jenkins只是一个平台,真正运作的都是插件。这就是Jenkins流行的原因,因为Jenkins什么插件都有。

Jenkins官网:https://www.jenkins.io/

2.2 Jenkins自动化部署实现原理

image-20220818115255514

3 Jenkins部署环境

基本环境

  • JDK:Jenkins是Java语言开发的,因需要JDK环境。
  • Git/SVN:因一般代码是放在Git/SVN服务器上的,我们需要拉取代码。
  • Maven:因一般Java程序是由Maven工程,需要Maven打包。

服务器准备

应用名称 IP地址 子网掩码 网关 备注
Jenkins 192.168.3.3 255.255.255.0 192.168.3.1 1核CPU 1G内存 20G磁盘
Gitlab 192.168.3.6 255.255.255.0 192.168.3.1 4核CPU 6G内存 20G磁盘
Tomcat 192.168.3.8 255.255.255.0 192.168.3.1 1核CPU 1G内存 20G磁盘

说明:操作系统使用Centons7。

静态ip地址设置

# 在CentOS 7上配置静态ip
1.以root用户登录,修改网络配置
[root@jenkins ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO="static" #是否自动获取,static是静态地址
ONBOOT=yes         #开机加载
IPADDR="192.168.3.3"
NETMASK="255.255.255.0"
GATEWAY="192.168.3.1"

2.配置 DNS
[root@jenkins ~]# vi /etc/resolv.conf
nameserver 192.168.3.1
nameserver 114.114.114.114
nameserver 8.8.8.8

3.重启网卡,使静态ip的配置文件生效
[root@jenkins ~]# service  network restart

注:若克隆的Linux虚拟机,则通过“编辑虚拟机设置 -> 网络适配器 -> 高级”重新生成克隆的机器MAC地址。

# 在ubuntu 22.04上配置静态ip
1.以root用户登录,修改网络配置
[root@jenkins ~]# sudo vim /etc/netplan/01-network-manager-all.yaml
# Let NetworkManager manage all devices on this system
network:
  ethernets:
      ens33:
        dhcp4: no
        dhcp6: no
        addresses:
            - 192.168.3.8/24
        routes:
            - to: default
              via: 192.168.3.1
        nameservers:
            addresses:
                - 114.114.114.114
                - 8.8.8.8
  version: 2
  renderer: NetworkManager
  
3.使静态ip的配置文件生效
[root@jenkins ~]# sudo netplan apply

主机名修改

1.主机名修改
[root@jenkins ~]# vi /etc/hosts
192.168.3.3 jenkins

2.重启Linux
[root@jenkins ~]# shutdown -r now

用户及用户组创建

在Linux系统下创建appop用户及appop组;使用root用户登录,执行以下命令:
# 创建appop组
[root@jenkins ~]# groupadd appop

# 创建appop用户
[root@jenkins ~]# useradd appop -g appop

# 设置appop用户密码
[root@jenkins ~]# passwd appop
更改用户 appop 的密码 。
新的 密码:
问题描述:普通用户输入一些系统命令后出现:不在sudoers文件中,此事将被报告。这是因为当前操作用户的权限不够。
[appop@jenkins ~]$ sudo su -

我们信任您已经从系统管理员那里了解了日常注意事项。
总结起来无外乎这三点:

    #1) 尊重别人的隐私。
    #2) 输入前要先考虑(后果和风险)。
    #3) 权力越大,责任越大。

[sudo] appop 的密码:
appop 不在 sudoers 文件中。此事将被报告。

问题解决:
1.输入命令“ll -h  /etc/sudoers”,查看/etc/sudoers文件权限,如果只读权限,修改为可写权限。
[root@jenkins ~]# ll -h  /etc/sudoers
-r--r-----. 1 root root 4.3K 930 2020 /etc/sudoers

2.输入修改权限命令:"chmod u+w /etc/sudoers"
[root@jenkins ~]# chmod u+w /etc/sudoers
[root@jenkins ~]# ll -h  /etc/sudoers
-rw-r-----. 1 root root 4.3K 930 2020 /etc/sudoers

3.输入编辑命令“vi /etc/sudoers”,在文件中找到root  ALL=(ALL) ALL这一行,在该行下以同样的参数添加提升权限的用户信息。
[root@jenkins ~]# vi /etc/sudoers
## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
appop   ALL=(ALL)       ALL

4.返回到命令页面,输入回复权限的命令:
[root@jenkins ~]# chmod 440 /etc/sudoers

5.输入命令:"sudo su -",切换到root用户。
[appop@jenkins ~]$ sudo su -
[sudo] appop 的密码:
上一次登录:三 817 12:43:43 CST 2022192.168.3.173pts/1 上
[root@jenkins ~]# 

输入系统操作命令,发现普通用户已有了权限提升,问题解决。

3.1 GitLab

GitLab官方网站:https://about.gitlab.com/

3.1.1 安装需求

GitLab安装需求说明:https://docs.gitlab.cn/jh/install/requirements.html

CPU

推荐的最低 CPU 硬件要求:

  • 4 核 是推荐的最小核数,支持多达 500 名用户
  • 8 核支持多达 1000 名用户

内存

推荐的最低内存硬件要求:

  • 4GB RAM必需的最小内存,支持多达 500 名用户
  • 8GB RAM 支持多达 1000 名用户

注:通常建议服务器上至少有 2GB 的 swap 存储空间,即使您已有足够可用的 RAM。

3.1.2安装方式
方式一:在ssh下安装GitLab

GitLab官方安装文档:https://gitlab.cn/install/?version=ce

安装依赖

[appop@gitlab ~]$ sudo yum install -y curl policycoreutils-python openssh-server perl
[appop@gitlab ~]$ sudo systemctl enable sshd
[appop@gitlab ~]$ sudo systemctl start sshd

配置镜像

[appop@gitlab ~]$ sudo curl -fsSL https://packages.gitlab.cn/repository/raw/scripts/setup.sh | /bin/bash

开始安装

[appop@gitlab ~]$ sudo EXTERNAL_URL="http://192.168.3.9" yum install -y gitlab-jh

除非您在安装过程中指定了自定义密码,否则将随机生成一个密码并存储在 /etc/gitlab/initial_root_password 文件中(出于安全原因,24 小时后,此文件会被第一次 gitlab-ctl reconfigure 自动删除,因此若使用随机密码登录,建议安装成功初始登录成功之后,立即修改初始密码)。使用此密码和用户名 root 登录。

方式二:使用Docker安装GitLab

GitLab官方安装文档:https://docs.gitlab.cn/jh/install/docker.html

注:系统内核至少在3.10以上 uname -r 命令可查看系统内核版本

安装docker

1.卸载旧的版本
[appop@tomcat ~]$ sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
                  
2.需要的安装包
[appop@tomcat ~]$ sudo yum install -y yum-utils

3.设置镜像的仓库
# 默认是国外的,很慢!!!
[appop@tomcat ~]$ sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
# 推荐使用阿里云的,十分快    
[appop@tomcat ~]$ sudo yum-config-manager \
    --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo  

    
4.更新yum软件包索引
[appop@tomcat ~]$ sudo yum makecache fast

5.安装docker相关引擎、docker-ce社区版、docker-ee企业版
[appop@tomcat ~]$ sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin

6.启动docker
[appop@tomcat ~]$ sudo systemctl start docker

7.配置开机启动项:
[appop@tomcat ~]$ sudo systemctl enable docker

8.使用docker version查看是否安装成功
[appop@tomcat ~]$ docker version

9.配置镜像加速器
修改daemon配置文件/etc/docker/daemon.json来使用加速器
[appop@tomcat ~]$ sudo mkdir -p /etc/docker
[appop@tomcat ~]$ sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://gw5py7zq.mirror.aliyuncs.com"]
}
EOF

注:阿里云镜像加速器地址获取链接 https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

10.重启服务
[appop@tomcat ~]$ sudo systemctl daemon-reload

11.重启docker
[appop@tomcat ~]$ sudo systemctl restart docker

12.hello-world
[appop@tomcat ~]$ sudo docker run hello-world

使用 Docker Engine 安装极狐GitLab

1.添加容器
[appop@gitlab ~]$ sudo docker run --detach \
  --hostname 192.168.3.6 \
  --publish 443:443 --publish 80:80 \
  --name gitlab \
  --restart always \
  --volume $GITLAB_HOME/config:/etc/gitlab:Z \
  --volume $GITLAB_HOME/logs:/var/log/gitlab:Z \
  --volume $GITLAB_HOME/data:/var/opt/gitlab:Z \
  --shm-size 256m \
  registry.gitlab.cn/omnibus/gitlab-jh:latest

2.查看已存在的容器
[appop@gitlab ~]$ sudo docker ps

3.关闭容器
[appop@gitlab ~]$ sudo docker stop gitlab

4.启动容器
[appop@gitlab ~]$ sudo docker start gitlab

打开浏览器,访问:http://192.168.3.6

image-20220817131424838

- 当首次运行出现502错误的时候,排查两个原因:
1.内存至少需要4g,建议6g以上
2.稍微等待几分钟后,再刷新一下可能就好了

登录极狐GitLab

image-20220817131714932

查看root用户密码:

1.进入容器
[appop@gitlab ~]$ sudo docker exec -it  gitlab /bin/bash

2.查看root用户密码
root@192:/# 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: emhRJuC33vCea41OmIojD+ZZ7nWT8DxNS68oXCrT0wc=

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

# 注:密码存在/etc/gitlab/initial_root_password文件中,登录后需修改密码,不然24小时后会失效。

在极狐GitLab登录页面上,输入用户名和密码,单击登录,登录至极狐GitLab。

image-20220817132625479

修改GitLab帐户密码

单击个人中心 >> 编辑个人资料 >> 密码,更改administrator密码。

image-20220817133344545

3.1.3 GitLab常用命令
gitlab-ctl start                  # 启动所有 gitlab 组件
gitlab-ctl stop                   # 停止所有 gitlab 组件
gitlab-ctl restart                # 重启所有 gitlab 组件
gitlab-ctl status                 # 查看服务状态
gitlab-ctl reconfigure            # 启动服务
vi /etc/gitlab/gitlab.rb          # 修改默认的配置文件
gitlab-ctl tail                   # 查看日志
3.1.4 GitLab仓库创建

登录到GitLab。

image-20220819115819721

点击新建项目,进入创建新项目界面。

image-20220819115857488

点击创建空白项目,填写相关信息。

image-20220819115952589

3.1.5 IDEA集成GitLab
  • 在IDEA的Settings >> Plugins中,检查GitLab插件是否安装。

image-20220819103431065

  • 打开IDEA菜单栏:VCS >> Create Git Repository。

image-20220819103923360

Create Git Repository弹出框,项目目录最好不要改变。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MHUbAtfb-1661161953769)(https://gitee.com/chenjingwei1618/my-project/raw/master/img/202208192305005.png)]

点击Ok后,项目目录下多了一个.git隐藏文件夹。

image-20220819104459402

这个时候选中项目右键,多出一个git菜单。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vfqh3m3X-1661161953770)(https://gitee.com/chenjingwei1618/my-project/raw/master/img/202208192305786.png)]

  • 执行git >> Add操作,图标由红色变成绿色。

image-20220819104735226

image-20220819104812195

  • 执行git >> commit操作。

image-20220819104948347

image-20220819105059339

commit后,图标由绿色变成黑色。

image-20220819105250384

  • 执行git >> push操作。

image-20220819110307202

第一次push需要配置:

image-20220819110501012</

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Ant Apache HttpComponents Client 4.x API Plugin Bootstrap 4 API Plugin Bootstrap 5 API bouncycastle API Branch API Build Timeout Caffeine API Plugin Checks API plugin Command Agent Launcher Plugin Conditional BuildStep Credentials Credentials Binding Plugin Display URL API Durable Task Plugin ECharts API Email Extension Plugin Folders Plugin Font Awesome API Plugin Git Git client GIT server Plugin Gitee Plugin GitHub API GitHub Branch Source GitHub plugin GitLab Plugin Gradle Plugin Infrastructure plugin for Publish Over X Jackson 2 API Java JSON Web Token (JJWT) Plugin Javadoc Plugin JavaScript GUI Lib: ACE Editor bundle plugin JavaScript GUI Lib: Handlebars bundle plugin JavaScript GUI Lib: Moment.js bundle plugin JQuery3 API Plugin JSch dependency plugin JUnit LDAP Plugin Localization Support Plugin Localization: Chinese (Simplified) Lockable Resources plugin Mailer Plugin Matrix Authorization Strategy Plugin Matrix Project Plugin Maven Integration OkHttp Plugin Oracle Java SE Development Kit Installer Plugin OWASP Markup Formatter Plugin PAM Authentication plugin Parameterized Trigger plugin Pipeline Pipeline Graph Analysis Plugin Pipeline: API Pipeline: Basic Steps Pipeline: Build Step Pipeline: Declarative Pipeline: Declarative Extension Points API Pipeline: GitHub Groovy Libraries Pipeline: Groovy Pipeline: Input Step Pipeline: Job Pipeline: Milestone Step Pipeline: Model API Pipeline: Multibranch Pipeline: Nodes and Processes Pipeline: REST API Plugin Pipeline: SCM Step Pipeline: Shared Groovy Libraries Pipeline: Stage Step Pipeline: Stage Tags Metadata Pipeline: Stage View Plugin Pipeline: Step API Pipeline: Supporting APIs Plain Credentials Plugin Plugin Utilities API Popper.js 2 API Popper.js API Plugin Publish Over SSH Resource Disposer Plugin Run Condition Plugin SCM API Plugin Script Security Plugin Snakeyaml API Plugin SSH Build Agents plugin SSH Credentials Plugin SSH plugin SSH server Structs Plugin Timestamper Token Macro Plugin Trilead API Plugin
### 回答1: "Jenkins持续集成从入门到精通PDF"这本书是一本涵盖了Jenkins持续集成全方位内容的工具书,适合想要从入门到精通Jenkins自动化构建工具的人士,是Jenkins学习的绝佳指南。 该书首先介绍了Jenkins的概念、架构和安装方法,然后深入讲解了Jenkins的管道和插件的使用,以及如何将Jenkins与其他工具集成。书中还详细介绍了如何构建、测试和部署Web项目,并提供了许多实际案例,帮助读者更好地了解如何使用Jenkins。 此外,该书还深入讲解了Jenkins的扩展和自动化的最佳实践,以及如何优化Jenkins的性能和安全性。该书包含大量的示例代码和实用建议,让读者更快地掌握Jenkins的使用技巧。 总之,"Jenkins持续集成从入门到精通PDF"是一本全面详细的Jenkins学习指南,涵盖了Jenkins的方方面面,可以帮助读者快速掌握Jenkins的基本概念和使用技巧,进而精通Jenkins。建议想深入学习Jenkins的人可以阅读此书,可以为您的职业发展打好基础。 ### 回答2: Jenkins是一个开源的持续集成工具,它可以帮助我们实现自动化的构建和测试,以及自动部署到测试环境和生产环境。而《Jenkins持续集成从入门到精通》这本书则是针对Jenkins的全面介绍和指南。 该书首先介绍了Jenkins的基本概念和架构,包括如何安装、配置和使用Jenkins,如何创建和管理作业,以及各种插件和扩展的使用方法。随后,该书详细讲解了如何使用Jenkins实现持续集成和持续交付,包括如何自动化构建、测试和部署代码,以及如何管理和监控持续集成过程。 《Jenkins持续集成从入门到精通》还专门介绍了一些常用的应用场景和最佳实践,如如何使用Jenkins进行Java项目的持续集成、如何结合Docker实现自动化部署等等。此外,该书还介绍了Jenkins与其他工具的集成,如如何与Git和SVN进行代码管理、如何与Selenium进行自动化测试等等。 总之,《Jenkins持续集成从入门到精通》这本书对于想要深入了解Jenkins及其应用的开发者和运维人员来说,是一个非常实用的指南。通过该书的学习,读者可以了解Jenkins的基本概念和使用方法,掌握Jenkins实现持续集成和持续交付的方法,以及将Jenkins与其他工具集成的技巧。同时,《Jenkins持续集成从入门到精通》还强调了一些实践经验和最佳实践,能够帮助读者在实际工作中更加高效地使用Jenkins

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值