使用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实现源代码托管,私有化部署版本,创建项目,创建用户组,分配权限,项目的签入/牵出等. 自动化部署 源代码产生变更时(如签入),自动化编译并发布到指定服务器中部署, ...
随机推荐
- (代替人类)很多操作都在Settings里面。 5.安装第三方库
2020-02-01 pycharm 使用教程 LingSmart关注 0.0842020.02.07 15:08:50字数 1,394阅读 680 实在无聊,就来学习吧.学习pycharm的使用教程 ...
- centos 6 x64 yum(sohu)
centos 6 x64 yum(sohu) weixin_34405354 2012-08-23 10:07:35 24 收藏 文章标签: 运维 版权 [base] name=Base baseur ...
- www.heihei.work站长日记
____________2020-03-30_________________晴 昨天刚加的游客IP统计选取一部分查了下地址,小朋友你是不是有很多问号??? 36.99.136.142河南 电信 47 ...
- python3 xlrd包的用法
一.xlrd的安装 pip install xlrd 二.xlrd使用介绍 1.导入模块 import xlrd 2.打开Excel文件,实例化为readbook readbook = xlrd.op ...
- Go基础结构与类型01---常量变量表达式
// 包名(main包下的main函数是程序的入口) package main // 导入sdk(software developing kit)中的fmt包 import "fmt&quo ...
- javascript数组排序之冒泡排序
冒泡排序 作为一名程序员数组的排序算法是必须要掌握的,今天来说最简单的一种数组排序----冒泡排序 冒泡排序原理 冒泡排序算法是一种简单直观的排序算法.它重复地走访过要排序的数列,一次比较两个元素,如 ...
- 书列荐书 |《至关重要的关系》 【美】里德·霍夫曼
本书的内容不算多,堪称精辟,有些东西甚至可以作为指导思想.括号内为书列君书评. 经典语录: 每个人都是企业家!(否则你无法最大化努力!) 创业和做人是相通的.我们要有计划,要执着,但是也要有弹性,懂得 ...
- (重磅)Internal: Failed to call ThenRnnForward with model config问题的解决(Keras 2.4.3和Tensorflow2.0系列)
与此问题斗争了整整十天.win10,keras2.4.3,CUDA 10.1,CUDNN 7.6, tensorflow 2.3.0,驱动程序nvida 452 该问题出现在BiLSTM(GPU加速) ...
- Pass算子python 函数
Pass算子python 函数 函数 函数是代码的一种组织形式 函数应该能完成一项特定的工作,而且一般一个函数只完成一项工作 有些语言,分函数和过程两个概念,通俗解释是,有返回结果的是函数,无返回结果 ...
- SystemML大规模机器学习,优化算子融合方案的研究
SystemML大规模机器学习,优化算子融合方案的研究 摘要 许多大规模机器学习(ML)系统允许通过线性代数程序指定定制的ML算法,然后自动生成有效的执行计划.在这种情况下,优化的机会融合基本算子的熔 ...