热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Jenkins+Gitlab+Docker联动案例

Jenkins+Gitlab+Docker联动案例角色主机地址软件gitlab192.168.136.136:8080gitlab12.9jenkins192.168.1

Jenkins+Gitlab+Docker联动案例































角色主机地址软件
gitlab192.168.136.136:8080gitlab 12.9
jenkins192.168.136.140:8080jenkins 2.204.3
dcoker registry192.168.136.136:5050v2
deploy host192.168.136.136dcoker-ce 19.03.6

##基本环境部署关闭主机的selinux
配置静态ip地址
安装docker-ce环境

##192.168.136.136上使用docker安装gitlab(之前gitlab篇已经安装并且正在运行中)#gitlab容器启动的时候,映射主机端口8080到容器80,8443到容器443,2222到容器22端口

##192.168.136.136上使用容器仓库registry[root@yulong-git ~]# docker run -d -p 5000:5000 --restart always --privileged -v /opt/registry:/var/lib/registry --name registry-server registry:latest

##192.168.136.136上放行端口[root@yulong-git ~]# firewall-cmd --list-all
public (active)target: defaulticmp-block-inversion: nointerfaces: ens33sources: services: ssh dhcpv6-client http snmpports: 8443/tcp 2222/tcp 8080/tcp 5000/tcpprotocols: masquerade: noforward-ports: source-ports: icmp-blocks: rich rules:

##192.168.136.140上使用docker安装jenkins(之前jinkens持续集成篇已经安装并且正在运行中)#Jenkins容器启动的时候,映射主机端口8080到容器8080,50000到容器50000

##192.168.136.140放行端口[root@yulong-jenkins ~]# firewall-cmd --list-all
public (active)target: defaulticmp-block-inversion: nointerfaces: ens33sources: services: ssh dhcpv6-clientports: 8080/tcp 50000/tcpprotocols: masquerade: noforward-ports: source-ports: icmp-blocks: rich rules:

##gitlab上创建项目python-dev,属于development组,并建立develop分支。(之前已经创建了)

##开发人员将代码上传到仓库(Pipeline的Jenkinsfile文件)(192.168.136.136)[root@yulong-git ~]# mkdir long
[root@yulong-git long]# git init
初始化空的 Git 版本库于 /root/ss/.git/
[root@yulong-git long]# git remote add origin http://192.168.136.136:8080/root/python-dev.git
[root@yulong-git long]# git pull origin
Username for 'http://192.168.136.136:8080': root
Password for 'http://root@192.168.136.136:8080':
remote: Enumerating objects: 9, done.
remote: Counting objects: 100% (9/9), done.
remote: Compressing objects: 100% (6/6), done.
remote: Total 9 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (9/9), done.
来自 http://192.168.136.136:8080/root/python-dev* [新分支] develop -> origin/develop* [新分支] master -> origin/master
[root@yulong-git ss]# git checkout develop
分支 develop 设置为跟踪来自 origin 的远程分支 develop。
onfig --global push.default matching
[root@yulong-git long]# vim Jinkensfile
文件内容:
node {
stage('Build') {
checkout scm
docker.withRegistry('http://192.168.136.136:5000') {
def customImage = docker.build("yulong/lamp:latest", "./lamp")
customImage.push()
}
}
stage('depoly') {
sh '''
ssh root@192.168.136.136 'docker stop web | true' #第一次构建的时候不要写
ssh root@192.168.136.136 'docker rm web -f | true'#第一次构建的时候不要写
ssh root@192.168.136.136 'docker rmi #第一次构建的时候不要写192.168.154.50:5000/yulong/lamp:latest -f | true'#第一次构建的时候不要写
ssh root@192.168.136.136 'docker pull 192.168.136.136:5000/yulong/lamp:latest | true'
ssh root@192.168.136.136 'docker run -itd --name web -p 32768:80 192.168.136.136:5000/liyi888/lamp:latest'
'''
}
}[root@yulong-git long]# git add Jinkensfile
[root@yulong-git long]# git commit -m "Jinkensfile"
[develop a2f8227] Jinkensfile1 file changed, 1 insertion(+)create mode 100644 Jinkensfile
[root@yulong-git long]# git push -u origin develop

##然后创建lamp目录,也上传到gitlab[root@yulong-git long]# tree -c lamp/
lamp/
├── Dockerfile
├── run.sh
├── index.html
├── epel.repo
└── Centos-Base.repo0 directories, 5 files##Dockerfile文件内容:FROM centos:7.7.1908
MAINTAINER yulong
RUN rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest7.noarch.rpm
RUN rpm -ivh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm --force
ADD CentOS-Base.repo /etc/yum.repos.d/
ADD epel.repo /etc/yum.repos.d/
RUN yum install -y httpd httpd-devel
RUN yum install -y php70w php70w-mysql php70w-mbstring php70w-mcrypt php70w-gd php70w-imap
RUN yum install -y php70w-ldap php70w-odbc php70w-pear php70w-xml php70w-xmlrpc php70w-pdo
RUN sed -ri 's/#ServerName www.example.com:80/ServerName www.yulong.com/g' /etc/httpd/conf/httpd.confADD index.html /var/www/html/
ADD run.sh /run.sh
RUN chmod 775 /run.sh
EXPOSE 80
CMD ["/run.sh"]##Centos-Base.repo文件内容如下:[base]
name=CentOS-$releasever - Base - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
#released updates
[updates]
name=CentOS-$releasever - Updates - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7##epel.repo文件如下:
[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
baseurl=http://mirrors.aliyun.com/epel/7/$basearch
failovermethod=priority
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7##index.html是默认首页内容如下:

this is docker test!

##run.sh镜像默认启动脚本如下:#!/bin/sh
/usr/sbin/httpd -D DFOREGROUND
/bin/bash##上传到gitlab
[root@yulong-git long]# git pull origin
[root@yulong-git long]# git add lamp/
[root@yulong-git long]# git commit -m "lamp"
[root@yulong-git long]# git push origin develop

##192.168.136.140(jinkens上配置流水线)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DWnjHGv2-1595134274500)(https://s1.ax1x.com/2020/04/23/JwMe4x.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GIBc8o8y-1595134274501)(https://s1.ax1x.com/2020/04/23/JwMKgO.png)]

##配置ssh部署主机,在jinkens上生成一对密钥,然后将公钥通过ssh-copy-id将公钥拷贝到部署主机,务必能免密登录到192.168.154.136[root@yulong-jenkins ~]# ssh-keygen
[root@yulong-jenkins ~]# ssh-copy-id -i ./.ssh/id_rsa.pub root@192.168.136.136 -f

##添加全局凭证(首先安装一下ssh.hpi插件,要是配置中有ssh-remote就不需要了)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6HGJ9plU-1595134274502)(https://s1.ax1x.com/2020/04/23/JwQo6S.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Wi2Ifwim-1595134274503)(https://s1.ax1x.com/2020/04/23/JwQXYq.png)]

J0krGQ.png

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KwUfatlS-1595134274504)(https://s1.ax1x.com/2020/04/24/J0ACQA.png)]

##配置私有仓库客户端
两台主机上机均要配置信任私有仓库[root@yulong-git long]# vim /etc/docker/daemon.json
内容如下:
{"registry-mirrors": ["https://vohzpl6l.mirror.aliyuncs.com"],"insecure-registries": ["192.168.136.136:5000"]
}
[root@yulong-git long]# systemctl daemon-reload
[root@yulong-git long]# systemctl restart docker

##更新代码仓库,随便更新一个index.html文件的内容
#我先找到映射的逻辑卷
[root@yulong-jenkins var]# docker volume inspect jenkins-data
[{"CreatedAt": "2020-04-23T20:22:00+08:00","Driver": "local","Labels": null,"Mountpoint": "/var/lib/docker/volumes/jenkins-data/_data","Name": "jenkins-data","Options": null,"Scope": "local"}
][root@yulong-jenkins test-dev]# pwd
/var/lib/docker/volumes/jenkins-data/_data/workspace/test-dev
[root@yulong-jenkins test-dev]# ls
123 file1.md Jinkensfile lamp

##查看1
[root@yulong-jenkins .ssh]# docker exec -it jenkins-server /bin/bash
bash-4.4# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
yulong/lamp latest 2847fb7d7757 2 hours ago 834MB
192.168.136.136:5000/yulong/lamp latest 2847fb7d7757 2 hours ago 834MB
e8ed8243873b 3 hours ago 252MB
dac8438efed5 3 hours ago 252MB
jenkinsci/blueocean 1.22.0 cab59b2e05dc 3 days ago 566MB
centos latest 470671670cac 3 months ago 237MB
centos 7.7.1908 08d05d1d5859 5 months ago 204MB##查看2
[root@yulong-git .ssh]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
192.168.136.136:5000/yulong/lamp latest 2847fb7d7757 2 hours ago 834MB
jenkinsci/blueocean 1.22.0 cab59b2e05dc 3 days ago 566MB
gitlab/gitlab-ce latest 6597e56a80f3 6 days ago 1.92GB
registry latest 708bc6af7e5e 3 months ago 25.8MB
hello-world latest bf756fb1ae65 3 months ago 13.3kB

J0i5wT.jpg

###注意防火墙放行32768

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FfDkFRsy-1595134274505)(https://s1.ax1x.com/2020/04/24/J0iO61.png)]

##创建webhook,这是其固定语法http://my-jenkins-host/git/notifyCommit?url=git@gitlab.example.com:group/repository.git&delay=0sec

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6YMGisCA-1595134274505)(https://s1.ax1x.com/2020/04/24/J0EQ9e.png)]

##更新代码会自动触发构建[root@yulong-git long]# pwd
/root/long
[root@yulong-git long]# ls
123 file1.md Jinkensfile lamp
[root@yulong-git long]# vim lamp/index.html
[root@yulong-git long]# cat lamp/index.html

this is docker test!


this is docker test!


this is docker test!


this is docker test!


this is docker test!


this is docker test!


[root@yulong-git long]# git commit -m "auto push"
[develop 362b526] auto push
[root@yulong-git long]# git push origin develop
Username for 'http://192.168.136.136:8080': root
Password for 'http://root@192.168.136.136:8080':
Counting objects: 14, done.
Compressing objects: 100% (8/8), done.
Writing objects: 100% (8/8), 700 bytes | 0 bytes/s, done.
Total 8 (delta 5), reused 0 (delta 0)
remote:
remote: To create a merge request for develop, visit:
remote: http://192.168.136.136:8080/root/python-dev/-/merge_requests/new?merge_request%5Bsource_branch%5D=develop
remote:
To http://192.168.136.136:8080/root/python-dev.gite5fe2a2..362b526 develop -> develop

##去Jenkins流水线查看

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FDXNuw62-1595134274506)(https://s1.ax1x.com/2020/04/24/J0VtM9.png)]

To create a merge request for develop, visit:
remote: http://192.168.136.136:8080/root/python-dev/-/merge_requests/new?merge_request%5Bsource_branch%5D=develop
remote:
To http://192.168.136.136:8080/root/python-dev.git
e5fe2a2…362b526 develop -> develop


##去Jenkins流水线查看


[外链图片转存中...(img-FDXNuw62-1595134274506)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UsTzLA2h-1595134274506)(https://s1.ax1x.com/2020/04/24/J0VdVx.png)]

推荐阅读
  • 现象:[root@localhost~]#dockerrun-d-p9000:80centos:httpdbinsh-cusrlocalbinstart.shd5b2bd5a7bc ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • 如何查询zone下的表的信息
    本文介绍了如何通过TcaplusDB知识库查询zone下的表的信息。包括请求地址、GET请求参数说明、返回参数说明等内容。通过curl方法发起请求,并提供了请求示例。 ... [详细]
  • 本文探讨了容器技术在安全方面面临的挑战,并提出了相应的解决方案。多租户保护、用户访问控制、中毒的镜像、验证和加密、容器守护以及容器监控都是容器技术中需要关注的安全问题。通过在虚拟机中运行容器、限制特权升级、使用受信任的镜像库、进行验证和加密、限制容器守护进程的访问以及监控容器栈,可以提高容器技术的安全性。未来,随着容器技术的发展,还需解决诸如硬件支持、软件定义基础设施集成等挑战。 ... [详细]
  • mysql自动打开文件_让docker中的mysql启动时自动执行sql文件
    本文提要本文目的不仅仅是创建一个MySQL的镜像,而是在其基础上再实现启动过程中自动导入数据及数据库用户的权限设置,并且在新创建出来的容器里自动启动My ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 解决Cydia数据库错误:could not open file /var/lib/dpkg/status 的方法
    本文介绍了解决iOS系统中Cydia数据库错误的方法。通过使用苹果电脑上的Impactor工具和NewTerm软件,以及ifunbox工具和终端命令,可以解决该问题。具体步骤包括下载所需工具、连接手机到电脑、安装NewTerm、下载ifunbox并注册Dropbox账号、下载并解压lib.zip文件、将lib文件夹拖入Books文件夹中,并将lib文件夹拷贝到/var/目录下。以上方法适用于已经越狱且出现Cydia数据库错误的iPhone手机。 ... [详细]
  • 本文介绍了Linux系统中正则表达式的基础知识,包括正则表达式的简介、字符分类、普通字符和元字符的区别,以及在学习过程中需要注意的事项。同时提醒读者要注意正则表达式与通配符的区别,并给出了使用正则表达式时的一些建议。本文适合初学者了解Linux系统中的正则表达式,并提供了学习的参考资料。 ... [详细]
  • 大坑|左上角_pycharm连接服务器同步写代码(图文详细过程)
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了pycharm连接服务器同步写代码(图文详细过程)相关的知识,希望对你有一定的参考价值。pycharm连接服务 ... [详细]
  • 现在比较流行使用静态网站生成器来搭建网站,博客产品着陆页微信转发页面等。但每次都需要对服务器进行配置,也是一个重复但繁琐的工作。使用DockerWeb,只需5分钟就能搭建一个基于D ... [详细]
  • 在Jenkinsfile中运行映像时如何传递 ... [详细]
author-avatar
清洁剂没看见家门口_200
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有