GitLab CI 自动部署netcore web api 到Docker


640?wx_fmt=png


前端篇文章中,我们已经成功的将asp.net core webapi在Docker容器中运行,并且部署了一套自己的GitLab环境。


.Net & Docker(二)5分钟快速用Docker部署你自己的GitLab

.Net & Docker(一)在Docker容器上运行.Net Core API



接下来我们将用GitLab CI 来做到当有代码提交时自动部署asp.net core web api到Docker容器。

  • GitLab CI 介绍

  • 安装本地Shell Runner

  • 注册Runner

  • 编辑 .gitlab-ci.yml 执行任务

GitLab CI 介绍

GitLab CI 是GitLab的一部分,提供了一套UI及API用来管理项目的构建等。每一个构建请求称之为job,而这些job最后会被指定的Runner来执行。

Runner是GitLab CI的重要组件之一,它可以部署在独立的服务器上,不影响GitLab服务器。

640?wx_fmt=png

GitLab CI 支持多平台(Windows、OSX、Unix) 多语言(Java、Php、Ruby等),这其中自然也包括C#。它还有以下几个特性:

  • 分布式运行:多服务器、并行

  • 可以运行在本地、Docker容器、SSH Remote等

  • 支持批处理:windows、Power Shell (这让我们用msbuild 编译上一代的.net程序有了可能)


Runner三步走:

  1. 安装

  2. 注册

  3. 使用

在使用也就是执行阶段,GitLab Runner 给我们提供了以下7种执行方式。官方称之为 executors。

  • Shell

  • Docker

  • Docker Machine

  • Parallels

  • VirtualBox

  • SSH

  • Kubernetes


在注册Runner阶段,我们就需要选择executor,我们今天将选择使用本地Shell这种大家最熟悉的方式来执行作业Job。

 安装本地Shell Runner

  1. 下载安装


2. 提升权限


注册Runner

1. 输入以下命令启动注册

2. 我们会输入 http://127.0.0.1 也就是我们安装在本地的GitLab

3. Please enter the gitlab-ci token for this runner 要求输入 gitlab-ci token

在项目的 Settings->Pipelines中可以找到


640?wx_fmt=png

4. 输入描述

5. 输入tag(留空也可以,之后可以进行编辑 )

6. 选择当遇到没有打标签的提交时是否会执行,我们选 true

7. 是否锁定此runner 到当前项目, 我们选 false

8. 先一个执行者 executor

这一步比较重要 (ssh, docker+machine, docker-ssh+machine, kubernetes, docker, parallels, virtualbox, docker-ssh, shell) 我们先shell在本地执行。

9. 选择默认使用的镜像:microsoft/dotnet:latest

在注册完之后,我们可以在GitLab获取gitlab-ci token 的页面看到我们刚刚注册的这个 runner


640?wx_fmt=png编辑.gitlab-ci.yml 执行任务

这是我们今天的最后一步,也非常简单。我们只需要在根目录添加 .gitlab-ci.yml的 输入两行命令即可。

而这两句命令就是我们自己去构建镜像,以及运行容器的命令只不过由 gitlab-ci runner 来执行而已。

我们最后要做的只需要提交一份代码即可:


640?wx_fmt=png

编辑了一下 .gitlab-ci.yml文件并把它提交到gitlab。


640?wx_fmt=png

这个commit下会有一个任务被自动触发执行,查看这个任务,和我们在命令行执行 docker build 和 docker run 没有什么两样 。


640?wx_fmt=png

640?wx_fmt=png


最后我们可以直接访问重新编译之后的结果 。


640?wx_fmt=png

查看我们的镜像列表, my-docker-image刚刚被更新。

640?wx_fmt=png

640?wx_fmt=png

查看我们的容器列表,基于 my-docker-image 启动的容器也已经被更新。

640?wx_fmt=png

640?wx_fmt=png


到这里我们已经完成了 dotnet core api 自动部署到 Docker 的全部过程,有了CI持续集成之后,我们开发完成代码自测通过之后只需要提交代码即可自动发布到测试完成(测试通过之后,还可以一键部署到生产环境)需要人工操作。同时还可以在CI中加入自动化测试,以保障开发快速稳定地迭代。


点击左下角【阅读原文】格式体验更佳

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/314564.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

.net core 实现基于 cron 表达式的任务调度

.net core 实现基于 cron 表达式的任务调度Intro上次我们实现了一个简单的基于 Timer 的定时任务,详细信息可以看这篇文章 。但是使用过程中慢慢发现这种方式可能并不太合适,有些任务可能只希望在某个时间段内执行,只使用 timer 就显得不是那…

ASP.NET Core Identity自定义数据库结构和完全使用Dapper而非EntityFramework Core

前言原本本节内容是不存在的,出于有几个人问到了我:我想使用ASP.NET Core Identity,但是我又不想使用默认生成的数据库表,想自定义一套,我想要使用ASP. NE Core Identity又不想使用EntityFramework Core。真难伺候&…

什么是微服务?为什么你要用微服务?

前言最近几年微服务很火,大家都在建设微服务,仿佛不谈点微服务相关的技术,都显得不是那么主流了。近几年见识到身边朋友的很多公司和团队都在尝试进行微服务的改变,但很多团队并没有实际微服务踩坑经验,很多团队甚至强…

P5367 【模板】康托展开

传送门 文章目录题意:思路:题意: 思路: 存个板子 // Problem: P5367 【模板】康托展开 // Contest: Luogu // URL: https://www.luogu.com.cn/problem/P5367 // Memory Limit: 64 MB // Time Limit: 1200 ms // // Powered by …

微软开源基于.NET Core的量子开发工具包 QDK

微软最近开源了量子开发工具包(Quantum Development Kit,QDK),旨在使“量子计算和算法开发对开发人员来说更容易、更透明”。微软 QDK 包括 Q#编译器、量子库和量子模拟器。微软在 2017 年底的 Ignite 大会上发布了量子开发工具包…

UVA11525 Permutation 逆康托展开

传送门 文章目录题意:思路:题意: 思路: 逆康托展开板子 // Problem: UVA11525 Permutation // Contest: Luogu // URL: https://www.luogu.com.cn/problem/UVA11525 // Memory Limit: 0 MB // Time Limit: 3000 ms // // Power…

Azure 上使用 Windows Server Core 运行 ASP.NET Core 网站

点击上方蓝字关注“汪宇杰博客”导语微软智慧云 Azure 上虽然早就有 App Service 这种完全托管的 PaaS 服务可以让我们分分钟建网站。但是不自己配一下环境,就不能体现技术含量,容易被说微软的人都只会点鼠标。年轻的时候不敲命令,什么时候可…

Codeforces Round #285 (Div. 2) D. Misha and Permutations Summation 康托展开 + 线段树

传送门 文章目录题意:思路:题意: 思路: 首先肯定不能模n!n!n!,所以考虑先将a,ba,ba,b做一个逆康托展开,得到a′,b′a,ba′,b′数组,以及a′b′sumabsuma′b′sum数组,让后我们可以通…

「PowerBI」使用TabularEditor进行PowerBIDeskTop模型开发最佳实践

前面系列文章介绍的场景,设定的工具使用对象是Sqlserver和Azure 的SSAS数据模型开发,其实TabularEditor亦可以有限度地使用在PowerBIDeskTop的模型开发上,本文简单介绍下其最佳的使用场景。PowerBIDeskTop模型不同于Sqlserver的SSAS模型虽然大…

E:Three Blocks Palindrome(hard and easy)(树状数组 ? 前缀和?)

Three Blocks Palindrome (hard version) 思路 考虑到每个数字的范围是12001 ~ 2001 200,于是我们可以通过枚举两侧的元素来寻找最优答案。 我们有一个贪心策略,两侧都以我们枚举的元素作为结尾点,假如我们当前枚举的数字是1,于…

树莓派 + Windows IoT Core 搭建环境监控系统

前言:Windows IoT 是微软为嵌入式开发板设计的一种物联网操作系统,运行Windows UWP(C# 开发),可以设计出丰富的交互界面,驱动GPIO,连接一些传感器做有意思的事,本文详细介绍如何使用…

CF1547F Array Stabilization (GCD version) st表 + 尺取/二分

传送门 题意: 思路: 容易发现,我们将所有aaa都除上所有aaa的gcdgcdgcd,实际上就是让你求一个最小的lenlenlen,对于所有iii,gcd(ai,ai1,...,ailen−1)1gcd(a_i,a_{i1},...,a_{ilen-1})1gcd(ai​,ai1​,...…

Educational Codeforces Round 90 (Rated for Div. 2)(A, B, C, D, E)

Educational Codeforces Round 90 (Rated for Div. 2) Donut Shops 思路 分三种情况: ac/ba c / bac/b这个时候两个的单价是相同的,如果b1b 1b1,也就是aca cac,无论买多少数量的东西,这两个的价格都是一样的&…

HttpClientFactory 使用说明 及 对 HttpClient 的回顾和对比

在 C# 中,平时我们在使用 HttpClient 的时候,会将 HttpClient 包裹在 using 内部进行声明和初始化,如:using(var httpClient new HttpClient()){ }至于为什么?无外乎是:项目代码中就是这样写的&#xf…

记录用友T+接口对接的心酸历程

前言:公司的业务主要是对接财务系统做单据传输或者凭证处理的,难免少不了和各大财务软件做数据对接,其中当然是必须通过接口来传递数据了。于是乎,用友T的版本来了,对接的工作自然是我来做,可没想到就是这样…

集群故障处理之处理思路以及听诊三板斧(三十四)

前言 本篇主要分享一些处理故障和问题绝招,比如听诊三板斧:1)查看日志2)查看资源详情和事件3)查看资源配置(YAML)如果还是不太好分析,那就祭出神器——kubectl-debug。最后&…

selenium搜狗搜图简单操作(爬取任意关键字的图片)

Picture preview Steps 这里以搜狗搜图作为一个简单的例子: 第一步就是获取我们的需求了,输入需要下载的图片名字以及需要下载的图片数量。 接下来我们需要在搜狗搜图中输入用户的需求,透过xpathxpathxpath锁定搜索框,然后输入…

Microsoft REST API指南

经过3个月的碎片时间的翻译和校验,由长沙.NET技术社区翻译的英文原文文档《Microsoft REST API指南 》已经翻译完成,现刊载前十一章如下,欢迎大家点击“查看原文”按钮,查看指南的完整内容。PS:内容很长,全…

如何优雅地替换一个实现

前两天,我所在的项目有一个小的技术改动,打算把访问Redis的密码从数据库挪到配置文件里。以前的代码类似下面这样:用户第一次调用GetDatabase时,根据传入的数据库连接字符串访问数据库,从某个表里取出带密码的Redis连接…

莫队——三种题型

普通莫队 P3901 数列找不同 Thinking 一定是用可以用莫队来写题&#xff0c;这点是不用质疑的&#xff0c;所以那就简单了&#xff0c;只需要判断每次询问的区间是否满足r−l1numr - l 1 numr−l1num就行了。 Coding1Coding_1Coding1​ 莫队写法 #include <bits/stdc…