docker-compose 快速部署持续集成测试环境 Gitlab+Harbor+Jenkins pipeline 实现 tag run docker Images...
环境
测试部署主机IP:192.168.1.1
Jenkins主机IP:192.168.1.2 Harbor主机IP:192.168.1.3 Gitlab主机IP:192.168.0.10 系统信息: 系统:CentOS 7.5 内核:4.18.7-1.el7.elrepo.x86_64 Docker版本:18.09 docker-compose版本:1.23.1
有道笔记原文,为了防止复制粘贴出来的代码格式有误~~~~
所有主机的Docker安装方式 可用 ansible-roles 快速部署所有主机 https://github.com/gitDream/ansible-roles_jenkins_harbor_gitlab.git
wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repoyum install -y docker-cemkdir /etc/docker/ cat << EOF > /etc/docker/daemon.json { "registry-mirrors": ["https://registry.docker-cn.com"],"live-restore": true,"default-shm-size": "128M","max-concurrent-downloads": 10,"oom-score-adjust": -1000,"debug": false } EOF systemctl enable docker systemctl restart docker
安装Gitlab
参考这篇文章:
http://blog.51cto.com/bigboss/2129284
Docker方式安装:
https://github.com/JyBigBoss/docker-compose/blob/master/gitlab/docker-compose.yaml
安装Harbor
参考:
- http://blog.51cto.com/bigboss/2316525
docker 配https registry私有仓库的重点说明
- 生成ca 证书 给harbor 使用
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout ./server.key -out ./server.crt -subj "/CN=registry.lotbrick.com"
copydocker 客户端登入harbor 前导入自制Ca 证书位置 mkdir -p /etc/docker/certs.d/registry.lotbrick.com #registry.lotbrick.com 创建域名目录
mkdir -p /etc/docker/certs.d/registry.lotbrick.com
scp ./server.crt /etc/docker/certs.d/registry.lotbrick.com/ca.crt
systemctl daemon-reload systemctl restart dockerdocker login registry.lotbrick.com
- 安装Jenkins
yum install -y python-pip pip install docker-composecd $HOME && mkdir jenkins && cd jenkins wget https://raw.githubusercontent.com/JyBigBoss/docker-compose/master/jenkins/Dockerfile wget https://raw.githubusercontent.com/JyBigBoss/docker-compose/master/jenkins/docker-compose.yamldocker-compose up -d
Jenkins需要安装的插件
Gitlab Hook、Build Authorization Token Root、Publish Over SSH、Gitlab Authentication Gitlab、Git Parameter、Git Tag Message、Pipeline、docker-build-step、Docker Pipeline
创建git仓库
在web页面创建一个test仓库,并在在仓库中新建一个index.html文件
cd $HOME git clone git@192.168.0.10:yfg/test.git cd test/ cat << EOF > index.html <h1>Test 123</h1> EOF git add . git commit -m 'add index.html' git push#创建两个tag git tag v1 -m 'version:1' git push --tags git tag v2 -m 'version:2' git push --tags
在Harbor上创建一个test仓库
配置Jenkins
打开Jenkins的设置页面,配置Publish over SSH插件
创建一个流水线(pipeline)项目
node {stage(' Git clone ') {git branch: 'master', credentialsId: 'a4a81561-8bc0-426e-89f9-b4d4aa1925d6', url: 'git@192.168.0.10:yfg/test.git'env.check_to_tag="$TAG"sh '[ -n "${check_to_tag}" ] && git checkout ${check_to_tag} || { echo -e "切换至指定的tag的版本,tag:${check_to_tag} 不存在或为空,请检查输入的tag!" && exit 111; }'}stage("Create Dockerfile"){sh '''cat << EOF > Dockerfile FROM python:3.7.1-alpine RUN mkdir /test WORKDIR /test COPY ./ /test EXPOSE 8000 CMD ["python","-m","http.server"] EOF''' sh 'cat Dockerfile'}stage("Create docker-compose.yaml "){sh '''cat << EOF > docker-compose.yaml version: "2.4" services: http:image: registry.lotbrick.com/test/http:${check_to_tag}container_name: python-http_serverports:- "80:8000"restart: always EOF''' sh 'cat docker-compose.yaml'}stage('Build Image And Push to registry') {//withRegistry('仓库地址','jenkins凭据ID')docker.withRegistry('https://registry.lotbrick.com', '9ffa7ef5-38c6-49da-8936-ec596359be56'){//build当前目录(workspace)下的Dockerfiledef BuildImage = docker.build("registry.lotbrick.com/test/http:${check_to_tag}")//Push刚才Build出来的镜像 BuildImage.push()} } stage('Depoly'){//调用Publish Over SSH插件,上传docker-compose.yaml文件并且执行deploy脚本sshPublisher(publishers: [sshPublisherDesc(configName: 'jenkins_pipeline_test_deploy', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '/bin/bash /root/deploy/deploy.sh', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '/root/deploy', remoteDirectorySDF: false, removePrefix: '', sourceFiles: 'docker-compose.yaml')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])} }
生成流水线脚本的方法
Jenkins凭据ID获取方法
- 发布脚本:depoly.sh:放到要部署代码的主机的/root/deploy目录下
#!/bin/bashecho '正在更新版本......'cd /root/deployIMAGE_NAME='registry.lotbrick.com/test/http'DOCKER_TAG=`awk -F ':' '/.*image/{print $NF}' docker-compose.yaml`echo -e "\n"docker-compose pull && docker-compose up -dif [ "$?" == 0 ];thenecho '删除旧的image'OLD_IMAGE=`docker images | grep $IMAGE_NAME | awk '{print $2,$3}' | grep -v "${DOCKER_TAG}" |awk '{print $1}'`for i in $OLD_IMAGE;dodocker rmi http:$idoneelseecho "更新版本失败!!!"exit 111fi
测试发布
第一次发布
再来一次
#感觉没玩够,再传个代码测试一回cd $HOME git clone https://github.com/HFIProgramming/mikutap.git\cp -r mikutap/* test/ cd test git add . git commit -m 'add mikutap page' git tag v3 -m 'add mikutap page' git push --tags
转载于:https://www.cnblogs.com/python-diy/p/10381385.html
docker-compose 快速部署持续集成测试环境 Gitlab+Harbor+Jenkins pipeline 实现 tag run docker Images...相关推荐
- k8s和harbor的集成_爱威尔-基于kubernetes集群的项目持续集成(gitlab+harbor+Jenkins)安装...
这个算是基于kubernetes集群的项目持续集成的前导篇,先把这用环境搭建好我们后面就可以专注做基于k8s的docker化项目持续集成了. gitlab安装 https://about.gitlab ...
- 基于Jenkins快速搭建持续集成环境
看了园友张善友的博文,尝试成功.便有此作.原网址: 基于 Jenkins 快速搭建持续集成环境 天下事有难易乎?为之,则难者亦易矣:不为,则易者亦难矣. 首先要学会使用MSBuild构建脚本 附网址: ...
- 基于 Jenkins 快速搭建持续集成环境--转
源地址:http://www.ibm.com/developerworks/cn/java/j-lo-jenkins/ 持续集成是一种软件开发实践,对于提高软件开发效率并保障软件开发质量提供了理论基础 ...
- 基于 Jenkins 快速搭建持续集成环境
持续集成概述 什么是持续集成 随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题.尤其是近些年来,敏捷(Agile) 在软件工程领域 ...
- 基于Jenkins 快速搭建持续集成环境
2019独角兽企业重金招聘Python工程师标准>>> 持续集成概述 什么是持续集成 随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开 ...
- linux hudson svn,Hudson Maven SVN快速搭建持续集成环境
Maven 跨平台的项目管理工具 Apache组织中颇为成功的开源项目 服务于Java平台的项目构建,依赖管理和项目信息管理 持续集成 快速 高频率 自动 构建 所有源码 反馈 目前最流行的开源持续集 ...
- Docker——compose简述部署
前言 Consul是HashiCorp公司推出的开源工具,用于实现分布式系统的服务发现与配置: ●支持健康检查,允许存储键值对: ●基于Golong语言,可移植性强: ●支持ACL访问控制: 与Doc ...
- 快速部署PHP Web环境(docker nginx php mysql redis)
注:此项目已升级成 通用 docker 项目自动化部署脚本工具 先看最终效果,如下: 使用方式 debian/ubuntu/deepin: sudo wget -O /tmp/src.tar.gz h ...
- docker php-fpm 优化,利用docker-compose快速部署php-fpm+nginx环境
前言 "PHP是世界上最好的语言",这个大家应该都没有争议把:) 但是当你用php写完一个项目后,你会发现,如果要将项目部署到线上,光是nginx+php-fpm的环境部署就要花费 ...
最新文章
- Matlab实现图像边缘检测
- 转载:分享一下免费的ppt网站(好看,免费)
- batch spring 重复执行_一个3年老javaer竟然连Spring的事务管理都不知道,惊呆了
- _MSC_VER详细介绍
- None.org.apache.spark.api.python.PythonAccumulatorV2
- 【期望】【高斯消元】图上游走(金牌导航 期望-6)
- 2. python 参数个数可变的函数
- Unity3D 场景与C# Control进行结合
- 2022年2月国产数据库排行榜: OceanBase“三连增”重夺榜眼,GaussDB实现本月最大涨幅引期待...
- odoo10参考系列--ORM API 一(记录集、环境、通用方法和创建模型)
- 4个基本不等式的公式高中_写作 | 高中英语作文4个高分写作技巧
- BaiduMapsApiDemo报错:请在 DemoApplication.java文件输入正确的授权Key
- java web整合开发完全自学手册pdf_《JavaScript完全自学手册》PDF 下载
- .Net与DirectX结合制作泡泡屏保
- 前端des加密,后端des解密
- vue 服务器代码更新 浏览器页面不更新
- HTML图片打开新窗口
- Ubuntu8.04硬盘安装指南
- 初学编程者开始Revit 二次开发自学教程
- Ps/2遇到KVM,这时候有一种情况需要注意
热门文章
- [转帖]电源ac和dc有什么区别_dc ac分别代表什么
- 各种即时通讯工具简单介绍
- 微信公众平台那些词语限制
- sftp通信攻关——qt环境下使用c++实现
- 视频播放问题一:iframe嵌入视频和 https网站不支持HTTP资源问题解决
- Win10 安装 Ubuntu16.04 双系统及 Ubuntu 下常用软件的安装(2022.3更新)
- 关于c++ find返回值类型 与string::nops的使用的若干问题
- 四川教师计算机培训,四川省中小学教师信息技术应用能力提升培训研修计划.doc...
- python个人信息
- 大学生创业项目,上手简单。