本文的目标是实现下图基于ASP NET Core的实践

运行环境

  1. 运行docker,设置docker镜像加速器,不然国内下载image会很慢。要学习docker入门的,可以参考docker 入门与实战
  2. 创建一个docker network,让容器之间可以互相访问
$ sudo docker network create -d bridge docker-net  

-d 参数指示Docker 网络类型

  1. docker 运行jenkins
$ sudo docker run
-p : -p : \
--name jenkins
--network docker-net \
-v /var/docker/jenkins:/var/jenkins_home -d \
--restart always jenkins

-p 参数表示端口映射,这样在你本机通过端口号就能访问到容器

-d 容器在后台运行

-v 容器数据映射

在浏览器中输入http://localhost:8080,首次进入需要初始化管理员密码。等待jenkins运行,安装推荐插件.

安装jenkins插件,在Manage Jenkins -> Manage Plugins -> Available, 查找 Blue Ocean 、GitLab Plugin, 安装后重启jenkins

  1. docker 运行gitlab
$ sudo docker run --detach \
--publish : --publish : --publish : \
--name gitlab \
--restart always \
--network docker-net \
--env GITLAB_OMNIBUS_CONFIG="gitlab_rails['gitlab_shell_ssh_port']=10022;external_url 'http://{ip}:8098'" \
--volume /var/docker/gitlab/config:/etc/gitlab \
--volume /var/docker/gitlab/logs:/var/log/gitlab \
--volume /var/docker/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest

external_url 需要改成你们自己的ip地址.

运行

$ docker ps

可以查看到正在运行的容器,首次启动gitlab会有比较长的时间,等待gitlab容器状态为healthy时,浏览器中打开http://localhost:8098/,重置密码后,用root账号登录

  1. docker 运行registry
$ docker run -d -p : \
--restart=always --name registry \
--network docker-net \
-v /var/docker/docker-registry:/var/lib/registry \
registry:

浏览器中打开http://localhost:8097/v2/看是否运行成功.

  1. 本地创建项目aspnet core 项目,创建Dockerfile
$ dotnet new webapi -n CIDemo
$ dotnet restore
$ dotnet run

浏览器中打开http://localhost:5000/api/values看是否运行成功

创建Dockerfile

FROM microsoft/aspnetcore:2.0 AS base
WORKDIR /app
EXPOSE FROM microsoft/aspnetcore-build:2.0 AS build
WORKDIR /src
COPY . .
RUN dotnet restore
WORKDIR /src
RUN dotnet build -c Release -o /app FROM build AS publish
RUN dotnet publish -c Release -o /app FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "CIDemo.dll"]

创建镜像

$ docker build -t 127.0.0.1:/cidemo: .

运行刚刚创建的镜像

$ docker run -p : 127.0.0.1:/cidemo:

浏览器中打开http://localhost:5001/api/values,看是否运行正常

创建Jenkinsfile

pipeline {
agent any
stages {
stage('build') {
steps {
sh '''
docker build -t registry:/cidemo:${BUILD_NUMBER} .
docker push registry:/cidemo:${BUILD_NUMBER}
'''
}
}
stage('run'){
steps {
sh '''
echo "stop runing container"
docker stop $(docker ps -q)
docker rm $(docker ps -q)
docker run -d -p : --network docker-net registry:/cidemo:${BUILD_NUMBER}
'''
}
}
}
}

Jenkinsfile使用教程https://www.w3cschool.cn/jenkins/jenkins-qc8a28op.html

  1. 设置Gitlab API Token, 配置jenkins gitlab

在Gitlab个人中心 -> Settings -> Acess Tokens,创建一个scopes包含api的Token。

在Jenkins -> Manage jenkins -> Configure System 中配置gitlab. gitlab host url 和 api token。

在jenkins -> Open Blue Ocean 中,创建一个PipeLine,选择git仓库,创建一个刚刚我们创建好的项目。

在Gitlab 项目中设置webhook, Projects -> Settings -> Integrations,添加一个webhook, Url 添写上一步创建的jenkins project地址, 例:http://jenkins:8080/project/CIDemo, Secret Token不填, 勾选Push events, 不勾选Enable SSL verification。

  1. push 代码到远程仓库中,看是否会触发jenkins 任务, 如果成功可以看到jenkins每一步的执行状态。

结束,谢谢,有一起学习net core的可以加我微信zjl_jx

docker结合jenkins、gitlab实现.netcore的持续集成实践的更多相关文章

  1. Jenkins+Gitlab CE+Robot Framework持续集成

    环境 Ubuntu 14.04.3 LTS Desktop 前提 1.在本地能执行测试脚本(pybot yourTestSuit.txt),本文不讲解如何学习使用RF框架 2.已有Gitlab环境,本 ...

  2. Docker 实战(4)- 结合 Jenkins + Gitlab 完成自动化测试的持续集成实战

    如果你还想从头学起 Docker,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1870863.html Jenkins 关联 Gitla ...

  3. ASP.NET Core + Docker + Jenkins + gogs + CentOS 从零开始搭建持续集成

    为什么不用gitlab? 没有采用gitlab,因为gitlab比较吃配置,至少得2核4G的配置.采用go语言开发的gogs来代替,搭建方便(不到10分钟就能安装完成),资源消耗低,功能也比较强大,也 ...

  4. 「持续集成实践系列」Jenkins 2.x 搭建CI需要掌握的硬核要点

    1. 前言 随着互联网软件行业快速发展,为了抢占市场先机,企业不得不持续提高软件的交付效率.特别是现在国内越来越多企业已经在逐步引入DevOps研发模式的变迁,在这些背景催促之下,对于企业研发团队所需 ...

  5. 构建gitlab+Jenkins+harbor+kubernetes的DevOps持续集成持续部署环境

    构建gitlab+Jenkins+harbor+kubernetes的DevOps持续集成持续部署环境 整个环境的结构图. 一.准备工作 gitlab和harbor我是安装在kubernetes集群外 ...

  6. jenkins+Gitlab+maven+tomcat实现自动集成、打包、部署

    一.前言 首先出于提高自己技术水平和琢磨能做点什么能提高工作效率,上线工作实在无聊.重复(手动编译.打包,传包,重启),于是就想到了jenkins,jenkins持续集成已经不是什么新鲜的话题,网上文 ...

  7. Jenkins+Ant+Git+Jmeter实现持续集成

    个人记录: 基本的配置与Jenkins+Ant+SVN+Jmeter实现持续集成的配置一样,主要在Jenkins的配置上的区别会有所不同 安装的插件: enkins安装好之后,需要为其安装gitlab ...

  8. 基于Jenkins的开发测试全流程持续集成实践

    今年一直在公司实践CI,本文将近半年来的一些实践总结一下,可能不太完善或优美,但的确初步解决了我目前所在项目组的一些痛点.当然这仅是一家之言也不够完整,后续还会深入实践和引入Kubernetes进行容 ...

  9. 「持续集成实践系列 」Jenkins 2.x 构建CI自动化流水线常见技巧

    在上一篇文章中,我们介绍了Jenkins 2.x实现流水线的两种语法,以及在实际工作中该如何选择脚本式语法或声明式语法.原文可查阅:「持续集成实践系列」Jenkins 2.x 搭建CI需要掌握的硬核要 ...

随机推荐

  1. SQL Server 禁用扩展存储过程

    概述 扩展存储过程是 SQL Server 实例可以动态加载和运行的 DLL.扩展存储过程是使用 SQL Server 扩展存储过程 API 编写的,可直接在 SQL Server 实例的地址空间中运 ...

  2. 【二分图】ZJOI2007小Q的游戏

    660. [ZJOI2007] 小Q的矩阵游戏 ★☆   输入文件:qmatrix.in   输出文件:qmatrix.out   简单对比 时间限制:1 s   内存限制:128 MB [问题描述] ...

  3. Spring框架入门之Spring简介

    一.Spring简介(由Rod Johnson创建的一个开源框架)        Spring是一个开放源代码的设计层面框架,他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿 ...

  4. HTML知识点总结之表单元素

    网页不可能是纯静态的,没有任何的交互功能:绝大多数的网站都有表单元素的使用.表单提供了一个浏览者和网站交互的途径,比如用户注册登录,用户留言等功能. form form元素只是一个数据获取元素的容器, ...

  5. MYSQL:数据库安装 windows

    最近在学习mysql,看到很多人在搭建mysql的时候遇到很多问题,我们在这里不讲安装版的配置过程,因为安装版的配置非常的简单.. windows下配置mysql 首先从官网下载社区版的安装包:最新版 ...

  6. 如何获取离线安装Chrome扩展程序的包

    最近工作环境限制,有些机器文件只能拿进去,不能拿出来.网络也是内部网络,没法下载东西.工作中常用的一些Chrome扩展应用也没法使用,对于我这类工具爱好者,打击够大.后来想想,既然扩展应用能开发打包上 ...

  7. Python => ValueError: unsupported format character 'Y' (0x59)

    产生问题的原因是:SQL语句的'%Y-%m-%d'部分被再次解释为字符串格式,并抛出错误 解决方案一:字符串%形式进行替换 '%string' % string. '%Y-%m-%d'改写为'%%%% ...

  8. deeplearning.ai 改善深层神经网络 week3 超参数调试、Batch正则化和程序框架 听课笔记

    这一周的主体是调参. 1. 超参数:No. 1最重要,No. 2其次,No. 3其次次. No. 1学习率α:最重要的参数.在log取值空间随机采样.例如取值范围是[0.001, 1],r = -4* ...

  9. linux(七)之linux系统中查找文件

    前面介绍一篇文章介绍了关于vi编辑器的使用,感觉是不是那么多的命令怎么记得住呀,小编也是这样让认为的,但是慢慢的发现,其实还是很有意思的.正所谓熟能生巧多练习,找到其中的规律就ok了.今天看到一句话让 ...

  10. 【Java学习笔记之十三】初探Java面向对象的过程及代码实现

    理解Java面向对象的重要知识点: 一. 类,对象 类?首先举一个例子:小李设计了一张汽车设计图,然后交给生产车间来生产汽车,有黑色的.红色的.白色的... 这里,汽车设计图就是我们说的类(class ...