环境规划

主机分配

  • 192.168.2.139 : gitlab
  • 192.168.2.141 : jenkins
  • 192.168.2.142 : haproxy01
  • 192.168.2.143 :haproxy02
  • 192.168.2.144 :tomcat01
  • 192.168.2.145 : tomcat02

    各节点环境配置

    安装一些使用的工具包
[root@ansible ~]# ansible all -m shell -a 'yum install vim gcc gcc-c++ wget net-tools lrzsz iotop lsof iotop bash-completion -y'
[root@ansible ~]# ansible all -m shell -a 'yum install curl policycoreutils openssh-server openssh-clients postfix -y'

安装epel源

ansible all -m shell -a 'wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo'

禁用并关闭防火墙

[root@ansible ~]# ansible all -m shell -a 'systemctl disable firewalld'
[root@ansible ~]# ansible all -m shell -a 'systemctl stop firewalld'

禁用selinux

[root@ansible ~]# ansible all -m shell -a 'sed -i ”/SELINUX/s/enforcing/disabled/“ /etc/selinux/config'
[root@ansible ~]# ansible all -m shell -a 'setenforce 0'

安装gitlab服务

下载gitlab包:百度云盘下载:https://pan.baidu.com/s/1OrYy3Gx8mXcezH_JDubU-A 密码:sk73

下载的包文件存放在/usr/local/src目录下

  • 安装
[root@gitlab src]# yum localinstall gitlab-ce-8.13.5-ce.0.el7.x86_64.rpm -y
  • 修改配置文件/etc/gitlab/gitlab.rb
[root@gitlab src]# vim /etc/gitlab/gitlab.rb
external_url 'http://192.168.2.139' #访问地址:可以写主机名或ip地址
#配置邮件通知(添加账号通知等,可以不写)
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.163.com"
gitlab_rails['smtp_port'] = 25
gitlab_rails['smtp_user_name'] = "mail_name@163.com"
gitlab_rails['smtp_password'] = "password"
gitlab_rails['smtp_domain'] = "163.com"
gitlab_rails['smtp_authentication'] = :login
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = false
gitlab_rails['gitlab_email_from'] = "mail_name@163.com"
user["git_user_email"] = "mail_name@163.com"
  • 修改配置文件后执行重载指令

    重载指令执行需要一段时间
[root@gitlab ~]# gitlab-ctl reconfigure

上面的指令执行完成后可以使用gitlab-ctl status指令查看git依赖的服务

[root@gitlab ~]# gitlab-ctl status
run: gitlab-workhorse: (pid 3468) 37s; run: log: (pid 3295) 63s
run: logrotate: (pid 3382) 55s; run: log: (pid 3381) 55s
run: nginx: (pid 3342) 61s; run: log: (pid 3341) 61s
run: postgresql: (pid 3027) 112s; run: log: (pid 3026) 112s
run: redis: (pid 2890) 118s; run: log: (pid 2889) 118s
run: sidekiq: (pid 3250) 69s; run: log: (pid 3249) 69s
run: unicorn: (pid 3195) 71s; run: log: (pid 3194) 71s

此时就可以使用浏览器web界面来访问git了,使用gitlab主机地址直接访问即可

登录前先设置密码



登录后,需要将默认的用户注册功能取消,因为用户是由管理员定义分配的。



点击右上角扳手图标进入下面的界面,创建用户设置密码,用户组,项目等



创建一个测试项目,用在本地测试

本地安装git客户端

[root@gitlab ~]# yum install git -y

本地测试版本管理

  • 将测试项目clone到本地的当前目录下
[root@gitlab testdir]# git clone http://192.168.2.139/myweb/testweb.git
Cloning into 'testweb'...
Username for 'http://192.168.2.139': yufu
Password for 'http://yufu@192.168.2.139':
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
  • 查看内容
[root@gitlab testdir]# ls
testweb
[root@gitlab testdir]# cat testweb/README.md
test111
  • 修改内容后提交

    在原来的文件中添加了一行新内容

    克隆的文件修改后提交前,要将文件添加git add到本地,并且提交git commit声明操作,然后在将最新文件推送到git服务端上
[root@gitlab testweb]# git add README.md
[root@gitlab testweb]# git commit -m "add new line" #提示错误:提示信息给出了解决办法
Run
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
to set your account's default identity.
Omit --global to set the identity only in this repository.

根据提示执行指令

[root@gitlab testweb]# git config --global user.email "136423119@qq.com"
[root@gitlab testweb]# git config --global user.name "yufu"

重新提交

[root@gitlab testweb]# git commit -m "add new line"
[master c62845d] add new line
1 file changed, 2 insertions(+), 1 deletion(-)

执行git push

[root@gitlab testweb]# git push
#需要验证用户密码
Username for 'http://192.168.2.139': yufu
Password for 'http://yufu@192.168.2.139':
Counting objects: 5, done.
Writing objects: 100% (3/3), 250 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To http://192.168.2.139/myweb/testweb.git
cc5ab3e..c62845d master -> master

此时到git上查看文件内容已经发生了更改

本地修改内容执行commit提交后,并没有真正条到git服务端,只有执行git push后才真正同步

其他常用git 指令

git config --global user.name “name“ #设置全局用户名,可以非真实账户
git config --global user.email xxx@xx.com #设置全局邮箱,可以非真实邮箱
git config --global –list #列出用户全局设置
git add index.html #添加文件到暂存区
git commit -m “11“ #提交文件到工作区
git status #查看工作区的状态
git push #提交代码到服务器
git pull #获取代码到本地
git log #查看操作日志
vim .gitignore #定义忽略文件
git reset --hard HEAD^ #git版本回滚, HEAD为当前版本,加一个^为上一个,^^为上上一个版本
git reflog # #获取每次提交的ID,可以使用--hard根据提交的ID进行版本回退
git reset --hard 5ae4b06 #回退到指定id的版本
# git branch #查看当前所处的分支
git checkout -- file #从服务器更新某个那文件覆盖本地的文件

安装Jenkins

jenkins需要依赖java环境,因此要安装jdk,从本地上传安装包进行安装,jenkins服务上的jdk可以直接使用rpm包安装

jenkins:https://pan.baidu.com/s/1lEBWD9OKZEZiOAjn4ZM57A 密码:up81

JDK:https://pan.baidu.com/s/1KA99fCN7e7Sx9IfBq8c7aA 密码:3r3e

[root@jenkins ~]# yum install jenkins-2.27-1.1.noarch.rpm jdk-8u111-linux-x64.rpm -y

jenkins安装后的配置文件在/etc/sysconfig/jenkins

- 启动jenkins

[root@jenkins ~]# systemctl start jenkins

jenkins启动时会创建一个用户和密码,在日志中可以找到,用户使用该信息登录

  • 查看日志中的信息如下:
[root@jenkins ~]# cat /var/log/jenkins/jenkins.log
Jenkins initial setup is required. An admin user has been created and a password gen![](http://gudaoyufu.com/wp-content/uploads/2018/08/clonetest.png)erated.
Please use the following password to proceed to installation:
ea02cbe6a0364330942bed70e7d8198f
This may also be found at: /var/lib/jenkins/secrets/initialAdminPassword

jenkins服务启动后就可以访问web页面了,使用刚才日志里面的密码进行登录 使用ip:8080 进行登录



确认后会进入联网状态,jenkins是基于插件方式工作的,安装时要安装很多插件,有两种安装方式:一种是自定义插件安装,一种是使用默认插件安装,这里选择使用默认的安装方式,通常在安装插件过程中会有很多插件安装失败,可以在后面将安装失败的插件导入进来,或者安装后进行选择安装插件也可以。



安装插件的过程比较长,耐心等待

【注意:如果界面一直停留在上图中,那么是卡住了,重新开个页面再访问即可,重新访问后选择跳过继续下面的操作】

重新访问后的页面如下:选择跳过继续配置





设置管理员用户名密码等信息



其他信息先可以跳过,就可以进入到配置界面了

解决插件安装失败问题

有很多插件没有安装成功,可以将相应的插件下载到本地,然后导入到jenkins插件目录

jenkins安装插件的目录在/var/lib/jenkins/plugins下;

下载插件:https://pan.baidu.com/s/1_pMrHzThiqZ93x9K6z5_Fw 密码:sxcu

将插件压缩包传到jenkins的插件目录解压,并修改属主属组

[root@jenkins plugins]# tar xvf jenkins_plugin.tar.gz
[root@jenkins plugins]# chown -R jenkins:jenkins ./
[root@jenkins plugins]# mv jenkins_plugin.tar.gz /opt/ #移走压缩包
  • 重启jenkins服务
[root@jenkins plugins]# systemctl restart jenkins

导入插件后可能还会有少数插件不可用,如果使用不到相应功能可以不用安装,如果将来需要使用新的插件可以通过从网上下载后导入的方式进行,也可以在线安装。

插件下载地址:http://updates.jenkins-ci.org/download/plugins/

gitlab和gitlab Hook Plugin插件

  • 确认gitlab和gitlab Hook Plugin两个关键插件是否安装,没有安装则可以在线安装

    这两个插件很重要,gitlab是从gitlab服务器端获取代码的插件,gitlab Hook Plugin 是触发jenkins构建项目的插件,如果没有这个插件,那么未经测试的代码直接就发布到生产环境中去了

配置jenkins和gitlab关联

jenkins要从gitlab上获取代码,因此两者之间要基于key认证,将jenkins生成的公钥配置在gitlab中,gitalb指定某个用户对某个项目有操作权限。

  • 在gitlab上新建一个用户xiaoming,他属于myweb组



    后面在jenkins上要使用xiaoming这个用户来进行测试发布
  • jenkins上生成秘钥,将公钥复制到gitlab中的myweb项目中
[root@jenkins ~]# cat ~/.ssh/id_rsa.pub
#复制不要有空格,不要有转行符,要写在一行,用记事本编辑
ssh-rsa
AAAAB3NzaC1yc2EAAAADAQABAAABAQCjcEidAzdo3tdOXzVFyhLz2OH8q5WnIA3Rp1tWq/EGWHTcyxfw2orL+hRI3iJ41UoGZ2rvu/giglexL1uFyfIDxrSEarqTpnB6dfD6eT+n5sBRRDxdhHmmLxdCocpKeTYa/HaqTxibxiCgo1J9806SSVECAs0PJrjeLEETTpGAhbiyrpOkk1eWDfHa3U/qyaghyIaWNY0nSr5Q61/7OQ53XkYdQmCo5Q6ITmZvV0jCNvpeDNK+yvF83N2sdy/tV7b1hnMi7W0OLzFlrwOcuWQdDZEYdWRqO8R0XUZKBZTyp9hLivqBkbaaFzsPCubjDD/fPYelrznFmAH/4WxGOocn root@jenkins
  • 在gitlab的project中,找到Deploy keys,将上面jenkins的公钥加入到上面

  • jenkins测试用ssh的方式向gitlab拉取文件
[root@jenkins mnt]# git clone git@192.168.2.139:myweb/testweb.git
Cloning into 'testweb'...
The authenticity of host '192.168.2.139 (192.168.2.139)' can't be established.
ECDSA key fingerprint is SHA256:KEONIDsIh3vnCDC9A8xDVvqr6QvSEdfCSEal1qaP95s.
ECDSA key fingerprint is MD5:f7:bc:00:eb:6e:fe:9e:c2:8b:0a:98:d3:47:1c:9b:4c.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.2.139' (ECDSA) to the list of known hosts.
remote: Counting objects: 12, done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 12 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (12/12), done.
[root@jenkins mnt]# ls
testweb
#测试正常后将该目录删除了

jenkins通过配置用户拉取代码默认会保存在/var/lib/jenkins/workspace/目录下

  • 将jenkins私钥配置到jenkins的web服务中,(gitlab放公钥,jenkins放私钥)



    进入之后点击“Add Credentials”添加私钥:如下图,点击OK保存(私钥太长不贴出来了)



    至此jenkins与gitlab关联和配置就做好了,接下来就可以在jenkins中构建项目了,通常我们构建一个自由风格的项目



    项目的构建工作主要就在这里配置,有很多配置项

    配置源码管理,指定从哪里拉取代码



    保存后返回首页就可以看到刚才创建的项目,可以构建项目测试看一下



    构建完后可以查看构建过程中的信息状态,看看是构建成功还是失败



    可以看到输出信息中最后一行提示为seccess



    在jenkins服务端查看拉取的内容
[root@jenkins ~]# cd /var/lib/jenkins/workspace/test-demo
[root@jenkins test-demo]# ls
README.md

jenkins部署记录的更多相关文章

  1. 禅道、jenkins部署记录

    禅道部署1.检查你linux系统的位数(uname -a)2.下载对应位数的禅道包3.通过xftp工具将禅道包拷贝到虚拟机的/opt目录4.tar 对禅道包进行解压5.改配置:vi /opt/zbox ...

  2. jenkins配置记录(1)--添加用户权限

    前一阵子在线上部署了一套jenkins环境,作为线上代码发布平台使用.部署记录:http://www.cnblogs.com/kevingrace/p/5651427.html 下面重点记录下jenk ...

  3. Jenkins部署net core小记

    作为一个不熟悉linux命令的neter,在centos下玩Jenkins真的是一种折磨啊,但是痛并快乐着,最后还是把demo部署成功!写这篇文章是为了记录一下这次部署的流程,和心得体会. 网上很多资 ...

  4. Jenkins部署Python项目实战

    一.背景 我们工作中常用Jenkins部署Java代码,因其灵活的插件特性,例如jdk,maven,ant等使得java项目编译后上线部署一气呵成,同样对于脚本语言类型如Python上线部署,利用Je ...

  5. Linux下rsyslog日志收集服务环境部署记录【转】

    rsyslog 可以理解为多线程增强版的syslog. 在syslog的基础上扩展了很多其他功能,如数据库支持(MySQL.PostgreSQL.Oracle等).日志内容筛选.定义日志格式模板等.目 ...

  6. jenkins部署java项目

    #########################################jenkins部署#################################3 一.jenkins是什么? J ...

  7. Jenkins持续集成(下)-Jenkins部署Asp.Net网站自动发布

    环境:Windows 2008 R2.Jenkins2.235.1.Visual Studio 2017: 概要 前面写过一篇文章,<自动发布-asp.net自动发布.IIS站点自动发布(集成S ...

  8. 跨平台运行 Rafy 首次部署记录

    一直想在 Linux 上使用 MONO 试试运行 Rafy,最近因为业务需要,总算是真正地试验了一次.下面是本次部署记录的一些要点. Linux 这次部署,我是和两位同事一起来试验的.由于我们对 Li ...

  9. Jenkins部署配置简介

    前段时间研究了一下自动化测试,因而接触到了Jenkins,今天有时间进行一下Jenkins部署配置相关知识的总结分享 前言:由于本次只是实验性研究,采用Windows环境,因此Jenkins可以通过下 ...

随机推荐

  1. PAT 1024 Palindromic Number

    #include <cstdio> #include <iostream> #include <cstdlib> #include <algorithm> ...

  2. lxml模块(应用xpath技术)

    一.lxml介绍 第三方库lxml是第一款表现出高性能特征的python xml库,天生支持Xpath1.0.XSLT1.0.定制元素类,甚至python风格的数据绑定接口.lxml是通过Cpytho ...

  3. 2018.10.17NOIP模拟赛解题报告

    心路历程 预计得分:\(100 + 100 +100\) 实际得分:\(100 + 100 + 60\) 辣鸡模拟赛.. 5min切掉T1,看了一下T2 T3,感觉T3会被艹爆因为太原了.. 淦了20 ...

  4. EBS登陆界面IE显示异常

    使用在IE浏览登陆EBS时: 在登陆界面,登录和取消的按钮显示异常: 在进入HOME界面时,显示的职责全为undefined. 原因: 由于IE版本的兼容性. 解决方法: 浏览器 菜单->工具- ...

  5. 【Linux】Core dump故障分析

    引入: Q:如果一个程序运行3天后才会出错,这个时候难道需要我们一直用GDB调试程序3天吗? A:答案当然是否定的. 我们有更厉害的工具--Core dump 一.Coredump定义 Core Du ...

  6. 《ArcGIS Runtime SDK for Android开发笔记》

    开发笔记之基础教程 ArcGIS Runtime SDK for Android 各版本下载地址 <ArcGIS Runtime SDK for Android开发笔记>——(1).And ...

  7. Hadoop ->> HIVE

    HIVE的由来: 最初由Facebook基于HDFS开发出来的一套数据仓库工具. HIVE可以干什么? HIVE可以将已经结构化的数据映射成一张表,然后可以使用HIVE语言像写T-SQL一样查询数据. ...

  8. nginx配置+uwsgi+负载均衡配置

    nginx静态文件配置 location /static{ alias /var/www/myApp/static; } sudo mkdir -vp /var/www/myApp/static/ s ...

  9. Qt 窗口移动实现

    很多人觉得系统自带的标题栏太丑了,想要自绘一个标题栏,去掉了系统自带的标题栏后,就需要自己实现窗口移动,下面的代码就是实现窗口移动. widget.h #ifndef WIDGET_H #define ...

  10. Orchard Core 文档翻译 (四)CMS ModulesTitle (OrchardCore.Title)

    Title (OrchardCore.Title) 标题模块提供Title Part ,允许用户定义内容项的标题.它还定义了ContentItemMetadata方面的DisplayText属性 Th ...