整个项目的框架为:

gitlab的安装与使用(Centos7)

gitlab的安装

新建yum源

vim /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

vim /etc/gitlab/gitlab.rb
external_url 'http://git.home.com' vi /etc/hosts
本机ip git.home.com

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

gitlab-ctl reconfigure

启动gitlab

gitlab-ctl start

web界面登录

在浏览器打开网址http://git.home.com,登陆。默认管理员:

用户名: root
密码: xxxxxx

若此时启动gitlab后,若内存在不断减少,访问报502,则很可能是内存不够,至少配置4G内存。

gitlab的汉化

对于英文还过得去的同学,可以不用汉化

关闭gitlab

gitlab-ctl stop

下载汉化包

下载最新的汉化包,并查看版本,汉化包版本要与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目录下

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的项目(ssh)

在本地工作机上生成密钥,将公钥复制到gitlab中

    ssh-key  一路回车
cat ~/.ssh/id_rsa.pub



代码pull/push测试

复制项目地址



在本地工作机上,配置域名解析

vim /etc/hosts
172.19.0.111 gitlab.home.com

将代码clone到本机

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会报错



修改本机代码,push到gitlab端

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中将文件拉到本地

jenkins的安装 (version 2.73.3)

war包部署及web界面配置

安装好jdk8与tomcat,下载jenkins.war包,放在tomcat的webapp下,重启tomcat服务。配置好防火墙和selinux。

将jenkins的公钥添加到gitlab

jenkins服务器生成密钥

ssh-keygen
cat ~/.ssh/id_rsa.pub

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

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

访问jenkins的web界面 http://ip:8080/jenkins,cat该passwd文件,填写到下面的框中。

安装插件,install suggested plugins,后边还有额外安装一些插件.添加用户名密码,管理员为admin

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

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

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

配置maven插件

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不会报错。

配置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项目



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



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

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

1.先测试jenkins与gitlab连通没,在jenkins命令git clone 项目url 是否成功
2.确认访问令牌配好没
3.域名解析有没有

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



构建触发器

此处选择webhook的方式(此方式依赖于Gitlab 与 Gitlab Hook插件)。复制webhook url,待用



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



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

构建环境不用管

pre steps

Goals maven的打包命令



生成war包需要读取pom.xml里的配置,root pom.xml默认为该项目web界面里工作空间下的相对路径,即server里/root/.jenkins/workspace/项目名/pom.xml。这里就需要gitlab里的代码直接在该项目下,前面没有多余的目录。如下图1,而不是图2,项目下还有一层 目录。在jenkins上配置pom.xml时,把这个目录加在pom.xml文件前面也是不能识别该路径的

(注:很久之后重新编辑此博文,我想以上maven打包命令应该可以跟上-f 路径,大家可以试试)



build

设置构建后的邮件通知

构建后操作

构建后需要将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

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



配置完就可以构建了。

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

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

gitlab+jenkins+tomcat CI/CD 部署的更多相关文章

  1. docker + gitlab + jenkins 搭建 CI/CD 系统

    gitlab+jenkins+docker 计算机网络大全

  2. gitlab+jenkins+tomcat war包部署(此文有新版本)

    对本文进行格式整理,url: https://www.cnblogs.com/huandada/p/9969234.html 整个项目的框架为: 1.gitlab的安装(Centos7) 新建/etc ...

  3. Jenkins 配置CI/CD任务

    本文演示如何通过Jenkins创建CI/CD任务,部署一整套微服务体系结构,并运行在之前搭建的mini云平台上. 如果是初始尝试实践,可能需要参考 快速搭建云原生架构的实践环境 和 Jhipster技 ...

  4. 使用 Jenkins 搭建 CI/CD All In One

    使用 Jenkins 搭建 CI/CD All In One https://ci.jenkins.io/ https://www.jenkins.io/zh/ jobs pipelines refs ...

  5. Jenkins+GitLab+SonnarQube搭建CI/CD全流程

    1. CI/CD 1.1 CI - 持续集成 持续集成( Continuous integration , 简称 CI )指的是,频繁地(一天多次)将代码集成到主干.持续集成的目的就是让产品可以快速迭 ...

  6. 使用Docker方式部署Gitlab,Gitlab-Runner并使用Gitlab提供的CI/CD功能自动化构建SpringBoot项目

    1.Docker安装Gitlab,地址:https://www.cnblogs.com/sanduzxcvbnm/p/13814730.html 2.Docker安装Gitlab-runner,地址: ...

  7. 使用gitlab, jenkins搭建CI(持续集成)系统(1) -- 准备环境

    1. 环境设计 搭建一个从开发到测试知道发布上线可以自动换完成的CI系统.这个系统中包含4个环境. 开发(dev)环境: 码农使用. 测试(test)环境: 测试人员使用. 预发布(prepublis ...

  8. CentOS 7 Gitlab+Jenkins持续集成+自动化部署

    基于上次的环境<部署Gitlab+Jenkins持续集成环境> 来实现自动化部署 系统管理–>插件管理–>安装以下插件: Credentials Plugin(默认已经安装) ...

  9. Jenkins自动化CI CD流水线之1--介绍与安装

    第1章 大纲 CI/CD, DevOps介绍 Git安装与使用 Jenkins安装与使用 权限管理 参数化构建 Master-Slave 流水线(Pipeline) 邮件通知 应用案例 自动发布PHP ...

随机推荐

  1. django之setting配置汇总

    前面的随笔中我们经常会改setting配置也经常将一些配置混淆今天主要是将一些常见的配置做一个汇总. setting配置汇总 1.app路径 INSTALLED_APPS = [ 'django.co ...

  2. 开源流媒体服务器SRS学习笔记(4) - Cluster集群方案

    单台服务器做直播,总归有单点风险,利用SRS的Forward机制 + Edge Server设计,可以很容易搭建一个大规模的高可用集群,示意图如下 源站服务器集群:origin server clus ...

  3. CSS中margin边界叠加问题及解决方案

    你对CSS的margin边界叠加的概念是否了解,这里和大家分享一下,当一个元素出现在另一个元素上面时,第一个元素的底边界与第二个元素的顶边界发生叠加. CSS的margin边界叠加深度剖析 边界叠加简 ...

  4. OpenSceneGraphic 着色器中数组的应用【转】

    https://blog.csdn.net/zsq306650083/article/details/50533480 //osg的写法osg::ref_ptr<osg::StateSet> ...

  5. CDH下集成spark2.2.0与kafka(四十一):在spark+kafka流处理程序中抛出错误java.lang.NoSuchMethodError: org.apache.kafka.clients.consumer.KafkaConsumer.subscribe(Ljava/util/Collection;)V

    错误信息 19/01/15 19:36:40 WARN consumer.ConsumerConfig: The configuration max.poll.records = 1 was supp ...

  6. .NET/C# 资源

     .NET/C#  开源资源收集 Roslyn ---C# 开源编译器 iSpy免费的开源视频监控平台   https://github.com/ispysoftware/iSpy .NET Fram ...

  7. 修改Electron的libcc(libchromiumcontent)源码,重新编译electron, 设置event.isTrusted为true

    VPN非常注意: 编译的过程需要使用VPN, 否者chromium的源代码无法下载, 后面会出现总总问题 Electron的编译环境, 推荐使用物理机: win10 64位 英文版, 为了避免后期出现 ...

  8. EntityFramework.Extended 对EF进行扩展

    前言 Entity Framework 延伸系列目录 今天我们来讲讲EntityFramework.Extended 首先科普一下这个EntityFramework.Extended是什么,如下: 这 ...

  9. Kettle实现数据抽取、转换、装入和加载数据-数据转移ETL工具

    原文地址:http://www.xue51.com/soft/5341.html Kettle是来自国外的一款开源的ETL工具,纯java编写,可以在Window.Linux.Unix上运行,绿色无需 ...

  10. Xshell设置密钥登录CentOS6.5_64位(图文版)

    一.环境 CentOS6.5 64位 VMware 14 Pro XSHEEL 5 build 1333 宝塔Linux面板 二.生成XSHELL密钥 三.上传公钥到服务器,并配置 1.上传vCent ...