Asp.net Core 使用Jenkins + Dockor 实现持续集成、自动化部署(二):部署
前面又是废话
我之前写过:
Asp.Net Core 程序部署到Linux(centos)生产环境(一):普通部署
Asp.Net Core 程序部署到Linux(centos)生产环境(二):docker部署
大家可能会有疑问,分布式环境当中的部署还是跟我们在windows一样,一台机一台机的去部署、更新程序吗?
其实,拥抱Linux 我们还有更多选择,比如:自动化部署;
运行环境
centos:7.2
cpu:1核 2G内存 1M带宽
前面说过了,不过还是写运行环境还是再写一下
安装docker
安装其实很简单,就不重复说了,请查看纯洁大神这篇文章
安装jenkins
安装我单独记录了一篇,Asp.net Core 使用Jenkins + Dockor 实现持续集成、自动化部署(一):Jenkins安装
安装docker-conpose
因为jenkins需要用到本地的docker-compose环境,所以,安装完以上步骤的jenkins后,使用
docker exec -it jenkins /bin/bash
进入容器内部安装docker-compose,安装步骤去
创建 asp.net core web 应用程序
此web应用程序就是你需要部署的项目,我这里创建一个演示项目 WebApplication2;
这里先取消掉https,勾上启用docker支持;
接着把docker-compose.override.yml文件里面ports:下面的"ports:"的 - "80"
改成- "5006:80"
项目结构:
创建成功后,运行一下,能正常运行后,将项目上传到git服务器(github,gitlab,gogs等),我上传到了自己的gogs:
配置jenkins
1、创建一个jenkins项目
新建项目
构建一个自由风格的软件项目
2、源代码管理
这里可以指定git分支
3、构建触发器
这里的是设置轮询去git拉取代码,如果代码有更新就触发构建操作,
H/2 * * * *
是指每2分钟轮询拉取一次;
4、构建环境
Abort the build if it's stuck 是指如果构建过程中卡住了,就终止构建;这里是10是10分钟,10分钟超时构建失败;
5、添加构建脚本Execute Shell
填写构建脚本
GITHASH=`git rev-parse --short HEAD`
echo ========remove-orphans===========
docker-compose -f ./docker-compose.yml -f ./docker-compose.override.yml -p webapplication1 down --rmi local --remove-orphans
echo ========config===========
docker-compose -f ./docker-compose.yml -f ./docker-compose.override.yml -p webapplication1 config
echo ========publishing===========
docker-compose -f ./docker-compose.yml -f ./docker-compose.override.yml -p webapplication1 up -d --build
echo ---------------Clear-Images...------------------
clearImagesList=$(docker images -f "dangling=true" -q)
if [ ! -n "$clearImagesList" ]; then
echo "No need to clean up images."
else
docker rmi $(docker images -f "dangling=true" -q)
echo "clear success."
fi
echo ---------------Clear-Containers...------------------
点击保存回到jenkinstest2项目界面,点击“立即构建”
构建控制台输出
perfect!构建成功,现在打开 http://你的服务器ip:5006,可以看到,没错,这就是我们的网站:
如果网站有任何更改,提交代码哦,jenkins会自动拉取代码,并发布一个新的容器,我们就等着哈哈哈,刷新浏览器就行了;
[参考]
https://www.cnblogs.com/LongJiangXie/p/7517909.html
Asp.net Core 使用Jenkins + Dockor 实现持续集成、自动化部署(二):部署的更多相关文章
- Asp.net Core 使用Jenkins + Dockor 实现持续集成、自动化部署(三):搭建jenkins集群环境
写在前面 大家可以看到本文的配图,左边是jenkins单机环境,右边是jenkins集群.个中区别,不言而喻,形象生动. 前面我分别介绍了.net core 程序的多种部署方式(无绝对孰优孰劣): 1 ...
- Asp.net Core 使用Jenkins + Dockor 实现持续集成、自动化部署(一):Jenkins安装
2019/1/31更新,经过我一段时间的使用 建议大家的jenkins还是不要使用docker方式安装 建议大家的jenkins还是不要使用docker方式安装 建议大家的jenkins还是不要使用d ...
- Asp.net Core 使用Jenkins + Dockor 实现持续集成、自动化部署(四):发布与回滚
写在前面 我们以前windows跑.net Framework程序的时候,发布,自己乖乖的替换程序:备份,也是自己一个一个的重命名备份:回滚,发布遇到问题的回滚更是不用说了:运维很是怕我们 这些用wi ...
- ASP.NET Core & Docker & Jenkins 零基础持续集成实战
原文:ASP.NET Core & Docker & Jenkins 零基础持续集成实战 一.本系列教程说明 源代码管理工具:Gogs 持续集成工具:Jenkins 容器:Docker ...
- Jenkins与Git持续集成&&Linux上远程部署Java项目
一.环境搭建 1.安装所需软件 Jdk Maven Jenkins Tomcat Xshell git 以上软件去官网下载,比较简单,不一一描述了 2.安装所需的jenkins插件 Git plugi ...
- Jenkins Android APP 持续集成体系建设二—自动部署、执行测试任务,关联打包任务
经过上一遍博客我们知道了怎么使用Jenkins自动打包,但打完包之后,我们还需要对新包进行回归测试,确定新包有没有问题,然后才能发布包,那么,话不多说,我们先来新建个自动化回归测试任务 新包自动化回归 ...
- 使用Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境(二)
前言 上一篇随笔Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境(一)介绍maven和nexus的环境搭建,以及如何使用maven和nexus统一管理库 ...
- Azure Terraform(八)利用Azure DevOps 实现Infra资源和.NET CORE Web 应用程序的持续集成、持续部署
一,引言 上一篇讲解到利用 Azure DevOps 将整个 Azure Web App,Azure Traffic Manager profile,Azure Storage Account,Azu ...
- 基于 Jenkins 快速搭建持续集成环境
什么是持续集成 随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题.尤其是近些年来,敏捷(Agile) 在软件工程领域越来越红火 ...
随机推荐
- 大白话讲解Promise
去年6月份, ES2015正式发布(也就是ES6,ES6是它的乳名),其中Promise被列为正式规范.作为ES6中最重要的特性之一,我们有必要掌握并理解透彻.本文将由浅到深,讲解Promise的基本 ...
- fiddler 抓取 htts 失败
1.清除C:\Users\Administrator\AppData\Roaming\Microsoft\Crypto\RSA 目录下所有文件(首次安装fiddler请忽略) 2.清除电脑上的根证书, ...
- DWM1000 定位操作流程--[蓝点无限]
蓝点DWM1000 模块已经打样测试完毕,有兴趣的可以申请购买了,更多信息参见 蓝点论坛 1烧录HEX文件 使用ST-LINK utility 烧录HEX文件,分别烧录三个基站以及一个标签,烧录基站时 ...
- Linux多核并行编程关键技术
多核并行编程的背景 在摩尔定律失效之前,提升处理器性能通过主频提升.硬件超线程等技术就能满足应用需要.随着主频提升慢慢接近撞上光速这道墙,摩尔定律开始逐渐失效,多核集成为处理器性能提升的主流手段.现在 ...
- 编程菜鸟的日记-初学尝试编程-C++ Primer Plus 第6章编程练习6
#include <iostream> #include <string> using namespace std; const int MSIZE=100; struct j ...
- MyBatis(九) 使用association定义单个对象的封装规则
(1)接口中编写方法 public Emp getEmpandDept(); (2)编写Mapper文件 <resultMap type="com.eu.bean.Emp" ...
- margin与padding的bug
1.在页面布局时,值对于块元素来说,相邻的两个兄弟块元素间的margin-top与上一个兄弟的margin-bottom重合时, 解决办法:对其中一个块元素中设置 display:inline- ...
- Centos安装配置Tomcat,并部署web应用
一.安装JDK并配置环境变量 1.检查和删除系统预装jdk //如果操作系统不是最小安装,会默认安装openjdk#rpm -qa | grep java //删除系统预装jdk,可以一条命令直接删除 ...
- [LeetCode] Buddy Strings 伙计字符串
Given two strings A and B of lowercase letters, return true if and only if we can swap two letters i ...
- k8s probe
livenessProbe: httpGet: path: /abc/401 port: 8384 scheme: HTTP