gitlab+jenkins学习笔记
一、部署gitlab
gitlab部署我采用的是docker的方式,这种方式的优势是方便;之前部署过非docker的gitlab,需要配置安装许多东西,太麻烦,还是docker部署方便,从官网pull下来,直接已启就ok了;
官方gitlab容器链接:https://docs.gitlab.com/omnibus/docker/README.html
1、export GITLAB_HOME=/usr/local/gitlab 先配置临时环境变量,这步可省略,但是第二步要写绝对路径;
2、docker run --detach --publish 80:80 --hostname 192.168.31.120 --name gitlab --restart always --volume $GITLAB_HOME/config:/etc/gitlab --volume $GITLAB_HOME/logs:/var/log/gitlab --volume $GITLAB_HOME/data:/var/opt/gitlab gitlab/gitlab-ee:latest
注意:
1)、这个地方如果有域名就--hostname 指定域名(最好是能现网解析的域名),如果不指定则默认是容器的CONTAINER ID;并且在gitlab运行起来的时候,仓库地址会是CONTAINER ID;可以通过hosts绑定的方式,但是非常麻烦;
2)、--hostname指定的name配置存放在gitlab.xml;第一次启动的时候我没有指定hostname,发现仓库地址是container id,本来想直接在配置文件中修改了,但是发现不生效,所以就重新启动了个容器;
3)、端口映射最好也映射成80,我第一次映射的8080,每次clone地址的时候都需要将端口添加上;
4)、如果没有域名的最好启动容器的时候直接将hostname写成ip地址,注意不要带非80端口(1.1.1.1:8080),否则,容器内部的端口就是8080,而非80;
5)、只是在运行容器的时候我发现了这些问题,如果非容器启动gitlab;上述问题可以通过修改配置文件解决;
3、创建组--->创建project--->创建用户
gitlab用户组的5种权限:
Guest:可以创建按issue,发表评论,不能读写版本库;
Reporter:可以克隆代码,不能提交,QA/PM可以赋予这个权限;
Developer:可以克隆代码,开发,提交,push,普通开发可以赋予这个权限;
Maintainer:可以创建项目,添加tag,保护分支,添加项目成员,编辑项目,核心开发可以赋予这个权限;
Owner:可以设置项目访问权限,删除项目,迁移项目,管理组成员,开发组长可以赋予这个权限;
二、idea向gitlab上传代码
1、在vcs中开启git功能
2、右击项目--->git--->commint Directory 提交代码到本地仓库
3、右击项目--->git--->add--->(项目备注)
4、右击项目--->git--->Repository--->Remotes 添加gitlab project地址,可以在gitlab上clone http地址;
5、右击项目--->git--->Repository--->Push
三、jenkins连接gitlab
1、安装jenkins
1)、通过rpm包安装,大部分中文界面,但是版本不是最新的;(我采用的这种方式)
2)、通过tomcat部署jenkins,可以从官网下最新的;
3)、在部署jenkins的这台机器上安装java,(我用的1.8.0_211);
4)、在部署jenkins的这台机器上安装git以及maven(从官网下最新版即可);
2、配置jenkins
1)、全局工具配置:系统管理(Manage Jenkins)--->全局工具配置(Global Tool Configuration)--->配置java/git/maven的路径

java和maven都是工作路径,只有git的配置是git的可执行程序;
2)、系统配置:系统管理(Manage Jenkins)--->系统配置(Configure System)--->全局属性--->勾选环境变量(Environment variables)

其中JAVA_HOME/MAVEN_HOME的键可以定义,值都是工作目录;注意:PATH+EXTRA这是固定写法,值引用maven的键,定义maven的可执行文件的路径;该地方不配置在构建的时候会提示找不到mvn命令;
3、创建jenkins任务并配置


Credentials可以在jenkins任务配置的时候添加,也可以在系统管理(Manage Jenkins)--->Manage Credenials中添加全局域;这个地方我选择的是账户密码的方式,这地方的账户密码是gitlib中有 该项目权限的用户的账户密码;
注意:分支的配置,要根据实际情况来配置,否则在构建的时候会报错;(Couldn`t find any revision to build,Verify the repository and branch configuration for this job);构建日志中会有体现;
4、构建工程

我总共构建了8次,失败了7次,可以点进去构建历史有日志看具体报错解决问题;
查看构建日志:


gitlab+jenkins学习笔记的更多相关文章
- Jenkins 学习笔记
Jenkins 的内容网站蛮多的,但是一开始我看起来确实很费劲.似乎好多东西都是悬空的,没有把底层的信息交代清楚. 我把自己对于 Jenkins 的探索过程记录下来,如下. 目录 Jenkins 学习 ...
- Gitlab+Jenkins学习目录
Gitlab+Jenkins基础篇 Gitlab+Jenkins学习之路(一)之Git基础 Gitlab+Jenkins学习之路(二)之gitlab部署 Gitlab+Jenkins学习之路(三)之g ...
- Gitlab+Jenkins学习之路(六)之Jenkins部署、升级和备份
一.什么是持续集成? (1)Continuous integration(CI) 持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员至少集成一次,也就意味着每天可能会发生多次集 ...
- Gitlab+Jenkins学习之路(八)之发布maven项目及按版本发布
一.什么是Maven maven是一个项目管理和综合工具.Maven提供给开发人员构建一个完整的生命周期框架. 开发团队可以自动完成该项目的基础设施建设,Maven使用标准的目录结构和默认构建生命周期 ...
- Gitlab+Jenkins学习之路(十一)之Jenkins自动触发构建和发布
思路图: 一.下载gitlab plugin jenkins-->系统管理-->管理插件-->下载并安装gitlab plugin 二.配置gitlab认证 路径:Jenkins-- ...
- Gitlab+Jenkins学习之路(十三)之发布Java项目到tomcat
一.新建一台虚拟机安装tomcat ()安装JDK 官网下载jdk:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downl ...
- jenkins学习笔记
Jenkins 是一款流行的开源持续集成(Continuous Integration)工具,广泛用于项目开发,具有自动化构建.测试和部署等功能.本系列博客以 windows 10 环境为例 1 安装 ...
- Jenkins 学习笔记(三):我们的JAVA 项目是这么发布的
发布拓扑 1. 拓扑图 2. 流程说明: Git 插件从 Git Server 上面拉取源代码. Maven 插件将源代码安装我们设定的指令进行编译打包,存放于项目的 WorkSpace. Publi ...
- Jenkins 学习笔记(二):很简单的发布一次
发布思路:从 github 拉取一些文件,然后推送到 Target server 的某个目录. 准备 1. Jenkins 需要安装的插件:『 Publish over SSH 』 2. 全局配置:系 ...
随机推荐
- windows下载安装JDK8
一 .下载链接 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 根据自己的电脑安 ...
- CAD图与互联网地图网页端相互叠加显示技术分析和实现
需求分析 之前相关的博文中介绍了如果在Web网页端展示CAD图形(唯杰地图云端图纸管理平台 https://vjmap.com/app/cloud),当一些CAD图纸有实际地理坐标位置时,如地形图等, ...
- Python模块Ⅰ
Python模块Ⅰ part1 模块的定义/取别名 自定义模块 什么是模块:模块的本质就是.py文件,封装语句的最小单位 模块中出现的变量,for循环,if结构,函数定义...称为模块成员 模块的运行 ...
- 查询语句写了limit 1,为什么依然很慢?
摘要: 很多时候计算引擎会对语句进行代价估计并调整语句的执行顺序.执行计划是语句如何执行的直观表达.语句如何执行不能只关注语句写法,要想写出符合预期执行顺序的查询语句,还需要关注语句执行计划. 本文分 ...
- 第一次的ssm整合
数据库表 导入依赖 <dependencies> <dependency> <groupId>javax.servlet</groupId> <a ...
- Django-request的常见属性
瞧一瞧,看一看,Django时,获取Request的各个属性. Request的常见属性 request.META 返回一个python字典.它包含了所有的HTTP请求信息.如下代码: 点击查看代码 ...
- 论文解读(ARVGA)《Learning Graph Embedding with Adversarial Training Methods》
论文信息 论文标题:Learning Graph Embedding with Adversarial Training Methods论文作者:Shirui Pan, Ruiqi Hu, Sai-f ...
- C++ 炼气期之数据是主角
1. 前言 数据在程序中的重要性,怎么强调都不为过,程序的本质就是通过提供数据处理逻辑,把数据从一种状态变成另一种状态的过程.处理逻辑一定是有针对性的,针对的是数据本身的特性. 只有了解了数据本身的内 ...
- 第1期 考研中有关函数的一些基本性质《zobol考研微积分学习笔记》
在入门考研微积分中,我们先复习一部分中学学的初等数学的内容.函数是非常有用的数学工具. 1.函数的性质理解: 首先考研数学中的所有函数都是初等函数.而函数的三个关键就是定义域.值域.对应关系f. 其中 ...
- java标识符 identifier
1,标识符 --> 类名 方法名 变量名 常量名 接口名 为程序员自己命名的内容 main也是标识符但是不能修改 2, 命名规则 只能以 数字 字母(中文) 下划线 美元符号 ...