使用Docker搭建Gitlab

大致的步骤如下:

  • 开发人员通过IDE工具(IntelliJ IDEA)将代码推送到gitlab。
  • jenkins从gitlab中获取到源码,并使用maven编译、打包、(下一章节介绍)自动构建镜像。
  • jenkins在构建脚本中调用docker命令将构建好的镜像push到本地Docker Registry.并启动相应的容器。(下一章节介绍)

一、使用IntelliJ IDEA 将项目发布(提交)到GitLab

(1)本地下载并安装配置Git客户端,并在idea配置本地git。

官方下载地址为:https://git-scm.com/download/win,下载完之后,双击安装,全部选择默认。

(2)Git初始化及仓库创建和操作

Git安装之后需要进行一些基本信息设置(需要先注册Github)

a、设置用户名:git config -- global user.name '你再github上注册的用户名';

b、设置用户邮箱:git config -- global user.email 'github注册时候的邮箱';

注意:该配置会在github主页上显示谁提交了该文件

c、配置ok之后,我们用如下命令来看看是否配置成功:git config --list

注意:git config --global 参数,有了这个参数表示你这台机器上所有的git仓库都会使用这 个配置,当然你也可以对某个仓库指定不同的用户名和邮箱。

(3)在idea 配置Git客户端

file->settings->version control->git

(4)idea本地将本地现有的项目和gitlab进行管理并提交到线上

在idea的菜单项选择 VCS->Import into Version Control->Create Git Repository

出现一个弹出框,选择你要提交的项目的文件夹

如果出现弹出框 ,点击确定。默认是直接定位到当前项目文件所在的磁盘目录,一般git初始化就在当前项目的根目录,不需要修改路径,直接点击OK确定即可。

init完成之后,可以看到原本的项目文件名变成了红色了,红色在idea的git版本表示未add的文件,同时在系统资源管理中打开项目的磁盘文件目录,会发现一个.git的隐藏文件,这个文件就git的配置和仓库文件。

在回到idea项目中,点击VCS》Git》Add添加当前项目下的文件,添加完成之后,之前的红色文件名变成了绿色了,表示已经Add成功,但还没有commit。

注意:如果有的文件还是红色,按以下处理把你需要提交的内容添加vcs

继续操作,VCS》Git》Commit File,然后在提交创建填写提交注释说明

提交完成之后,只是提交到本地仓库,这个时候还没有同步到远程的gitlab服务上,需要push操作,VCS》Git》Push

然后通过网页的方式登录gitlab服务,创建一个空的project,然后在如图所示的位置复制仓库地址

在本地通过git shell (可以安装git for window) 进入到项目目录 执行 以下命令:

# 给项目设置远程远程仓库 #

git remote add origin http://gitlab.ipzao.com/root/test.git

# 抓取远程仓库数据,并自动合并远程分支 #

git pull origin master

# 更新本地数据到gitlab #

git push origin master

选中项目,先git->commitFile,然后操作git->repository->push 可以push代码到远程gitlab上了,push完成之后会提示push successful

二、安装jenkins

1. 拉取jenkins镜像

docker pull jenkinsci/jenkins

2. 新建jenkins工作目录

cd apps

mkdir jenkins

cd jenkins

3. 生成启动文件 jenkins-start.sh

cat <<EOF > jenkins-start.sh
#!/bin/bash
HOST_NAME=jenkins.ipzao.com
GITLAB_DIR=`pwd`
docker stop jenkins
docker rm jenkins
docker run -d \
-p 38080:8080 \
-p 50000:50000 \
--name jenkins \
--link gitlab:gitlab.ipzao.com \
-u root \
-v /apps/ipzao/jenkins:/var/jenkins_home \
jenkinsci/jenkins:latest
EOF

使用docker命令运行容器,然后开启38080端口,并启动jenkins容器。

其中8080端口是jenkins的端口,38080是映射宿主机的端口,50000端口是master和slave通信端口.以root用户来启动容器,同时通过配置--link连接gitlab,因为要与gitlab容器通讯下载代码。

4. 运行 jenkins-start.sh 启动jenkins

sh jenkins-start.sh

jenkins 启动后,可通过 docker logs -f 容器实例Id 查看日志。

容器实例Id 查询 docker ps

打开浏览器http://ip:38080/访问跳转到解锁jenkins页面。

在服务器上以下执行命令查看密码

由于之前启动jenkins容器时我们做了目录映射

-v /apps/ipzao/jenkins:/var/jenkins_home,所以要将执行命令改为:

cat /apps/ipzao/jenkins/secrets/initialAdminPassword

在解锁页面上输入上述密码,继续进入以下页面:

建议选择安装推荐的插件,基本上一些常用的插件都会被安装,安装过程如图:

安装完后进入以下页面:

单击开始使用Jenkins按钮进入jenkins系统,点击左侧菜单中的"系统管理"进入Jenkins管理模块,查看系统设置:

主目录:是存放Jenkins所有的文件的,工作空间根目录和构建记录目录默认都是在Jenkins主目录下,这个设置一般不用进行变更。

执行者数量:可以并发构建的数量。

标记:用来记录这个机器的名称。

用法:设置这个节点的执行策略(包括尽可能使用这个节点和只允许绑定到这台机器的job。

生成前等待时间:这个时间为构建开始前的等待时间。

scm签出重试次数:使用svn或者git拉取代码失败重试的次数。

工程命名限制:限制项目命名,勾选后可以看到具体设置,可以设置为默认或者使用正则表达式进行限制。

全局属性

工具位置:设置全局工具,可以把需要的工具都在这里进行配置,比如maven,ant,jdk等。

环境变量:设置全局变量,在这里定义的全局变量可以在构建或者发送邮件时引用。

设置时间格式

管理监控默认选中所有

jenkins location

jenkins url:设置jenkins的url(发送邮件引用jenkins的地址会取这个值,如果设错了,邮件的连接就会打不开)。

系统管理员邮件地址:管理员的邮件地址(在构建需要发送邮件时,会用到这个邮件地址)。

插件管理:进入全局工具配置 选择可选插件板块,安装并配置maven插件,如果缺少Maven Integration Plugin插件,在创建job时,不会有新建一个maven项目选项。

5. 创建一个构建任务

输入项目名称test,选中构建一个多配置项目点击确定按钮进入项目配置页面:

在源码管理板块中选择git并在repository url填写git仓库名称,但此时会报错:

通过错误提示可知:我们所填入的URL是需要身份认证的,可单击Credentials下拉框右侧的Add按钮,并选择Jenkins选项,弹出身份认证信息对话框:

上面填写的是gitlab的用户名密码验证,添加完后需要选中它,这个时候可以看到已经不报错了。

在构建板块中配置maven:

添加构建后操作:

点击增加构建后操作步骤,选择归档成品,在文本框中输入需要存档的文件路径:**/target/*.jar。

单击保存回到主界面

单击左侧菜单的立即构建并在控制台输出中查看构建日志:

小球图标表示构建状态:蓝色表示构建成功,但目的是搭建一个持续集成的环境,在开发阶段我们会不断的推送代码到gitlab,所以我们需要利用jenkins来帮我们实现自动构建发布(下一章节介绍)。

 

使用Jenkins+Docker+Gitlab+Maven搭建持续集成环境的更多相关文章

  1. 使用Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境(二)

    前言     上一篇随笔Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境(一)介绍maven和nexus的环境搭建,以及如何使用maven和nexus统一管理库 ...

  2. Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境(二)

    上一篇随笔Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境(一)介绍maven和nexus的环境搭建,以及如何使用maven和nexus统一管理库文件和版本,以 ...

  3. 使用Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境

    前言 但凡一个略有规模的项目都需要一个持续集成环境的支撑,为什么需要持续集成环境,我们来看一个例子.假如一个项目,由A.B两位程序员来协作开发,A负责前端模块,B负责后端模块,前端依赖后端.A和B都习 ...

  4. Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境

    使用Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境(一) 2015-01-14 20:28 by 飘扬的红领巾, 4322 阅读, 5 评论, 收藏, 编辑 ...

  5. [转] 基于Gitlab CI搭建持续集成环境

    [From] https://blog.csdn.net/wGL3k77y9fR1k61T1aS/article/details/78798577 前言 本文是在12月12号迅雷@赵兵在前端早读课第三 ...

  6. 使用Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境(一)

    前言     但凡一个略有规模的项目都需要一个持续集成环境的支撑,为什么需要持续集成环境,我们来看一个例子.假如一个项目,由A.B两位程序员来协作开发,A负责前端模块,B负责后端模块,前端依赖后端.A ...

  7. Jenkins+ANT+SVN快速搭建持续集成环境

    伟大的语言都从helloworld开始,这里我们用Jenkins+ANT+SVN来搭建这一套持续集成环境. 环境准备: 一台已经配置好Jenkins和Ant的机器. 项目准备: 用Ecplise建立一 ...

  8. Docker+Jenkins+Maven+SVN搭建持续集成环境

    Docker+Jenkins+Maven+SVN搭建持续集成环境 环境拓扑图(实验项目使用PHP环境) 发布流程图 环境说明 系统:Centos 7.4 x64 Docker版本:18.09.0 Ma ...

  9. Devops 开发运维高级篇之Jenkins+Docker+SpringCloud微服务持续集成(上)

    Devops 开发运维高级篇之Jenkins+Docker+SpringCloud微服务持续集成(上) Jenkins+Docker+SpringCloud持续集成流程说明 大致流程说明: 1) 开发 ...

随机推荐

  1. selenium 定位 页面上两个完全一样的元素

    在测试过程中发现页面上有两个保存按钮的元素的xpath一模一样,如下图: google了好久才找到解决办法,发现自己还是比较弱!!!解决方法如下: selenium.click("xpath ...

  2. LG4171/BZOJ1823 「JSOI2010」满汉全席 2-SAT

    问题描述 LG4171 BZOJ1823 题解 显然,每个评委对每个材料的满式/汉式要求是对\(n\)个元素的\(0,1\)取值限制. 显然想到\(\mathrm{2-SAT}\) 于是就可以切掉了. ...

  3. javaweb监听器实现与原理

    参考:https://www.cnblogs.com/lxp503238/p/6678688.html https://blog.csdn.net/CPOHUI/article/details/888 ...

  4. 【CSP2019】树上的数

    [CSP2019]树上的数 题面 洛谷 题解 我们设每个点上的编号分别为\(a_1,a_2...a_n\). 10pts ... 菊花 假设现在菊花中心编号是\(rt\),设你依次拆边\((p_1,r ...

  5. [LeetCode] 34. Find First and Last Position of Element in Sorted Array 在有序数组中查找元素的第一个和最后一个位置

    Given an array of integers nums sorted in ascending order, find the starting and ending position of ...

  6. Windows开机自动登陆 开/关:登录需按Ctrl+Alt+del的功能

    Win10.Win7.WinXP开机自动登录: Win+R组合键打开“运行”,输入“netplwiz” 在弹出的“用户帐户”窗口中,把取消勾选“要使用本机,用户必须输入用户名和密码”,然后“应用”. ...

  7. Oracle--RMAN Recover 缺失的归档操作

    一,环境简介 Oracle RMAN 备份的恢复分2个步骤:RESTRE 和 RECOVER.在这里回复的时候是依赖者归档文件的,当周一完成数据全备,保留归档的情况下,后期数据有问题,恢复的时候发现少 ...

  8. 管理ceph缓存池

    目录 缓存池简介 缓存池原理 缓存池的工作模式 配置缓存池 1. 创建一个缓存池 2. 设置缓存层 3. 缓存层相关参数说明 4. 测试缓存池 删除缓存池 1. 删除read-only缓存池 2. 删 ...

  9. ant-design-pro引用css

    ant-design-pro中默认只能引用less文件,引用了css文件也是无效的.所以需要在配置文件config.js中找到  cssLoaderOptions,在 getLocalIdent中加入 ...

  10. oracle 数据库创建用户并授权

    oracle 数据库创建用户并授权 备注: userName 为用户名,123456 为密码 drop user userName cascade; create user userName iden ...