一、环境配置

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实现持续集成自动化部署的更多相关文章

  1. Jenkins+Git+Gitlab+Ansible实现持续集成自动化部署动态网站(二)--技术流ken

    项目前言 在上一篇博客<Jenkins+Git+Gitlab+Ansible实现持续化集成一键部署静态网站(一)--技术流ken>中已经详细讲解了如何使用这四个工具来持续集成自动化部署一个 ...

  2. Jenkins+Git+Gitlab+Ansible实现持续集成自动化部署动态网站(7)

    项目前言 在上一篇博客<Jenkins+Git+Gitlab+Ansible实现持续化集成一键部署静态网站(一)–技术流ken>中已经详细讲解了如何使用这四个工具来持续集成自动化部署一个静 ...

  3. Jenkins+Git+Gitlab+Ansible实现持续集成自动化部署静态网站(一)--技术流ken

    前言 在之前已经写了关于Git,Gitlab以及Ansible的两篇博客<Git+Gitlab+Ansible剧本实现一键部署Nginx--技术流ken>,<Git+Gitlab+A ...

  4. Jenkins+Git+Gitlab+Ansible实现持续集成自动化部署静态网站(一)

    在之前已经写了关于Git,Gitlab以及Ansible的两篇博客<Git+Gitlab+Ansible剧本实现一键部署Nginx--技术流ken>,<Git+Gitlab+Ansi ...

  5. Jenkins+Git+Gitlab+Ansible实现持续集成自动化部署静态网站(6)

    前言 在之前已经写了关于Git,Gitlab以及Ansible的两篇博客<Git+Gitlab+Ansible剧本实现一键部署Nginx–技术流ken>,<Git+Gitlab+An ...

  6. jenkins+Git+Gitlab+Ansible实现持续集成自动化部署静态网站(二)

    引言:首先我们可以实现一键部署网站,但在实际生产环境网站部署完成之后,我们的开发隔三差五要修改下网站的内容,难道都要我们运维手动执行命令吗?没有一种方法使得开发人员修改完代码自己测试,部署上线呢,那这 ...

  7. Jenkins+Git+Gitlab+Ansible实现持续集成自动化部署静态网站

    环境准备 三台主机: 一台主机部署jenkins和作为ansible的管理主机 一台主机部署gitlab和ansible的节点1 一台主机为ansible的节点2 防火墙和apache服务关闭 第一步 ...

  8. Git+Gitlab+Ansible剧本实现一键部署动态网站(二)--技术流ken

    项目前言 之前已经写了一篇关于git和ansible的博客<Git+Gitlab+Ansible剧本实现一键部署Nginx--技术流ken>.关于git,gitliab,ansible在我 ...

  9. Git+Gitlab+Ansible剧本实现一键部署动态网站(5)

    项目前言 之前已经写了一篇关于git和ansible的博客<Git+Gitlab+Ansible剧本实现一键部署Nginx–技术流ken>.关于git,gitliab,ansible在我以 ...

随机推荐

  1. python文件操作:文件处理案例

    储存一个文件,文件上有多个用户名,密码,做一个认证的流程程序,首先创建一个文件,文件上输入多个用户名,及对应的密码,然后让客户输入用户名和密码,进行用户名和密码核对,如果输入正确,则的认证成功,bre ...

  2. 使用 jenkins 为 nginx 增加上下文

    每次需要在Nginx增加上下文,都需要添加如下两段 ​ server.conf upstream serverdownloadPage { server 10.11.19.6:3023; } ​ ht ...

  3. Git学习笔记(1)

    一.Git特点 1.直接快照,而非比较差异 Git只关心文件数据的整体是否发生变化,而不关心具体文件及其内容发生了那些变化.也就是说Git在保存文件时,每次只会在上一次版本基础上保存那些变化的文件,为 ...

  4. YII2.0.12兼容PHP7.2版本升级

    YII2.0.12兼容PHP7.2版本升级 报错信息: FastCGI sent in stderr: "PHP message: PHP Fatal error:  Cannot use ...

  5. Linux之more命令

    命令解释 more命令类似与cat命令,却比cat命令强大,它以全屏幕的方式按页显示文本文件的内容,支持vi中的关键字定位操作. 命令说明 more [选项] 文件.. 命令选项 -d    显示帮助 ...

  6. mysql8.0出现的2059 - authentication plugin 'caching_sha2_password' -navicat连接异常问题解决

    转载自:https://blog.csdn.net/qq_24664619/article/details/80263546 刚装了mysql8.0,用navicat登陆不了,会出现2059错误,只能 ...

  7. 前端每周清单第 49 期:Webpack 4 Beta 尝鲜,React Windowing 与 setState 分析,Web Worker 实战

    前端每周清单专注前端领域内容,以对外文资料的搜集为主,帮助开发者了解一周前端热点:分为新闻热点.开发教程.工程实践.深度阅读.开源项目.巅峰人生等栏目.欢迎关注[前端之巅]微信公众号(ID: fron ...

  8. Git 团队协作开发

    步骤一:进入别人github中的项目 步骤二: 步骤三: 修改 one.txt 或者 新增 文件 都可以 步骤四: 在提交时,要习惯 使用 git pull 命令,防止有人在你写代码时候,提交过一些东 ...

  9. Chrome报错提示Unchecked runtime.lastError: The message port closed before a response was received.

    经过查询,此错误是Chrome扩展插件引起的.由于Chrome修改了API接口,原来的请求被拦截.(Chrome 73 onwards disallows cross-origin requests ...

  10. HDU 6053 - TrickGCD | 2017 Multi-University Training Contest 2

    /* HDU 6053 - TrickGCD [ 莫比乌斯函数,筛法分块 ] | 2017 Multi-University Training Contest 2 题意: 给出数列 A[N],问满足: ...