对本文进行格式整理,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. OCR库Tesseract初探

    1.Tesseract 安装及使用 一款由HP实验室开发由Google维护的开源OCR(Optical Character Recognition , 光学字符识别)引擎,与Microsoft Off ...

  2. JSP显示页面和数据库乱码

    页面 和 数据库编码都是UTF-8,但就是奇怪. 指定Tomcat的编码为UTF-8 就行了

  3. webloigc 控制台修改登录密码

  4. Springboot中Aspect实现切面(以记录日志为例)

    前言今天我们来说说spring中的切面Aspect,这是Spring的一大优势.面向切面编程往往让我们的开发更加低耦合,也大大减少了代码量,同时呢让我们更专注于业务模块的开发,把那些与业务无关的东西提 ...

  5. Docker实现容器具有固定IP

    Docker的网络类型 Docker安装后,默认会创建三种网络 $ docker network ls NETWORK ID NAME DRIVER SCOPE 6bdc00ad2a8d bridge ...

  6. jQuery插件备忘

    jQuery BlockUI Plugin  遮罩插件                                                                          ...

  7. Lazarus 初识

    Lazarus 使用 Free Pascal 的编译器,支持 Object Pascal 语言,与 Delphi 高度兼容,并看做后者的自由软件替代品. Lazarus 下载与安装 我们先去 Laza ...

  8. NOIP2010提高组 机器翻译

    OJ提交地址:https://www.luogu.org/problemnew/show/P1540 http://noi.openjudge.cn/ch0112/07/ 总时间限制: 1000ms  ...

  9. PHP异步扩展Swoole笔记(2)

    dispatch_mode, 数据包分发策略 可以选择7种类型,默认为21,轮循模式,收到会轮循分配给每一个Worker进程2,固定模式,根据连接的文件描述符分配Worker.这样可以保证同一个连接发 ...

  10. mac 使用笔记日志

    telnet安装 安装homebrew /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/i ...