Jenkins持续集成

一、持续集成架构

  1.  开发者写代码上传gitlab
  2. jenkins帮我们到gitlab里面把最新代码拉取出来(clone),jenkins通过插件可以对拉取的代码完成自动化测试。测试完成后,可以自带把代码(编译,打包....)。创建一个共享目录,把打包的代码共享出去(比如NFS共享或者FTP共享)
  3. web1,web2这样的服务器就可以自动到jenkins共享里面下载代码,让用户访问

二、GitLab安装

官网:https://about.gitlab.com/

GitLab是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务。

GitLab和GitHub一样属于第三方基于Git开发的作品,免费且开源(基于MIT协议),与Github类似,可以注册用户,任意提交你的代码,添加SSHKey等等,不同的是,GitLab是可以部署到自己的服务器上,数据库等一切信息掌握在自己手上,适合团队内部协作开发。你总不可能把团队的智慧总放在别人的服务器上吧?简单来说可把GitLab看作个人版的GitHub。

GitLab安装

  1. 安装相关依赖

Centos/RedHat环境
# yum -y install policycoreutils openssh-server openssh-clients postfix

Ubuntu环境
# apt-get update
# apt-get install -y curl openssh-server openssh-clients ca-certificates tzdata perl postfix

  2. centos/ubuntu启动ssh服务&设置开机启动

# systemctl enable sshd && sudo systemctl start sshd

  3. centos/ubuntu设置postfix开机自启,并启动,postfix支持gitlab发邮件功能

# systemctl enable postfix && systemctl start postfix

  4. 下载gitlab包,并且安装

采用清华大学开源镜像
https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/

Ubuntu环境下载地址,里面有不同版本的deb包可以下载
https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu/pool/focal/main/g/gitlab-ce/
CentOS/RedHat环境下载地址,里面有不同版本的rpm包可以下载
https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/

安装
Ubuntu安装步骤
下载:
# wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu/pool/focal/main/g/gitlab-ce/gitlab-ce_16.0.3-ce.0_amd64.deb
安装:
# dpkg -i gitlab-ce_16.0.3-ce.0_amd64.deb

Centos/RedHat安装
下载:
# wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-16.0.3-ce.0.el7.x86_64.rpm
安装:
rpm -ivh gitlab-ce-16.0.3-ce.0.el7.x86_64.rpm

  5. 修改gitlab配置

# vim /etc/gitlab/gitlab.rb
修改gitlab访问地址和端口,默认为80,我们改为82
external_url "http://192.168.66.100:82"
nginx['listen_port'] = 82

  6. 重载配置及启动gitlab

# gitlab-ctl reconfigure
# gitlab-ctl restart

  启动成功后,看到以下修改管理员root密码的也没,修改密码后,然后登录即可

  以上如果没有让修改root密码,则可以通过如下命令对root密码进行重制

# gitlab-rake "gitlab:password:reset"
Enter username: root
Enter password:
Confirm password:
Password successfully updated for user with username root.

  重制完成后,在通过web页面进行登录。

源代码上传到Gitlab仓库

三、持续集成环境-Jenkins安装

  1. 安装JDK

  Jenkins需要依赖JDK,所以先安装JDK1.8

      centos安装

# yum install java-1.8.0-openjdk* -y

  ubuntu安装

# apt install openjdk-13-jdk

  2.获得jenkins安装包

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

 

 

 

  3.下载成功之后,在opt目录下新建一个Jenkins的目录,将jenkins.war文件上传至此目录下。
sudo mkdir Jenkins
sudo mv jenkins.war /opt/Jenkins/

  4.使用nohup命令启动jenkins.war

nohup java -jar jenkins.war --httpPort=8000 > /dev/null 2>&1 &

  5.在浏览器输入服务器的ip地址+jenkins的端口号即可进入Jenkins

         注意:jenkins的默认工作目录是在安装jenkins用户的家目录下,如果使用不同的用户启动jenkins,jenkins展示的数据(构建的项目)也是不一样的!

   6.这里选择安装推荐的插件,省心一点,不用自己再去瞎折腾。然后就是等待jenkins去下载依赖,时间比较久。

   7.设置登录信息

  8.设置完登录信息后,进入实例配置,配置浏览器访问jenkins的url。

  9.到这里Jenkins就已经安装完成了

 四、jenkins持续集成--安装常用插件

  1.在jenkins首页进入,点击manage jenkins

   2. 选择plugins

  3.安装汉化jenkins插件

   4.安装Role-based Authorization Strategy

   2. 设置 gitlab 用户 root 可以通过 ssh 公钥直接下载代码

    部署 key,让 root 用户可以不输入密码,获取 gitlab 上的源代码,该 key 是使用 git 下拉代码时使用。

     在gitlab服务器生成公钥,一路回车,不要输入密码.

# 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_rsa
Your public key has been saved in /root/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:hZMqBCKvM/od+Afu66GrAC5/xw41ae5+3vRvtOi9nkQ root@fil
The key's randomart image is:
+---[RSA 3072]----+
|o .              |
|.o .     o       |
|  . .   + .      |
| . .   o o       |
|=   . * S     E  |
|+o ..= .     ..  |
|+...+o.   .  o.. |
|oo +o=+ .o ..oo. |
|..==**+o. ..o+*. |
+----[SHA256]-----+
root@fil:/home/fil# cat /root/.ssh/
authorized_keys  id_rsa           id_rsa.pub
root@fil:/home/fil# cat /root/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDLoXmx2lPxNocZFUFeePDchfnKuSlxjLVtQvNDi2DSFs9X/aMTKJl86sGH/GC9LsKXudIzAzoLukOsHjAANrc1VYCZQpQ6A3O0hssH7eNJYEPymNJ+3J5hrspDBXHWhEZEdKAEkwNhLDBv0baund82p3wnP7nyBbAFAQY5Pqu55ZkrxQI+wq98nFyGfgo8RLDHK1KJT/IDr6+Z9kRRtwqPZsEK4hd91jE9v+ViW9VixO7ScR/f7ZCQhNhLbc/NhitiN6elQMeNFH/ggbI++P/cRSHqopIJF/0icLMffLy4mv7yKBWxM9nLUE6eoVNgH4EEcfrjJeTPMIuaWCGckNCrOeMsIJOJYL2EUh3e8hbKdvpKXd0gn4kid3iefzPl4xwcASX7YHs2bVt56dgpkrw6Hbmi6Lys+lJRZhJHVcZgQ14Y5FoFM6yvmi3qjqQEX1VDG+P6o

 可以在gitlab服务器进行测试

   3.jenkins添加git用户root的私钥

   将私钥内容添加到 Jenkins(private key 选项)

 

 

 root 公钥在 gitlab,root 私钥在 jenkins,这样 jenkins 就可以直接拉取 gitlab 上的代码 

   4.在 Jenkins 创建新的任务

          新建项目:

 

 源码管理选择git,输入代码地址,选择创建好的凭据。

 保存之后,点击构建(Build Now)

 构建过程中报错,原因是该任务所在的工作空间属主:属组不是Jenkins

解决方法:

# chown -R jenkins.jenkins /root/.jenkins/workspace/test-demo

 再次进行构建

 

 

 

 

 



 
 
 
 
 
posted @ 2023-06-07 14:08  摩天居士-谢烟客  阅读(36)  评论(0编辑  收藏  举报