Docker学习-jenkins+github实现持续集成和部署
ChuanGoing 2019-12-15
上一篇介绍了docker环境搭建,本篇继续深入,结合jenkins利用docker-compose容器编排简单介绍下如何实现个人学习的持续集成/部署。
本篇学习曲线:
1.安装/运行jenkins容器
2.asp.net core web项目配置
3.jenkins配置github代码管理
4.示例演示
安装/运行jenkins容器
1.登录服务器运行命令,拉取jenkins镜像(注意jenkins tag):
docker pull jenkins/jenkins
启动jenkins容器:
docker run -d --name jenkins -p : -p : -v /root/jenkins_home:/var/jenkins_home -v /usr/bin/docker:/bin/docker -v /var/run/docker.sock:/var/run/docker.sock -v /usr/local/bin/docker-compose:/bin/docker-compose jenkins/jenkins
上面命令稍作解释:-d标识后台运行,-name标识镜像名,-p指定主机端口-容器内部端口映射,-v标识主机目录-容器卷映射(将容器目录挂载到主机目录,以便持久化数据)
注意我这里-v /var/run/docker.sock:/var/run/docker.sock命令实现容器内部响应docker命令,详细说明请看关于/var/run/docker.sock
2.输入服务器ip+jenkins端口

jenkins容器运行后,第一次使用admin账号登录,admin密码可以在:/容器挂载路径/secrets/initialAdminPassword文件中查看。
登录后就是选择默认模式安装插件,等待插件安装完成后自动进入页面(如因网速等原因导致插件安装失败,去系统管理-插件管理手动安装即可)
进入到jenkins主页:

asp.net core web项目配置
1.新建asp.net core web项目并上传至github仓储
2.配置jenkins/github webhook,使得有代码提交到github后自动触发消息发送订阅目标
jenkins关联github webhook配置请参考:https://www.jianshu.com/p/07b60b788088
jenkins配置github代码管理
登录jenkins,新建自由风格软件项目

源码管理设置项目地址即访问凭证

勾选如上选项(github代码提交自动触发构建任务)

构建脚本如上,简单说明下:
#移除docker构建过程临时镜像(无镜像名和tag:none<none>)
docker image prune -f
jenkins接收到github触发构建时间时,代码下载到:{容器挂载目录}/workspace/{jenkins项目名称},注意这里时在jenkins容器内执行shell命令,因此绝对路径为jenkins内部的绝对路径,进入到代码存储位置:cd /var/jenkins_home/workspace/WorkPipeline
执行docker-compose构建命令
有关于docker-compose.yml即Dockerfile文件,请看本篇末尾github项目链接
示例演示
提交代码,


jenkins工作台可以看到正在构建

查看构建日志:


项目构建成功,docker-compose.yml文件中将主机端口映射到webonline容器5000端口

现在,浏览器输入:http://{服务器ip}:5000

web项目成功部署
本示例中的web项目及相关dockerfile配置见github链接:https://github.com/ChuanGoing/DockerMain.git
Docker学习-jenkins+github实现持续集成和部署的更多相关文章
- 构建基于Jenkins + Github的持续集成环境
搭建持续集成首先要了解什么是持续集成,带着明确的目标去搭建持续集成环境才能让我们少走很多弯路.持续集成(Continuous integration)简称CI,是一种软件开发的实践,可以让团队在持续集 ...
- Redhat上为java Maven项目构建基于Jenkins + Github的持续集成环境
在Redhat enterprise 6.5 的服务器上,为在gutub 上的 java mvaen项目构建一个持续集成环境,用到了Jenkins.因公司的服务器在内网,访问外网时要通过代理,所以为m ...
- [Jenkins][GitHub]2 持续集成环境初探
预计阅读时间:30分钟 部署环境:Jenkins ver. 2.61 + Centos7 + Java 1.8 参考链接: http://www.jianshu.com/p/22b7860b4e81 ...
- linux+jenkins+github+python持续集成
1.服务器上事先安装jenkins 参见:linux上war包方式安装Jenkins 2.新建一个自由风格的job,名字随意起 3.配置git(拉取github代码) 从github复制pytho ...
- ASP.NET Core & Docker & Jenkins 零基础持续集成实战
原文:ASP.NET Core & Docker & Jenkins 零基础持续集成实战 一.本系列教程说明 源代码管理工具:Gogs 持续集成工具:Jenkins 容器:Docker ...
- .NET Core 从 Github到 Nuget 持续集成、部署
一.前言 Nuget 作为一个.NET研发人员,我想你都不会陌生,他为我们提供非常方便的程序包管理,不管是版本,还是包的依赖都能轻松应对,可以说是我们的好助手.而 Nuget 除了官方nuget.or ...
- Asp.net Core 使用Jenkins + Dockor 实现持续集成、自动化部署(二):部署
前面又是废话 我之前写过: Asp.Net Core 程序部署到Linux(centos)生产环境(一):普通部署 Asp.Net Core 程序部署到Linux(centos)生产环境(二):doc ...
- Asp.net Core 使用Jenkins + Dockor 实现持续集成、自动化部署(一):Jenkins安装
2019/1/31更新,经过我一段时间的使用 建议大家的jenkins还是不要使用docker方式安装 建议大家的jenkins还是不要使用docker方式安装 建议大家的jenkins还是不要使用d ...
- Jenkins持续集成与部署
一.Jenkins简介 在阅读此文章之前,你需要对Linux.Docker.Git有一定的了解和使用,如果还未学习,请阅读我前面发布的相关文章进行学习. 1.概念了解:CI/CD模型 CI全名Cont ...
随机推荐
- Groovy单元测试框架spock基础功能Demo
spock是一款全能型的单元测试框架. 最近在做单元测试框架的调研和尝试,目前确定的方案框架包括是:spock,Junit,Mockito以及powermock.由于本身使用Groovy的原因,比较钟 ...
- go 学习笔记之咬文嚼字带你弄清楚 defer 延迟函数
温故知新不忘延迟基础 A "defer" statement invokes a function whose execution is deferred to the momen ...
- Python日志模块logging简介
日志处理是项目的必备功能,配置合理的日志,可以帮助我们了解系统的运行状况.定位位置,辅助数据分析技术,还可以挖掘出一些额外的系统信息. 本文介绍Python内置的日志处理模块logging的常见用法. ...
- hdu 1880 魔咒词典(双hash)
魔咒词典Time Limit: 8000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- requests模块发送带headers的Get请求和带参数的请求
1.在PyCharm开发工具中新建try_params.py文件: 2.try_params.py文件中编写代码: import requests#设置请求Headers头部header = {&qu ...
- IDEA+SpringBoot+Mybatis+maven分布式项目框架的搭建
参考文章:https://blog.csdn.net/qq_34410726/article/details/98214992 一.maven分布式工程的基本架构 demo #父工程模块,主要用来定 ...
- ubuntu server 1604 关机和重启
命令有很多,记住以下两三个就够了 重启: sudo reboot (这个短,易记) sudo shutdown -r now 统一的shutdown形式 关机:sudo shutdown -P no ...
- (三十六)golang--文件的基本操作
文件程序中是以流的形式操作的. 流:数据在数据源(文件)和程序(内存)之间经历的路径: 输入流:数据从数据源到程序的路径: 输出流:数据从程序到数据源的路径: 常用的文件操作和函数: 1.常用的文件操 ...
- PL真有意思(八):其它程序设计模型
前言 在之前几篇我们讨论的语法.语义.命名.类型和抽象适用于所有语言.然而我们的注意力都主要集中在命令式语言上,现在这篇来看看其它范式的语言.函数式和逻辑式语言是最主要的非命令式语言. 函数式语言 命 ...
- linux [CTRL]+c与[CTRL]+d
[CTRL]+c:中断目前程序.用于在linux中输入了错误的命令或者参数,有的时候会在系统不停的运行,如果想让程序需停下来,可以使用[CTRL]+C [CTRL]+d:这个组合键代表着键盘输入结束( ...