docker环境下使用gitlab,gitlab-runner 为 NetCore 持续集成
docker环境下使用gitlab,gitlab-runner 为 NetCore 持续集成
环境
Centos7.6 安装应用docker,docker-compose (我的Centos是用Hyper-V跑的分了8G的内存,阿里云2G根本跑不起来gitlab)
为了保证我的Centos环境干净所以我的gitlab与gitlab-runner都是采用docker服务运行,包括后续的runner的工作形式(executor)也是选的docker。
准备工作:
拉取镜像:这步骤耗时挺长的,耐心等待吧(如果这个镜像没有了,你可以去hub.docker.com搜一下对应的镜像)
1
2
3
4
docker pull gitlab/gitlab-ce:latest
docker pull gitlab/gitlab-runner:latest
docker pull docker:stable
docker pull mcr.microsoft.com/dotnet/core/sdk
创建gitlab 与gitlabruner 服务
新建文件:docker-compose.yml ,
在Centos服务器上创建docker-compose.yml文件并运行
docker-compose run -d
复制代码
gitlab:
image: 'gitlab/gitlab-ce:latest'
restart: always
hostname: '192.168.2.2'
environment:
GITLAB_OMNIBUS_CONFIG: | external_url 'http://hts92.wicp.vip:8989'#这里需要更换成你的固定ip或局域网IP地址(我个人做法是用的动态域名。做的端口映射,如果你是内网做demo无所谓)
ports:
- '8989:8989'
volumes:
- '/srv/gitlab/config:/etc/gitlab' - '/srv/gitlab/logs:/var/log/gitlab' - '/srv/gitlab/data:/var/opt/gitlab'
gitlab-runner:
image: 'gitlab/gitlab-runner:latest'
container_name: 'gitlab-runner'
restart: 'always'
volumes:
- '/srv/gitlab-runner/confg:/etc/gitlab-runner' - '/var/run/docker.sock:/var/run/docker.sock'
复制代码
到此 gitlab 与gitlab-runner 已经搭建好了。(第一次登陆时需要你设置root用户密码这里我就不截图了,因为我已经设置完了。)
接下来进入gitlab 新建个项目。项目名随意,
进入刚建好的项目
在开发机新建webapi项目:
dotnet new webapi -n user.api --no-https
添加镜像检测脚本
添加镜像检测删除脚本到项目根目录(后续ci构建脚本会用到,每次从新编译docker file 时 会帮你删除掉之前的实例跟镜像):保存为check-images.sh 放到项目根目录
if [ $(docker ps -a --format {{.Names}} | grep user-api) ]
then
docker rm -f user-api docker rmi user-api
fi
创建 .gitlab-ci.yml文件 放到项目根目录
复制代码
stages:
- build
- deploy
构建
build-job:
stage: build
only:
- master
cache:
untracked: true
script:
- dotnet restore - dotnet publish -o ./out -c Release
artifacts:
# 可以缓存在gitlab的流水线记录中,供直接下载 expire_in: 30 days paths: - out/
tags:
- 01-user-api-builder
发布正式
deploy-job:
stage: deploy
only:
- master
dependencies:
- build-job # 这里一定要依赖build-job,不然dockerfile里面的out目录无法使用
script:
- ls out/ - docker ps - sh ./check-images.sh - docker build -t user-api . # 这里可以添加将生成好的image上传到dockerhub或者docker本地仓库 ### 如果生成的镜像需要统一上传到仓库管理,则后面的逻辑可以分离到另外一个runner去执行 # 这里可以添加从dockerhub或本地仓库拉取指定镜像 - docker run -d --name user-api -p 8080:80 user-api
tags:
- 01-user-api-deploy
复制代码
创建 Dockerfile文件
创建 Dockerfile文件 放到项目根目录 (这里值得注意的是mcr.microsoft.com/dotnet/core/sdk 镜像名,要跟我们准备环境时候的镜像名保持一致,要不然build 时还需要在拉取 浪费时间,当然你可可以换成runtime环境的。好处就是编译镜像小,用我这个编译镜像大)
FROM mcr.microsoft.com/dotnet/core/sdk
WORKDIR /app
COPY out/ /app
ENTRYPOINT [ "dotnet", "/app/user.api.dll" ]
以上内容一同传至 gitlab刚建好的项目
gitlab项目目录结构如下
注册runner,
找到rnner信息
注册第一个runner
记得替换吊对应信息。(--url,--registration-toke)
复制代码
docker exec -it gitlab-runner gitlab-runner register -n \
--url http://hts92.wicp.vip:8989/ \
--registration-token QJiAZYz3KSJyhWfsHKhC \
--executor docker \
--tag-list "01-user-api-builder"
--description "01-user-api-builder" \
--docker-image "mcr.microsoft.com/dotnet/core/sdk" \
复制代码
注册第二个runner
(值得注意的是: --docker-volumes /var/run/docker.sock:/var/run/docker.sock,当时没有这句话 我的docker实例无法跟docker容器(docker run docker)本身通讯 。这个问题让我找了进一天的时间)
复制代码
docker exec -it gitlab-runner gitlab-runner register -n \
--url http://hts92.wicp.vip:8989/ \
--registration-token QJiAZYz3KSJyhWfsHKhC \
--executor docker \
--tag-list "01-user-api-deploy" \
--description "01-user-api-deploy" \
--docker-image "docker:stable" \
--docker-volumes /var/run/docker.sock:/var/run/docker.sock
复制代码
如下代表runner 已经开始工作了并且执行成功。
查看镜像
复制代码
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
user-api latest 62eafc3e4bf6 About a minute ago 1.74GB
mcr.microsoft.com/dotnet/core/sdk 20190726 3af77ac73731 2 days ago 1.74GB
mcr.microsoft.com/dotnet/core/sdk latest 3af77ac73731 2 days ago 1.74GB
gitlab/gitlab-runner-helper x86_64-d0b76032 f8d183475601 2 days ago 52.4MB
docker stable c4154a2b47a1 4 days ago 216MB
mysql/mysql-server latest 12a8d88596c0 4 days ago 294MB
gitlab/gitlab-runner latest 4142c6fc05d4 2 weeks ago 410MB
gitlab/gitlab-ce latest 15563c211d40 3 weeks ago 1.8GB
microsoft/mssql-server-linux latest 314918ddaedf 7 months ago 1.35GB
registry 2.3 83139345d017 3 years ago 166MB
[root@localhost ~]#
复制代码
查看容器
2ced458eea91 user-api "dotnet /app/User.Ap…" 21 seconds ago Up 20 seconds 0.0.0.0:8080->80/tcp user-api
cfed5894c526 microsoft/mssql-server-linux "/opt/mssql/bin/sqls…" 3 minutes ago Up 3 minutes 0.0.0.0:1433->1433/tcp sqlserver
d713e32ee388 gitlab/gitlab-ce:latest "/assets/wrapper" 3 days ago Up 39 minutes (healthy) 22/tcp, 80/tcp, 443/tcp, 0.0.0.0:8989->8989/tcp gitlab_gitlab_1
e0cf226629d3 registry:2.3 "/bin/registry /etc/…" 3 days ago Up 39 minutes 0.0.0.0:5000->5000/tcp gitlab_registry_1
eab855f64938 gitlab/gitlab-runner:latest "/usr/bin/dumb-init …" 3 days ago Up 39 minutes gitlab-runner
以上容器已经运行成功
测试
(我的Centos虚拟机地址192.168.2.2)
总结:
看着几行代码搞定,但是由于第一次做也耗时将近两天,随后在做就简单多了。整理出以上内容给大家分享。 以下为参考文章。有问题留言。
参考文章
https://www.lizenghai.com/archives/5180.html#Runner
https://docs.gitlab.com/ee/ci/docker/using_docker_build.html
https://www.jianshu.com/p/43ffba076bc9
原文地址https://www.cnblogs.com/hts92/p/11220604.html

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
阿里云Web应用托管服务(web+)如何创建应用和部署环境?
这篇文章的主题是Web+控制台应用及其环境,这里将向您介绍如何在Web+中通过向导创建一个应用及部署环境。 首先,在Web+控制台首页点击新建链接,进入创建应用及部署环境的向导。 第一步,选择应用的基本信息。在这个页面可以看到Web+支持Tomcat的应用、Java应用及Node JS等三种应用类型。我们输入应用的名称,然后输入对应用的描述,点击下一步。 第二步,我们进入到了部署环境界面。在这里输入部署环境的名称,然后输入对部署环境的描述、部署包来源,来源可以选择上传一个本地应用程序,也可以选择使用样例程序。如果你想知道样例程序的具体内容,可以通过这里链接下载。之后的部署包版本,我们可以输入自己指定的部署包版本信息,也可以选择默认使用当前时间戳作为此次部署的版本,同时填入版本描述。 如果我们要对环境做更多的配置,可以点击下一步,当然也可以使用默认配置,直接点击完成创建。 此时,Web+将提醒你,此次操作将使用低成本的方式创建部署环境,所谓低成本就是在该可用区中创建一台小规格的ECS实例,点击确认。 可以看到,系统已经创建了应用及部署环境包版本。 我们点击查看环境的部署日志。这时可以看到...
- 下一篇
小白如何选择阿里云服务器
云计算目前已经成为个人项目和创业公司的首选,上云大大降低了企业的 IT 和运维成本。很多个人和初创公司在选择阿里云服务器的时候,面对复杂的选项和配置时,可能不知道怎么选择。新购用户在选择服务器时,大都希望能够简单、快速、优惠地买对服务器,我想这应该是大部分新用户的诉求。 如何选择阿里云服务器阿里云 ECS 的购买页面如下,这里我以 1 核 2G 配置为例: 可以看到基础的配置项还是比较多的,需要选择基础的 ECS 规格、镜像、系统等配置。1 核 2G 可选的 ECS 规格有 3 类,分别为:突发性能 t5、共享计算型 n4、共享计算型 n1 这几种规格,简单介绍下这几种 ECS 实例。 突发性能 t5 属于入门级 x86 计算规格族群处理器:2.5 GHz 主频的 Intel Xeon E5-2682v4 / Intel Xeon(Skylake) Platinum 8163 处理器搭配 DDR4 内存适用场景 Web 应用服务器,WordPress、Tomcat 等轻负载应用、微服务开发测试压测服务应用共享计算型 n4 属于入门级 x86 计算规格族群处理器:2.5 GHz 主频的 ...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- 设置Eclipse缩进为4个空格,增强代码规范
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS7设置SWAP分区,小内存服务器的救世主
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Hadoop3单机部署,实现最简伪集群
- MySQL8.0.19开启GTID主从同步CentOS8