对本文进行格式整理,url:

https://www.cnblogs.com/huandada/p/9969234.html

整个项目的框架为:

1.gitlab的安装(Centos7)

新建/etc/yum.repos.d/gitlab-ce.repo,添加以下内容:

[gitlab-ce]
name=gitlab-ce
baseurl=http://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7
repo_gpgcheck=0
gpgcheck=0
enabled=1
gpgkey=https://packages.gitlab.com/gpg.key

安装步骤:

# 安装依赖包

yum install curl openssh-server openssh-clients postfix cronie

# 启动 postfix 邮件服务

service postfix start

# 检查 postfix

chkconfig postfix on

# 安装 GitLab 社区版 ,安装git,使其支持git命令

yum install gitlab-ce git

# 初始化 GitLab

gitlab-ctl reconfigure

修改 host

添加访问的 host,修改/etc/gitlab/gitlab.rb的external_url

external_url 'http://git.home.com'

vi /etc/hosts,添加 host 映射

127.0.0.1 git.home.com

每次修改/etc/gitlab/gitlab.rb,都要运行以下命令,让配置生效

gitlab-ctl reconfigure

启动gitlab

gitlab-ctl start

配置本机的 host,如:192.168.113.59 git.home.com。最后,在浏览器打开网址http://git.home.com,登陆。默认管理员:
  用户名: root
  密码: xxxxxx

安装中文语言包(汉化)

对于英文还过得去的同学,可以不用汉化,下载最新的汉化包,并查看版本,汉化包版本要与gitlab-ce包版本一致:

git clone https://gitlab.com/xhang/gitlab.git

cat gitlab/VERSION

10.6.1

也可指定版本下载,对于刚出来的一些新版本的gitlab-ce包,可能没有同版本汉化包,过一段时间就会有了:

git clone https://gitlab.com/xhang/gitlab.git  -b  v10.6.1-zh

先关闭gitlab:

gitlab-ctl stop

下载的文件夹内容复制到gitlab目录下

cp -r -f ./gitlab/* /opt/gitlab/embedded/service/gitlab-rails/

复制过程中会出现以下提示,不用管

cp: cannot overwrite non-directory ‘/opt/gitlab/embedded/service/gitlab-rails/log’ with directory ‘./gitlab/log’
cp: cannot overwrite non-directory ‘/opt/gitlab/embedded/service/gitlab-rails/tmp’ with directory ‘./gitlab/tmp’

重新加载配置,启动gitlab

gitlab-ctl reconfigure

gitlab-ctl restart

再次访问gitlab的web界面即变为中文。

gitlab的使用:

接下来配置密钥,实现本地工作机git pull/push gitlab的项目:
在本地工作机上生成密钥,将公钥复制到gitlab中
 ssh-key
 cat ~/.ssh/id_rsa.pub

回到刚才gitlab新建项目里,复制该项目地址

在本地工作机上,配置域名解析  /etc/hosts,将gitlab里的test 1项目克隆到本地:

172.19.0.111 gitlab.home.com

mkdir test_repo
cd test_repo/
git init        #初始化仓库
git clone git@gitlab.home.com:root/test1.git

由于我之前本地hosts中配置的是另一台gitlab的相同域名不同ip,在known_hosts 文件中有属于 该hostname 的密钥,git clone会报错

在该项目中创建新的文件aaa,并同步到gitlab,可在gitlab的web界面查看

cd  test1

echo aaa>aaa
git add ./*
git commit -m "提交代码"
git push

删除该项目中的文件aaa,并同步到gitlab

git rm -r --cached aaa
git commit -m 'delete'
git push

git pull 可以从gitlab中将文件拉到本地

2.jenkins的安装 (version 2.73.3)

安装好jdk8与tomcat,下载jenkins.war包,放在tomcat的webapp下,重启tomcat服务。配置好防火墙和selinux。访问jenkins的web界面 http://ip:8080/jenkins,cat该passwd文件,填写到下面的框中。

jenkins ssh-keygen生成密钥,将公钥添加到gitlab的ssh key中。
安装插件,install suggested plugins,后边还有额外安装一些插件.添加用户名密码,管理员为admin

安装插件 Maven Integration , Publish Over SSH,Gitlab

此时没有maven项目,需要安装插件Maven Integration ,同时安装Gitlab与远程连接tomcat服务器 的插件Publish Over SSH

系统管理 ---> 管理插件 ---> 可选插件 ---> 过滤选中直接安装

jenkins安装jdk与maven,安装完在server命令行/root/.jenkins/tools/目录下可以看到jdk与maven的两个安装目录

jenkins的web界面报错Your container doesn’t use UTF-8 to decode URLs. If you use non-ASCII ....
tomcat的字符问题,在tomcat配置文件server.xml中添加URIEncoding="UTF-8",并重启tomcat。有些版本的tomcat不会报错。

配置jenkins获取gitlab的密钥

jenkins服务器生成密钥

ssh-keygen

cat   ~/.ssh/id_rsa.pub

复制公钥粘贴到gtilab 的SSH keys中

将gitlab的域名解析加到jenkins的/etc/hosts中。若后边的url涉及到域名时,改为ip,也可以不加该域名的解析。

配置Gitlab插件
打开gitlab右上角绿色图标设置 ---> 右边图标access tokens --->创建个人访问令牌

复制访问令牌待用

jenkins 添加gitlab的访问令牌

Connection name 随便起名 ---> Gitlab host URL gitlab的ip --->  Credentials 选择Gitlab API token ---> Add ---> jenkins配置加下第二图

最后测试连接一下,是否成功

配置publish over SSH 插件,remote directory为war包在tomcat服务器中需要放置的路径,普遍是放在tomcat的webapp下,我这里放到自定义的目录下,后边会配置脚本进行后续操作。

Passphrase:密码(key的密码,如果你设置了,否则不填)

Path to key:key文件(私钥)的路径

Key:将私钥复制到这个框中

Disable exec:禁止运行命令

配置jenkins免密登录tomcat服务器

tomcat服务器:

ssh-keygen

将~/.ssh/id_rsa.pub放到jenkins的~/.ssh/下,并改名为authorized_keys

下面我们就新建一个maven项目,点击左下角ok

点进这个test项目 ---> 配置

将gitlab中该项目的地址粘贴过来到 Repository URL

这里中间出现红色字体的报错,排错思路:

1.先测试jenkins与gitlab连通没,在jenkins命令git clone 项目url 是否成功

2.确认访问令牌配好没

3.域名解析有没有

此处我把域名改为ip就好了,这里的认证方式我们选用gitlab用户名密码的方式,也有填密钥路径的方式,此处就不多介绍了。下面的*/master默认对master分支进行构建。

构建触发器,此处选择webhook的方式。复制webhook url,待用

将刚复制的url放到gitlab中,点击下面的 “ 增加web钩子 ”

此处构建触发器还有其他方式Poll SCM    H/1 * * * * 每隔1分钟核对一次gitlab是否更新,若有更新就立即构建。

构建环境不用管

Goals   maven的打包命令

生成war包需要读取pom.xml里的配置,root pom.xml默认为该项目web界面里工作空间下的相对路径,即server里/root/.jenkins/workspace/项目名/pom.xml。这里就需要gitlab里的代码直接在该项目下,前面没有多余的目录。像这样:

而不是这样,项目下还有一层 目录。在jenkins上配置pom.xml时,把这个目录加在pom.xml文件前面也是不能识别该路径的:

设置构建后的邮件通知

构建后需要将war包传到tomcat服务器

source files为相对于工作空间的war包位置,构建完默认在target下;

remove prefix 去掉war包之前的路径

exec command 部署好war包后,在tomcat服务器中要执行的命令,此处我写成一个脚本在tomcat服务器中。

cat  change_war.sh

#! bin/bash

#cd /usr/share/tomcat/bin && ./shutdown.sh
systemctl stop tomcat
cd /usr/share/tomcat/webapps
rm -rf appstore.war appstore
mv /usr/share/war/appstore.war /usr/share/tomcat/webapps/ &&
systemctl start tomcat
#cd /usr/share/tomcat/bin && ./start.sh

在jenkins中配置maven的home:

在maven的配置文件中修改私服的服务器地址:

vim  /root/.jenkins/tools/hudson.tasks.Maven_MavenInstallation/Maven3/conf/settings.xml

配置完就可以构建了。

一般第一次构建会报错,查看控制台输出,找报错原因。

由于部署很复杂,过程过一定会报错,慢慢查原因,一定只有把整个过程理解后,才会部署成功。这是我的心得。

本文参考文章链接:

gitlab+jenkins+tomcat war包部署(此文有新版本)的更多相关文章

  1. gitlab+jenkins+tomcat CI/CD 部署

    整个项目的框架为: gitlab的安装与使用(Centos7) gitlab的安装 新建yum源 vim /etc/yum.repos.d/gitlab-ce.repo [gitlab-ce] nam ...

  2. tomcat war包部署

    平常的开发我们都是通过IDE进行项目的部署,但有时候我们不得不进行手工部署(例如在Server上). 手工部署分为以下几步: 第1步: 用maven打war包 (假如得到的war包名为: appkit ...

  3. SpringBoot系列: 极简Demo程序和Tomcat war包部署

    =================================SpringBoot 标准项目创建步骤================================= 使用 Spring IDE( ...

  4. jenkins发布.war包到本地tomcat

    前提:保证jenkins构建打包成功 1.配置tomcat的用户名密码(此处tomcat为本地任意tomcat包,jenkins会通过Deploy war/ear to container配置的url ...

  5. SpringBoot之打成war包部署到Tomcat

    正常情况下SpringBoot项目是以jar包的形式,正常情况下SpringBoot项目是以jar包的形式,并且SpringBoot是内嵌Tomcat服务器,所以每次重新启动都是用的新的Tomcat服 ...

  6. springboot 学习之路 5(打成war包部署tomcat)

    目录:[持续更新.....] spring 部分常用注解 spring boot 学习之路1(简单入门) spring boot 学习之路2(注解介绍) spring boot 学习之路3( 集成my ...

  7. Windows下war包部署到Linux下Tomcat出现的问题

    最近,将Windows下开发的war包部署到Linux下的Tomcat时报了一个错误:tomcat error in opening zip file.按理说,如果正常,当把war包复制到webapp ...

  8. 将Web项目War包部署到Tomcat服务器

    1. 配置Java运行环境 1.1 下载并安装JDK 从官网上下载最新的JDK:http://java.sun.com/javase/downloads/index.jsp ,下载后安装,选择想把JD ...

  9. eclipse项目转移至IDEA与IDEA tomcat报错(idea自带tomcat版本太高)与war包部署到win服务器与idea提交git的总结

    eclipse导出项目到idea时,不要导出target: idea打开eclipse项目后,出现junit找不到的问题,原因是jar包缺失,而maven配置的低版本的junit也显示找不到,解决办法 ...

随机推荐

  1. jQuery 学习03——HTML:捕获、设置、添加元素、删除元素、CSS类、CSS()方法、尺寸

    jQuery - 获取内容text().html() 以及 val()和属性attr() jQuery 中非常重要的部分,就是操作 DOM 的能力. DOM = Document Object Mod ...

  2. Tracing Memory access of an oracle process : Intel PinTools

    https://mahmoudhatem.wordpress.com/2016/11/07/tracing-memory-access-of-an-oracle-process-intel-pinto ...

  3. 关于Android开发中Arm、X86和Mips(草稿)

    一.架构 1.Arm架构 是一个32位精简指令集(RISC)处理器架构,其广泛地使用在许多嵌入式系统设计. 2.X86架构 是一个intel通用计算机系列的标准编号缩写,也标识一套通用的计算机指令集合 ...

  4. M600 Pro 安装问题解决

    1.遥控器版本为1.2.10 提示版本已是最新版本,那么Lightbridge2 必须是1.1.60 不能是1.1.70 2.卸载机翼的时候,尽量用飞机带的那把工具 3.机翼安装 135 逆时针 cc ...

  5. [C#] 将NLog输出到RichTextBox,并在运行时动态修改日志级别过滤

    作者: zyl910 一.缘由 NLog是一个很好用的日志类库.利用它,可以很方便的将日志输出到 调试器.文件 等目标,还支持输出到窗体界面中的RichTextBox等目标. 而且它还支持在运行时修改 ...

  6. SQL DML 数据操纵语句

    前言 DML(Data Manipulation Language)语句:数据操纵语句,用于添加.删除.更新和查询数据库记录,并检查数据完整性.常用的语句关键字主要包括 insert.delete.u ...

  7. windows下查看特定端口被什么程序占用

    我电脑上因为命令: netstat -ano 列出的太多了,所以不好看. 以下是其他方式: 查看8088端口占用情况: 开始---->运行---->cmd,或者是window+R组合键,调 ...

  8. Redis数据结构详解,五种数据结构分分钟掌握

    redis数据类型分为:字符串类型.散列类型.列表类型.集合类型.有序集合类型.redis这么火,它运行有多块?一台普通的笔记本电脑,可以在1秒钟内完成十万次的读写操作.原子操作:最小的操作单位,不能 ...

  9. ThreadPoolExcutor 线程池 异常处理 (上篇)

    前言 最近看到crossoverJie的一篇文章:一个线程罢工的诡异事件 首先感谢原作者的分享,自己获益匪浅.然后是回想到自己的一次面试经历,面试官提问了线程池中的线程出现了异常该怎样捕获?会导致什么 ...

  10. Android 开发笔记

    11.android使用全局变量 定义Data类继承Application 在manifest.xml中声明 http://blog.csdn.net/feiyangxiaomi/article/de ...