对本文进行格式整理,url:html
https://www.cnblogs.com/huandada/p/9969234.htmllinux
整个项目的框架为:git
1.gitlab的安装(Centos7)web
新建/etc/yum.repos.d/gitlab-ce.repo,添加如下内容:vim
[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浏览器
安装步骤:tomcat
# 安装依赖包 bash
yum install curl openssh-server openssh-clients postfix cronie服务器
# 启动 postfix 邮件服务app
service postfix start
# 检查 postfix
chkconfig postfix on
# 安装 GitLab 社区版 ,安装git,使其支持git命令
yum install gitlab-ce git
# 初始化 GitLab
gitlab-ctl reconfigure
添加访问的 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
配置完就能够构建了。
通常第一次构建会报错,查看控制台输出,找报错缘由。
因为部署很复杂,过程过必定会报错,慢慢查缘由,必定只有把整个过程理解后,才会部署成功。这是个人心得。
本文参考文章连接: