gitlab+jenkins自动化部署

基于gitlab和jenkins的自动化部署

Gitlab基于Jenkins自动化部署教程:

https://blog.csdn.net/aaaaaab_/article/details/82012044

https://www.cnblogs.com/dengbingbing/p/10448185.html

GitLab是一个代码仓库,用来管理代码。

Jenkins是一个自动化服务器,可以运行各种自动化构建、测试或部署任务。所以这两者结合起来,就可以实现开发者提交代码到GitLab,Jenkins以一定频率自动运行测试、构建和部署的任务,帮助开发团队更高效的集成和发布代码。

一、GitLab介绍

GitLab:是一个基于Git实现的在线代码仓库托管软件,你可以用gitlab自己搭建一个类似于Github一样的系统,一般用于在企业、学校等内部网络搭建git私服。
功能:Gitlab 是一个提供代码托管、提交审核和问题跟踪的代码管理平台。对于软件工程质量管理非常重要。
版本:GitLab 分为社区版(CE) 和企业版(EE)。
配置:建议CPU2核,内存2G以上。

二、Gitlab的服务构成:

Nginx:静态web服务器。
gitlab-shell:用于处理Git命令和修改authorized keys列表。(Ruby)
gitlab-workhorse: 轻量级的反向代理服务器。(go)

GitLab Workhorse是一个敏捷的反向代理。它会处理一些大的HTTP请求,比如文件上传、文件下载、Git push/pull和Git包下载。其它请求会反向代理到GitLab Rails应用,即反向代理给后端的unicorn。

logrotate:日志文件管理工具。
postgresql:数据库。
redis:缓存数据库。
sidekiq:用于在后台执行队列任务(异步执行)。(Ruby)
unicorn:An HTTP server for Rack applications,GitLab Rails应用是托管在这个服务器上面的。(Ruby Web Server,主要使用Ruby编写)

三、gitlab的安装配置

1、安装依赖性:

yum install curl policycoreutils openssh-server openssh-clients postfix

2、查看服务状态确保开启:

systemctl status postfix.service

3、安装工具包:

yum install -y net-tools

4、下载安装gitlab:

gitlab开源软件镜像站:

https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/

wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-12.5.3-ce.0.el7.x86_64.rpm

rpm -ivh gitlab-ce-12.5.3-ce.0.el7.x86_64.rpm

yum install policycoreutils-python

再次进行安装:rpm -ivh gitlab-ce-12.5.3-ce.0.el7.x86_64.rpm

5、编辑配置文件写入当前主机IP(注:下面第8部可以一起编辑):

vim /etc/gitlab/gitlab.rb

6、初始化gitlab:gitlab-ctl reconfigure

7、重载服务:gitlab-ctl restart

8、修改gitlab仓库路径:

创建/data/gitlab目录

mkdir -p /data/gitlab

修改gitlab配置文件

vim /etc/gitlab/gitlab.rb

在git_data_dir的path里面添加 "/data/gitlab"(注:这里去掉前面的#符号)

停止当前gitlab,重新加载配置

gitlab-ctl stop

gitlab-ctl reconfigure

重新加载后,会发现在/data/gitlab目录下多出一个repositories目录

最后启动gitlab即可

gitlab-ctl start

9、在浏览器输入IP地址进行验证,是否安装成功,另外输入8位密码:

(我这里是admin123456)

10、设置用户密码:root,admin123456

登陆成功:

11、创建一个新工程:

12、配置gitlab免密连接:

(1)前提:得有一个代码仓库,然后在仓库创建分支并创建文件,这里已存在

(2)其次,得配置一个ssh公钥到gitlab上,这样才能模拟开发上传代码到gitlab

使用ssh-keygen生成私钥和公钥:(rsa加密算法生成)

ssh-keygen -t rsa -C [email protected]

这里需要:三次回车

查看公钥:cat id_rsa.pub

将公钥放到密钥栏里,这样就可以使用ssh方式来上传代码了:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDKt4gqFEGve5I9m7S+j5Rtd78h3EsaUkHEJcuVjVEQrMmmQbbHOX7ZVPcm6+oBiWi31tB7OMajNg+qSELg8fYECDePLLeBwrPUuMLt7k7nJZ/YmbZ241d2h8zTPZ+xyQ9NPfatWzr6NpjdCXjrMz9+8w4BiCAdXIC2lVr0Aef50gpgaRwy18CZrV8P/qynv8N2r/zGge6xKgbTr11AVCp2SEkEI5E1NpyxBEyrj32/LWOODZ84NSLF8SYlbMIE12xwo+ueVmhhQSB6XryrsF5AYGcESICHmvzMO76JSGnQPwmxyPZa2d44cOMOj2HNB0m2I2P7dDTJ37eFWzZzSU8h

13、克隆代码仓库,然后测试是否能够上传代码到gitlab:

git clone [email protected]:root/wyl.git

修改文本内容,提交到gitlab上看能否同步上去:

git add README.md 提交到暂存区

git commit -m "add README.md" 直接提交

git config --global user.email [email protected]

git config --global user.name root

git commit -m "add README.md"

git push

这里是用shell编写的一个文本提交至gitlab:

echo 123456 > rc.txt

git add .

git commit -m "rc.txt"

git push

到这里gitlab就配置完成。

四、Jenkins介绍

1、Jenkins 是什么?

Jenkins 是一个可扩展的持续集成引擎。

2、主要用于:

持续、自动地构建/测试软件项目。

监控一些定时执行的任务。

3、Jenkins 拥有的特性包括:

易于安装-只要把jenkins.war部署到servlet容器,不需要数据库支持。

易于配置-所有配置都是通过其提供的web界面实现。

集成RSS/E-mail通过RSS发布构建结果或当构建完成时通过e-mail通知。

生成JUnit/TestNG测试报告。

分布式构建支持Jenkins能够让多台计算机一起构建/测试。

文件识别:Jenkins能够跟踪哪次构建生成哪些jar,哪次构建使用哪个版本的jar等。

插件支持:支持扩展插件,你可以开发适合自己团队使用的工具。

4、Jenkins 安装部署方式(以下4种方式后续都会写到):

(1)直接下载war包jenkins.war部署到servlet容器中,如tomcat,下载地址https://jenkins.io/download

(2)下载war包使用命令直接运行war包,java -jar jenkins.war

(3)windows下载zip包解压运行jenkins.exe即可安装成windows服务

(4)下载rpm包在linux下安装并配置服务

五、Jenkins安装配置

教程:https://blog.csdn.net/xishaoguo/article/details/88577459

1、下载Jenkins包:https://jenkins.io/zh/download/

wget https://pkg.jenkins.io/redhat-stable/jenkins-2.190.3-1.1.noarch.rpm

如果这里下载速度过慢,也可以用rz本地直接上传。

2、安装Jenkins:

sudo rpm -ih jenkins-2.190.3-1.1.noarch.rpm

自动安装完成之后:

/usr/lib/jenkins/jenkins.war    WAR包

/etc/sysconfig/jenkins       配置文件

/var/lib/jenkins/       默认的JENKINS_HOME目录

/var/log/jenkins/jenkins.log    Jenkins日志文件

3、启动Jenkins:sudo service jenkins start

解决办法:修改java路径即可

find / -name jenkins

cd /etc/rc.d/init.d/

vim jenkins

上图是默认路径,修改为本机java路径,如下图一步到位即可:

sudo service jenkins start

systemctl daemon-reload           按提示:需重新加载单元

service jenkins start

service jenkins stop   停止Jenkins服务

service jenkins restart   重启Jenkins服务

这里如果防火墙未关闭,需先关闭,再启动jenkins:systemctl stop firewalld.service

查看Jenkins是否正常运行,如下图表示未运行:systemctl status jenkins

修改Jenkins端口号:vim /etc/sysconfig/jenkins

service jenkins start

systemctl status jenkins

浏览器验证失败,如下图:

很多人说gitlab很占内存,难道我的2G内存也被占完了吗?于是使用free命令看了一下:

free -h

发现我的运行内存就剩77M了,于是停掉gitlab:

gitlab-ctl  stop

再次查看有可用内存了:free -h

然后这里需要再次启动Jenkins:

service jenkins start

systemctl status jenkins

再次在浏览器验证,如下图表示成功:192.168.5.11:8082

4、网页配置Jenkins:

根据提示在虚拟机获取初始化密码:cat /var/lib/jenkins/secrets/initialAdminPassword

复制粘贴进去,进行下一步:

52b6aedc282f4e2ea322a2d563c95a16

这里自动安装插件,安装失败点击重试,但有时候因为网络原因可以跳过这一步:

创建管理员用户,保存完成:

到这里Jenkins就安装完成啦。

5、由于上面插件加载失败,这里需要先重新登录,再安装Jenkins所需插件:

我的Jenkins插件上面未安装成功,这里重新安装,点击系统管理--插件管理--搜索--勾选安装即可:

需要安装的插件:Gitlab Hook、Build Authorization Token Root、Publish Over SSH、Gitlab Authentication、Gitlab、Git Parameter、Maven Integration plugin

插件安装失败,有两种原因:

1、请求超时,网络正常的时候重新安装即可;

2、安装时没有依赖的安装包。

如果Jenkins多次安装都不行需要换种方式解决:

https://blog.csdn.net/KingBoyWorld/article/details/77923615

Jenkins插件下载地址:

http://updates.jenkins-ci.org/download/plugins/

如下图,所需插件均已安装完成:

6、添加完插件重启jenkins,开始添加要部署代码的主机,注意一定是要能够通过ssh登陆的用户。

添加主机:系统管理 - 系统设置 找到Publish over SSH设置免密即可,如下图:

设置好之后,测试报错:

这是由于服务器上的sshd服务没有开启导致的,登录到服务器上执行命令:

sudo service sshd start   //开启sshd服务

将公钥拷贝到authorized_keys文件,发现之前的用户[email protected]被添加进去,如下图:

cat id_rsa.pub >> authorized_keys

chmod 600 authorized_keys

7、系统管理--->全局工具配置

修改maven默认settings.xml文件,配置git、jdk、maven工具后保存(不要勾选自动安装)

Git配置按下图所示环境走:

8、Jenkins中创建一个job:

输入项目名,构建一个自由风格的项目:

以下是Git配置:

构建触发器:

http://192.168.5.11:8082/project/testwyl

这个URL待会配置gitlab会用到,如下图所示用正则表达式生成gitlab webbook的安全令牌ef04574b270a8be397af2c7789493f8d(每次都生成新的)

当前代码部署到的目录,然后重启服务,如下图:

配置gitlab:

取消ssl勾选,因为我们没有在Jenkins上配置https,最后点击增加web钩子

这里报错是因为使用的最新版本的gitlab,这是因为新版的gitlab为了安全默认禁止了本地局域网地址调用web hook,我们在设置里允许就行,具体步骤如下:

再次添加web钩子,然后进行test,如下图表示配置成功了:

如下图,测试的记录共3次:

9、测试提交代码是否会部署到远程主机:

git clone [email protected]:root/wyl.git

cd wyl/

echo ‘测试Jenkins‘ > index.html

git add .

git commit -m ‘add index.html‘

git push

#提交之后去jenkins页面看看

如下图是构建成功的项目:

原文地址:https://www.cnblogs.com/wyl-520/p/12149758.html

时间: 2024-10-06 02:55:09

gitlab+jenkins自动化部署的相关文章

gitlab+jenkins 自动化部署 持续集成

环境: 1.centos7.6 2.jdk1.8.0_141 3.4G 30G 4core 4.关闭防火墙和selinux 一.安装jenkins 1. 下载jenkins https://pkg.jenkins.io/redhat/  jenkins-2.208-1.1.noarch.rpm 2.安装jdk和jenkins rpm包 rpm -ivh jdk-8u141-linux-x64.rpm rpm -ivh jenkins-2.208-1.1.noarch.rpm 3.启动服务及设置开

Linux下的Jenkins+Tomcat+Maven+Gitlab+Shell环境的搭建使用(jenkins自动化部署)

jenkins自动化部署 目标:jenkins上点构建(也可以自动检查代码变化自动构建)>>>项目部署完成. 一.安装jenkins 1.下载jenkins 这里我选择的是war包安装jenkins,简单不伤脑,别的博客写的jenkins版本都很旧,没用最新的,写个比较新的配置2.20版. 官网:https://jenkins.io/index.html WAR包下载地址:http://mirrors.tuna.tsinghua.edu.cn/jenkins/war/2.20/jenki

Jenkins+Gitlab+Ansible自动化部署(六)

Pipeline Job实现Nginix+MySQL+PHP+Wordpress实现自动化部署交付(Jenkins+Gitlab+Ansible自动化部署(五)https://www.cnblogs.com/zd520pyx1314/p/10249094.html) 环境准备 编写ansible playbook脚本实现Wordpress远程部署 将wordpress源码与playbook部署脚本提交到gitlab仓库 编写pipeline job脚本实现Jenkins流水线持续交付流程 Jen

基于Jenkins+Gitlab的自动化部署实战

故事背景 一个中小型企业,是典型的互联网公司,当初期的时候可能运维只能标配到2~3人,此时随着公司的发展,项目会逐渐增多.前期部署项目可能都是手动的, 俗称"人肉部署",这简直是无比的痛苦,不能忍受的.这样开发的时间也会耽误,运维的时间也会耽误,全都浪费在这些重复性的工作上面,毫无价值可言, 这时候运维终于忍受不了,上了脚本.但是慢慢的发现项目依旧在增长,脚本每次还要更改给开发,效率低下,后来测试环境以及开发环境直接上了jeknins, 每台开发机器是jeknins agent端,自此

gitlab,gitlab runner自动化部署docker容器

一 .基础概念 软件开发中经常持续集成,持续交付,持续部署这三个概念到底是什么意思? 持续集成: 持续集成是指开发者在代码的开发过程中,可以频繁的将代码部署集成到主干并进程自动化测试 持续交付: 持续交付指的是在持续集成的环境基础之上,将代码部署到预生产环境 持续部署: 在持续交付的基础上,把部署到生产环境的过程自动化,持续部署和持续交付的区别就是最终部署到生产环境是自动化的 二.自动化部署流程 第一步:开发人员将代码上传到代码仓库,gitlab 根据gitlab-ci.yml中的命令,触发ci

一文搞定前端 Jenkins 自动化部署

最近在公司租项目的过程当中遇到一些 问题,项目做问你后需要部署到服务器环境:目前我再前端开发中常用的 方法又两种: 1:传统的方法 :Linux Xshell xftp来收到打包项目,上传到服务器环境进行部署 2:配置Nginx 环境和Jenkins部署环境再进行命令来自动晚上部署(这篇文章是下载Nginx 安装 Jenkins 做配置来部署服务器) 由于公司使用自己搭建的 svn 服务器来进行代码管理,因此这里 Jenkins 是针对 svn 服务器来进行的配置,Git 配置基本一致,后面也介

jenkins自动化部署gitlab上maven程序

部署流程:将代码从gitlab上拉取下来,使用maven打包,将打包后的jar通过ssh发送到服务器上,运行jar程序 注意:本文需要安装一些插件Publish Over SSH 1.新建任务 在主页点击“新建任务” 输入任务名称“gis-server”(随便什么名称都可以) 选择“构建一个maven项目” 确定 2.配置页面-源码管理 2.1.输入“Repository URL”,这是一个gitlab上的代码仓库地址,例如图中的 SSH地址:[email protected]:3dgis/se

使用Gitlab实现自动化部署与持续集成

Gitlab-Ci运行原理: 由以下两个模块组成gitlab-ci servergitlab-ci-runner其中,gitlab-ci server负责调度.触发Runner,以及获取返回结果. 而gitlab-ci-runner则是主要负责来跑自动化CI(测试,编译,打包等). 基本流程是: 用户提交代码->检查是否有.gitlab-ci.yml文件->如果无,则结束:-> 如果有,则调用runner执行脚本->获取返回的结果. 1. 登录Gitlab前提: gitlab 已经

gitlab + jenkins 自动部署

一.安装gitlab 和 jenkins 直接克隆项目 git clone [email protected]:GH16/devops.git 进入项目,直接运行, 等待五分钟左右部署(显示出错也会重启继续初始化) ? ~ cd devops ? devops git:(master) ls README.en.md docker-compose.yml jenkins stop.sh README.md gitlab start.sh ? devops git:(master) bash st