Jenkins持续集成
一、持续集成架构
- 开发者写代码上传gitlab
- jenkins帮我们到gitlab里面把最新代码拉取出来(clone),jenkins通过插件可以对拉取的代码完成自动化测试。测试完成后,可以自带把代码(编译,打包....)。创建一个共享目录,把打包的代码共享出去(比如NFS共享或者FTP共享)
- 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/
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
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
再次进行构建