jenkins+git+gitlab+ansible实现持续集成自动化部署
一、环境配置
192.168.42.8部署gitlab,节点一
192.168.42.9部署git,Jenkins,ansible服务器
192.168.42.10节点二
二、操作演示
①gitlab创建新的nginx项目
创建目录及克隆
[root@localhost ~]# mkdir nn
[root@localhost ~]# cd nn
[root@localhost nn]# git clone http://192.168.42.8/root/nginx.git
Cloning into 'nginx'...
warning: You appear to have cloned an empty repository.
[root@localhost nn]# ls
nginx
[root@localhost nn]# cd nginx/
[root@localhost nginx]# ls -a
. .. .git
②发送密钥
[root@localhost nginx]# ssh-keygen
[root@localhost nginx]# ssh-copy-id 192.168.42.8
[root@localhost nginx]# ssh-copy-id 192.168.42.10
③创建roles相关目录,并编写相关文件
1.创建roles目录
[root@localhost nginx]# mkdir roles/nginx/{files,template,vars,tasks} -p
2.编写vars文件
[root@localhost nginx]# vim roles/nginx/vars/main.yaml
[root@localhost nginx]# cat roles/nginx/vars/main.yaml
conn:
host_user: root
por:
docu_root: /var/www/html
3.复制nginx至template下
[root@localhost nginx]# cp /etc/nginx/nginx.conf roles/nginx/template/nginx.conf.j2
4.编辑nginx.conf,修改变量
[root@localhost nginx]# vim roles/nginx/template/nginx.conf.j2
user {{ host_user }};
worker_connections {{ conn }};
listen {{ por }};
root {{ docu_root }};
5.编辑tasks文件
[root@localhost nginx]# cat roles/nginx/tasks/main.yaml
- template: src=roles/nginx/template/nginx.conf.j2 dest=/etc/nginx/nginx.conf
- yum: name=nginx state=present
- service: name=nginx state=restarted
- copy: src=roles/nginx/files/index.html dest=/var/www/html
6.编写测试文件
[root@localhost nginx]# echo 'I will success' >> roles/nginx/files/index.html
[root@localhost nginx]# ls roles/nginx/files/
index.html
7.编写清单文件
[root@localhost nginx]# cat inventory/jams
[jams]
192.168.42.8
192.168.42.10
8.编写剧本
[root@localhost nginx]# cat jams.yaml
- hosts: all
roles:
- nginx
9.模拟执行剧本
[root@localhost nginx]# ansible-playbook -C -i inventory/jams jams.yaml
[root@localhost nginx]# ansible-playbook -i inventory/jams jams.yaml
10.提交
[root@localhost nginx]# git add .
[root@localhost nginx]# git commit -m v1
[root@localhost nginx]# git push -u origin master
jenkins 实现持续集成
经过上面的一些操作之后,我们已经完成了静态网站的部署,以及代码的上传
但是发现还是每次执行需要输入命令等
现在我们就使用jenkins来实现持续化部署
第一步:jenkins中创建任务
创建了一个自由风格的软件项目
项目名称为item7
第二步:添加源码管理信息
这里的url就是你的项目的地址(即gitlab的仓库链接地址)
下面的凭证输入之前添加的全局凭据的账号和密码。

用脚本构建,cd到workspace下。
创建的bubu文件以及此次的任务名目录(任务名是一个worksapce下的目录)都会在workspace目录下。
可以看到我的任务脚本内执行ansible时并没有指定清单inventory/test 这是因为我选择了在/etc/ansible/hosts里面配置主机信息,这也是一种方法。
三:选择立即构建执行任务。
可能会碰到以下报错:

1)这里的失败原因是因为运行jenkins程序的是jenkins用户,我们连接节点的秘钥是root的,所以现在连接不上
打开配置文件/var/lib/jenkins 将jenkins用户改为root用户即可。
2)有时候报错时因为各主机之间的时间不同步,使用ntpdate同步时间后再次尝试。
3)有时候部署gitlab的节点无法启动nginx服务这是因为gitlab会自动启动nginx,使用gitlab-ctl stop nginx,然后再启动即可。
4)更有时候部署gitlab的ip换了,但是仓库的链接地址还是没变,这在gitlab网页上不好修改,我们在做git clone克隆的时候以及用gitlab做持续集成的时候就需要自己手动修改。
5)如果做jenkin持续集成构建时报错 playbook xxx not found (找不到剧本)
或者其中一台节点无法重启nginx服务
在部署jenkins服务的主机上提交推送文件给gitlab仓库
然后试试关闭防火墙和重启jenkins服务。
6)如果报错找不到repository或者master分支,这是因为gitlab创建新项目的时候没有创建搭建本地仓库。
四:如果构建成功的话,可以去linux下的/var/lib/jenkins/workspace/下去查看是否含有bubu文件。
来证明gitlab+ansible+jenkins的持续集成实验成功。
jenkins+git+gitlab+ansible实现持续集成自动化部署的更多相关文章
- Jenkins+Git+Gitlab+Ansible实现持续集成自动化部署动态网站(二)--技术流ken
项目前言 在上一篇博客<Jenkins+Git+Gitlab+Ansible实现持续化集成一键部署静态网站(一)--技术流ken>中已经详细讲解了如何使用这四个工具来持续集成自动化部署一个 ...
- Jenkins+Git+Gitlab+Ansible实现持续集成自动化部署动态网站(7)
项目前言 在上一篇博客<Jenkins+Git+Gitlab+Ansible实现持续化集成一键部署静态网站(一)–技术流ken>中已经详细讲解了如何使用这四个工具来持续集成自动化部署一个静 ...
- Jenkins+Git+Gitlab+Ansible实现持续集成自动化部署静态网站(一)--技术流ken
前言 在之前已经写了关于Git,Gitlab以及Ansible的两篇博客<Git+Gitlab+Ansible剧本实现一键部署Nginx--技术流ken>,<Git+Gitlab+A ...
- Jenkins+Git+Gitlab+Ansible实现持续集成自动化部署静态网站(一)
在之前已经写了关于Git,Gitlab以及Ansible的两篇博客<Git+Gitlab+Ansible剧本实现一键部署Nginx--技术流ken>,<Git+Gitlab+Ansi ...
- Jenkins+Git+Gitlab+Ansible实现持续集成自动化部署静态网站(6)
前言 在之前已经写了关于Git,Gitlab以及Ansible的两篇博客<Git+Gitlab+Ansible剧本实现一键部署Nginx–技术流ken>,<Git+Gitlab+An ...
- jenkins+Git+Gitlab+Ansible实现持续集成自动化部署静态网站(二)
引言:首先我们可以实现一键部署网站,但在实际生产环境网站部署完成之后,我们的开发隔三差五要修改下网站的内容,难道都要我们运维手动执行命令吗?没有一种方法使得开发人员修改完代码自己测试,部署上线呢,那这 ...
- Jenkins+Git+Gitlab+Ansible实现持续集成自动化部署静态网站
环境准备 三台主机: 一台主机部署jenkins和作为ansible的管理主机 一台主机部署gitlab和ansible的节点1 一台主机为ansible的节点2 防火墙和apache服务关闭 第一步 ...
- Git+Gitlab+Ansible剧本实现一键部署动态网站(二)--技术流ken
项目前言 之前已经写了一篇关于git和ansible的博客<Git+Gitlab+Ansible剧本实现一键部署Nginx--技术流ken>.关于git,gitliab,ansible在我 ...
- Git+Gitlab+Ansible剧本实现一键部署动态网站(5)
项目前言 之前已经写了一篇关于git和ansible的博客<Git+Gitlab+Ansible剧本实现一键部署Nginx–技术流ken>.关于git,gitliab,ansible在我以 ...
随机推荐
- mysql服务启动失败
#!/bin/bash . /etc/rc.d/init.d/functions MPORT=`netstat -atnlp | grep 3306| wc -l` MPROC=`ps ax | gr ...
- Linux用户组管理及用户权限3
用户.组管理命令 安全上下文: 进程以其发起者的身份运行: 进程对文件的访问权限,取决于发此进程的用户的权限 系统用户:为了能够让那些后台进程或服务类进程以非管理员 ...
- ios h5 长按时出现黑色透明遮罩
html,body{-webkit-text-size-adjust: 100%;-webkit-tap-highlight-color: rgba(0, 0, 0, 0);}
- 【线段树哈希】「Balkan OI 2016」Haker
1A海星 题目大意 给你一个长度为 $n$ ,由小写字母构成的字符串 $S$ 和 $Q$ 个操作,每个操作是以下 3 种之一: 1 x y k :询问当前字符串从位置 $x$ 到 $y$ 的子串与从位 ...
- Newnode's NOI(P?)模拟赛 第二题 dp决策单调优化
其实直接暴力O(n3)DP+O2O(n^3)DP+O_2O(n3)DP+O2优化能过- CODE O(n3)O(n^3)O(n3) 先来个O(n3)O(n^3)O(n3)暴力DP(开了O2O_2O2 ...
- 使用Apache Curator管理ZooKeeper(转)
Apache ZooKeeper是为了帮助解决复杂问题的软件工具,它可以帮助用户从复杂的实现中解救出来. 然而,ZooKeeper只暴露了原语,这取决于用户如何使用这些原语来解决应用程序中的协调问题. ...
- Python之threading模块的使用
作用:同一个进程空间并发运行多个操作,专业术语简称为:[多线程] 1.任务函数不带参数多线程 #!/usr/bin/env python # -*- coding: utf-8 -*- import ...
- Java 代码的精优化
一.避免使用BigDecimal(double) BigDecimal(double) 存在精度损失风险,在精确计算或值比较的场景中可能会导致业务逻辑异常. 反例: // BigDecimal 反例 ...
- SQL Server、SSMS的单独安装
喜欢尝新版本的,可以单独安装数据库.界面管理软件. 不喜欢折腾的可以只安装SQL Server(全选安装,自带界面管理工具) 1.SQL Server,下载地址https://www.microsof ...
- BZOJ 2976: [Poi2002]出圈游戏 Excrt+set
人数很少,可以直接用 $set$ 来模拟人的情况. 然后就能得到若干个方程,用 $excrt$ 进行合并即可. #include <set> #include <cmath> ...