使用gitlab自带的ci/cd实现.net core应用程序的部署
这两天在折腾持续集成和交付,公司考虑使用gitlab自带的ci/cd来处理,特此记下来整个流程步骤.
好记性不如一支烂笔头---尼古拉斯-古人言
第一步: 安装gitlab,这个自然不用多说
第二步: 使用docker容器安装gitlab-runner组件
新建一个docker-compose.yml文件,内容如下,在linux系统下使用 docker-compose up -d 命令跑起来就好(如果不会,可度娘搜索安装和使用)
1 version: "3.3"
2 services:
3 gitlab-runner:
4 image: gitlab/gitlab-runner:latest
5 container_name: gitlab-runner
6 #总是重启后启动
7 restart: always
8 privileged: true
9 volumes:
10 - ./config:/etc/gitlab-runner
11 - /var/run/docker.sock:/var/run/docker.sock
12 - /bin/docker:/bin/docker
13 networks:
14 - gitlab_runner_net
15
16 networks:
17 gitlab_runner_net:
18 driver: bridge
第三步: 安装完之后,需要将安装好的gitlab-runner注册到gitlab中去,这里我们就需要用到如下图中红色框框内的token令牌

1.进入容器内部
1 docker exec -it 96d4d3170eaf /bin/bash
2.开启注册
1 gitlab-runner register
3.输入上面的命令后根据提示输入指定信息
1 Enter the GitLab instance URL (for example, https://gitlab.com/):
2 http://192.168.1.250:9080/ #gitlab的地址
3 Enter the registration token:
4 XLccjJJ_mDkNRyzdyXsY #上面图片中的token,这样允许gitlab-runner免密连接gitlab
5 Enter a description for the runner:
6 [96d4d3170eaf]: signbox-service-message shell #这里输入备注信息,可留空
7 Enter tags for the runner (comma-separated):
8 deploy,master,dev #这里输入标签,最好是和git分支中tag的对应起来
9 Registering runner... succeeded runner=XLccjJJ_
10 Enter an executor: docker-ssh, shell, virtualbox, docker-ssh+machine, kubernetes, custom, docker, parallels, ssh, docker+machine:
11 shell #这里直接输入shell就好
12 Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!
完成注册后,在gitlab中就能看到注册的gitlab-runner信息了,如下图

第四步: 添加gitlab-runner账号授权
1.添加一个 gitlab-runner 用户(一般这个用户是不存在的)
1 sudo adduser gitlab-runner
2.将gitlab-runner用户添加到docker组内
1 sudo gpasswd -a gitlab-runner docker
3.查看docker组中是否已经成功(如果出现:docker:x:973:root,gitlab-runner则成功)
1 cat /etc/group |grep docker
4.重启docker容器服务
1 sudo systemctl restart docker
5.给docker.sock设置权限
1 sudo chmod a+rw /var/run/docker.sock
第五步: 在项目根目录下创建文件名为 .gitlab-ci.yml 的文件,此文件是用来构建打包部署的
1 stages:
2 - build
3 - deploy
4
5 build:
6 stage: build
7 script:
8 - cd ./
9 - docker build -f "./src/Test.Web/Dockerfile" --force-rm -t image-test --label "com.microsoft.created-by=visual-studio" --label "com.microsoft.visual-studio.project-name=Test.Web" "./"
10 only:
11 - master
12
13 deploy:
14 stage: deploy
15 script:
16 - cd ./
17 - docker stop image-test18 - docker rm image-test19 - docker run -d --name image-test -p 8080:80 image-test-app20 only:
21 - master
我这里把构建分为了两个阶段,一个是编译,另外一个是部署
1.build阶段负责把源代码编译成一个容器镜像.这里需要注意的地方就是 cd 只cd到根目录下,不要直接cd到Dockerfile文件所在目录,而是在编译命令中指定Dockerfile文件目录
2.根据编译好的容器镜像启动容器.这里需要注意的是需要大家多一步判断如果容器为新建则要排除停止和删除容器,否则会出现部署不通过的错误
第六步: 使用git提交代码就会自动触发构建(当每一步都是绿色时,则表示构建成功),如下图

温馨提示:从图1中进入图2中红色框框项勾选上,则可以即使提交代码时没有tag标签也可以支持构建
图1

图2

使用gitlab自带的ci/cd实现.net core应用程序的部署的更多相关文章
- Docker+Vagrant+Gitlab 构建自动化的 CI/CD
如果你的开发流程是下面这个样子的, 那么你一定很好奇, 为什么我提交到仓库的代码可以自动部署并访问到最新的提交内容 这就是近年来兴起的 DevOps 文化, 很方便的解决了开发人员和运维人员每次发布版 ...
- git 客户端连接gitlab 实现简单的CI/CD
1. git 客户端的安装 下载: https://git-scm.com/download/win 截至最近:20180728最新版本 2.18的下载地址 https://github-produc ...
- GitLab CI/CD的官译【原】
CI / CD方法简介 软件开发的持续集成基于自动执行脚本,以最大限度地减少在开发应用程序时引入错误的可能性.从新代码的开发到部署,它们需要较少的人为干预甚至根本不需要干预. 它涉及在每次小迭代中不断 ...
- 前端初探 Gitlab CI/CD
前言 纵观人类历史的发展以及三次工业革命,你会发现利用机器来替代部分人力劳动,将重复的工作自动化从而解放生产力都是发展的必然趋势,在软件工程领域也不例外,其中 CI/CD 就是其中一项,那么什么是 C ...
- Gitlab CI/CD
Gitlab CI/CD 前言 纵观人类历史的发展以及三次工业革命,你会发现利用机器来替代部分人力劳动,将重复的工作自动化从而解放生产力都是发展的必然趋势,在软件工程领域也不例外,其中 CI/CD 就 ...
- .NetCore 配合 Gitlab CI&CD 实践 - 开篇
引言 这是一个系列的文章,讲述的是一个中小型开发团队如何从零开始使用搭建基建 GitLab 代码托管平台,以及使用 GitLab Runner 实现 CI/CD 的故事.本系列通过部署一个完整的 .n ...
- 官网GitLab CI/CD英文文档翻译
在查阅GitLab官网的CI/CD功能说明时,全是英文看起来不方便,通过翻译软件自动翻译后"内容失真",看起来很变扭.查阅了百度上的资料发现很多翻译很老旧,有些甚至是挂羊头卖狗肉. ...
- [转]gitlab ci/cd 发布
转自 https://meigit.readthedocs.io/en/latest/configure_gitlab_i18n_and_create_gitlab_ci_with_gitlab_ru ...
- GitLab私有化部署 - CI/CD - 持续集成/交付/部署 - 源代码托管 & 自动化部署
预期目标 源代码管理 借助GitLab实现源代码托管,私有化部署版本,创建项目,创建用户组,分配权限,项目的签入/牵出等. 自动化部署 源代码产生变更时(如签入),自动化编译并发布到指定服务器中部署, ...
随机推荐
- 【转载】Linux查看PCIe版本及速率【方法】PCIE的X4X8X16 查看 数量 怎么看
Linux查看PCIe版本及速率 PCIE有四种不同的规格,通过下图来了解下PCIE的其中2种规格 查看主板上的PCI插槽 # dmidecode | grep --color "P ...
- linux 视频输出xrandr设置命令
linux 视频输出xrandr设置命令 沈祥佑关注 0.592019.03.28 17:44:09字数 397阅读 6,886 xrandr 不带参数的xrandr 命令会列出系统支持的视频接口名称 ...
- CentOS7启动SSH服务报:Job for ssh.service failed because the control process exited with error code
CentOS7启动SSH服务报:Job for ssh.service failed because the control process exited with error code....... ...
- Linux 操作系统(一)命令&用户&权限
以下实例均在Centos7下验证 Centos7 查看命令帮助 man xxx 常用命令 ls / cd - #切到上次目录 cd #回家 cat cat f1 f2 cat f1 f2>f3 ...
- 013.Kubernetes认证授权
一 Kubernetes认证系统介绍 1.1 访问控制 Kubernetes API的每个请求都会经过多阶段的访问控制之后才会被接受,这包括认证.授权以及准入控制(Admission Control) ...
- Docker的介绍和安装(1)
一.虚拟化简介 1.虚拟化概念 计算机虚拟化(Computing Virtualization),一种资源管理技术,是指通过虚拟化技术将一台计算机的各种实体资源 , 如处理器 , 网络 , 内存及存储 ...
- linux进阶之网络技术管理
本节内容 1. 网络七层模型 物理层 数据链路层 网络层 传输层 会话层 表示层 应用层 2. TCP/UDP (1)TCP面向连接,可靠传输,消耗系统资源比较多,传输速度较慢,但是数据传 ...
- 惊奇发现KEIL也可以C++编译了
在Github上面浏览下载的一个工程,可以用KEIL打开,但是我竟然找不到mian函数.找了一圈发现是用到了面向对象的编程方法,那就必须支持C++,他怎么实现的呢? 看配置工程:明显的一个不一样 -- ...
- 文字闪烁效果 CSS + HTML
文字闪烁效果 CSS 写在前面 好好学习,天天向上! 效果图 绝美的效果 实现过程 先给没字体添加一些普通的样式,颜色设置为透明 给文字设置一个动画效果,通过text-shadow属性来实现变亮的效果 ...
- Django中的中英文切换
setting.py文件中 其中 zh-Hans是简体中文 zh-Hant是繁体中文 所以更改setttings.py 下 LANGUAGE_CODE = 'zh-Hans'即可 # 英文 LANGU ...