Jenkins获取gitlab源代码
Jenkins获取gitlab源代码
Jenkins权限获取
在日常工作做由于Jenkins启动用户是Jenkins,在执行脚本时系统命令是无法让Jenkins执行的,如果需要Jenkins权限有两种办法:
1. sudo授权
2. 启动用户改为root [这里就使用这个办法了,因为做sudo授权太浪费时间了,其次gitlab都是内网使用没有什么安全威胁]
由于sudo授权比较繁琐,这里直接将启动用户改为root即可,大家可能说这个会不会不安全,其实不会
因为Jenkins是在内网部署,自己使用的. 无法呗外部用户访问,所以我们只需要配置为root用户启动即可
JENKINS_USER="jenkins" 
# 修改之前查看启动用户:
[root@node1 freestyle-job]# lsof  -i:8080
COMMAND   PID    USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
java    12742 jenkins  162u  IPv6 331298      0t0  TCP *:webcache (LISTEN)
#目前启动用户是Jenkins,我们需要改为root用户来运行
# sed来替换启动用户改为root
sed -i  "29s#JENKINS_USER\=\"jenkins\"#JENKINS_USER\=\"root\"#g" /etc/sysconfig/jenkins
# 修改完成重启Jenkins
 systemctl restart jenkins.service
# 查看重启状态和启动用户
[root@node1 freestyle-job]# lsof  -i:8080
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
java    12594 root  162u  IPv6 330233      0t0  TCP *:webcache (LISTEN)
可以看到用户已经改为了root
上面这些更改只为做一件事,让大家理解.权限的作用,如果我执行构建里面有 创建用户等这些敏感信息的时候非root用户权限是不允许做这些操作的. 看下面的案例:
Jenkins权限案例:
创建一个新的构建
检查当前Jenkins与运行用户:
[root@node1 plugins]# lsof -i:8080
COMMAND   PID    USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
java    13892 jenkins  162u  IPv6 338577      0t0  TCP *:webcache (LISTEN)
java    13892 jenkins  590u  IPv6 341276      0t0  TCP node1:webcache->10.0.0.1:58342 (ESTABLISHED)
目前我们使用的是Jenkins用户,按理来说Jenkins是不可以越权创建用户的,下面来看实际情况,以便于我们理解Jenkins权限.



我们看到了一条红色信息:

看到 Permission denied 我们就可以得出结论了, Jenkins是无法创建用户的没有权限,所以报错,权限不足

修改Jenkins运行用户,来重新执行构建.
# sed来替换启动用户改为root
sed -i  "29s#JENKINS_USER\=\"jenkins\"#JENKINS_USER\=\"root\"#g" /etc/sysconfig/jenkins
# 修改完成重启Jenkins
systemctl restart jenkins.service
重新构建截图:

Linux下检查用户是否被创建:
[root@node1 plugins]# id chenleilei
uid=1001(chenleilei) gid=1001(chenleilei) groups=1001(chenleilei)
chenleilei用户已经被创建,说明我们的理解是正确的,Jenkins是无法处理超越本身权限之外的工作的.
权限获取还有第二种方法 ,就是使用sudo授权来配置让Jenkins能够有权限执行,但是配置sudo授权.太浪费时间,这种策略是最好的办法.
但是其实我感觉..项目目录的权限也至关重要,这里听老师讲课改为了Jenkins用户执行报错,其实原因就出现在 项目目录是root权限,Jenkins是无权访问的.如果需要访问或者创建文件权限就必须将:
/var/lib/jenkins/workspace/my-freestyle-job/ 这个目录权限改为 Jenkins,否则他无法越权在这个目录创建和修改文件.
检测我的理解是否正确:
修改目录 /var/lib/jenkins/workspace/my-freestyle-job/ 权限为Jenkins :
 chown -R jenkins.jenkins  /var/lib/jenkins/workspace/my-freestyle-job
修改启动用户为Jenkins:
sed -i  "29s#JENKINS_USER\=\"root\"#JENKINS_USER\=\"jenkins\"#g" /etc/sysconfig/jenkins
#重启Jenkins
[root@node1 my-freestyle-job]# systemctl restart jenkins.service
[root@node1 my-freestyle-job]# systemctl status jenkins.service
● jenkins.service - LSB: Jenkins Automation Server
   Loaded: loaded (/etc/rc.d/init.d/jenkins; bad; vendor preset: disabled)
   Active: active (running) since Fri 2019-12-27 14:32:41 CST; 6s ago  ##-- 状态正常
#重新执行构建任务
注意点:
我们运行任何任务都是从任务的文件夹下开始的:
/var/lib/jenkins/workspace/my-freestyle-job/
如果我们任务中有创建文件但是没写绝对路径,它只会在 /var/lib/jenkins/workspace/my-freestyle-job/ 下面创建.
这些在控制台是看不到的.但是可以看到构建目录

Jenkins故障:
构建过程中重启了Jenkins就会出现启动无法打开网页:
解决: rm -f /var/lib/jenkins/jobs/my-freestyle-job/nextBuildNumber
Jenkins配置git拉取gitlab仓库代码自动发布:



点击 test 后点击 push events 测试,然后再Jenkins中查看是否触发了任务.


Jenkins中看到的:


这次我们没有主动点击 "立即构建" 他自己就 主动push了一次,再上面的图中也可以清楚的看到: "Started by GitLab push by Administrator" 他是又gitlab自动触发的立即构建.
回到gitlab查看我们刚才的构建日志:



还记得我们Jenkins中的shell执行了什么吗?

检查是否创建:

这样就完成了 git+gitlab+Jenkins实现自动构建自动集成的过程.
在企业中同样的做法.  只不过 主动触发事件 会变成shell 的方式,一旦提交就会编译并立即发布.
自动发布:
测试 push文件,然后自动发布:
回到一台绑定了 gitlab的服务器 克隆代码:

安装一个nginx 查看页面效果:
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum install -y wget
wget -P /etc/yum.repos.d/ http://mirrors.aliyun.com/repo/epel-7.repo
yum clean all
yum install -y nginx
页面效果: 
修改构建任务:
目的是让 修改后的文件拷贝到html,或者也可以做ln -s 的软连接,这里演示就做拷贝了

执行push:
[root@node1 leilei_test]# echo  "<h1>chenleilei _ auto test </h1>" >>index.html[root@node1 leilei_test]# git add *[root@node1 leilei_test]# git commit -m "midify index.html"[root@node1 leilei_test]# git push -u origin master

检查网页状态:

到这里 自动化发布已经完成!!
Jenkins获取gitlab源代码的更多相关文章
- jenkins获取GitLab的hook数据并处理
		jenkins获取GitLab的hook数据并处理 jenkins安装Generic Webhook Trigger Plugin插件 {% asset_img Generic_Webhook_Trg ... 
- 万字干货! 使用docker部署jenkins和gitlab
		阅读本文, 需要有基础的Git, Linux, Docker, Java, Maven, shell知识, 并最少有一台内存16G以上并已经安装好了Docker的机器. 1. 概述 2. 容器互联 3 ... 
- jenkins如何获取gitlab上的代码
		如何安装jenkins和gitlab我就不重复了,请自行搜索我的博客 那么,jenkins如何获取gitlab上的代码呢? 具体配置步骤如下 1.在gitlab上配置个人访问令牌.注意事项:姓名那里需 ... 
- jenkins定位GitLab推送的最新Webhook中push event来自哪一个分支
		转载请标明出处:http://www.cnblogs.com/zblade/ 一.调研目的 jenkins可以和GitLab搭档,每当GitLab上有commit的时候,都可以触发jenkins执行相 ... 
- Jenkins 配合 GitLab 实现分支的自动合并、自动创建 Tag
		Jenkins 配合 GitLab 实现分支的自动合并.自动创建 Tag 背景 GitFlow工作流简介 Gitflow工作流定义了一个围绕项目发布的严格分支模型,它会相对复杂一点,但提供了用于一个健 ... 
- 【06】Jenkins:Gitlab 自动触发构建以及钉钉通知
		写在前面的话 在某些时候,我们希望能够实现这样一个功能,当用户提交东西到 gitlab 上的时候,希望它能够自动触发构建,发布到我们需要的环境. 目前我们内部有做类似的需求:产品提交原型到 gitla ... 
- 使用Jenkins+Docker+Gitlab+Maven搭建持续集成环境
		继使用Docker搭建Gitlab后 大致的步骤如下: 开发人员通过IDE工具(IntelliJ IDEA)将代码推送到gitlab. jenkins从gitlab中获取到源码,并使用maven编译. ... 
- jenkins 与 gitlab 的持续集成
		前言介绍 gitlab与jenkins的安装部署请参考之前的文章:这里介绍一下jenkins与gitlab结合的好处. gitlab可以自己实现CICD功能,jenkins也可以结合其他工具来实现CI ... 
- Jenkins+Ansible+Gitlab自动发布/回滚Spring项目
		一.实现方法流程图 流程图如下:代码托管在本地GitLab上(为了复现整套流水线,我直接使用了GitHub,懒得再搭建GitLab),开发完成后提交代码到代码仓库,[自动]触发Jenkins进行持续集 ... 
- Java 网络爬虫获取网页源代码原理及实现
		Java 网络爬虫获取网页源代码原理及实现 1.网络爬虫是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成.传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL ... 
随机推荐
- IIS 加载32dll失败
			前言 遇到一个这样的问题,因为在一个项目中是32位的,至于为什么是32位的呢,因为调用的都是老库,32位的,部署到iis出现错误如下: Server Error in '/' Application. ... 
- @EnableDiscoveryClient 注解如何实现服务注册与发现
			@EnableDiscoveryClient 是如何实现服务注册的?我们首先需要了解 Spring-Cloud-Commons 这个模块,Spring-Cloud-Commons 是 Spring-C ... 
- spring mvc框架常用注解及用途
			@Controller:用于标识是处理器类: @RequestMapping:请求到处理器功能方法的映射规则: @RequestParam:请求参数到处理器功能处理方法的方法参数上的绑定: @Mode ... 
- stm32串口晶振不对输出乱码+汇承HC-14lora模块
			最近要用到一个lora无线透传模块,然后就先用两个32开发板(用的STM32F103C8T6)试试简单的收发数据.结果,第一步串口发送一句话就寄了,我串口打印了"hi",结果出现了 ... 
- HL7简介
			HL7是特定于医疗保健的标准组织,其主要重点是创建一组定义的国际消息传递标准,以支持应用程序和设备之间的互操作性和通信.这些消息标准可以分为三个主要的 HL7标准版本,HL7版本2(v2).版本3(v ... 
- 玩转DB里的数据 — 阿里云DMS任务编排之简介和实操
			1.任务编排介绍 数据库是企业IT系统里的重要基础设施,里面存储了大量有价值的数据资产,如:交易数据.客户数据.订单数据,等等.其实,数据库在企业里一直扮演着一个数据生产者(Producer)的角色, ... 
- 技术干货 | 使用 mPaaS 配置 SM2 国密加密指南
			简介:随着移动智能终端的广泛应用,敏感信息极易被监控或盗取,给国家.企事业及个人带来极大政治.经济损失.金融和重要领域的各个企业正在逐步落实并完成国产密码改造工作.为解决客户侧因更换加密算法造成的种 ... 
- Windows 窗口样式 什么是 WS_EX_NOREDIRECTIONBITMAP 样式
			我觉得我可以加入历史博物馆了,加入微软历史博物馆,本文也是和大家吹历史的博客 简单说这个 WS_EX_NOREDIRECTIONBITMAP 样式是 Win8 提供的,用来做画面图层混合的功能.什么是 ... 
- 用Multisim验证简易测谎仪
			用Multisim验证简易测谎仪 测谎仪电路如下图所示: 节点1,2之间用10M欧的电位计代表人体表电阻,原理是撒谎出汗的话,体表电阻就小.Q1,Q2构成互补音频振荡器,振荡频率由R2.C1和R12共 ... 
- 【2023知乎爬虫】我用Python爬虫爬了2386条知乎评论!
			目录 一.爬取目标 二.展示爬取结果 三.爬虫代码讲解 3.1 分析知乎页面 3.2 爬虫代码 四.同步视频 五.完整源码 您好,我是 @马哥python说,一枚10年程序猿. 一.爬取目标 前些天我 ... 
