使用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实现源代码托管,私有化部署版本,创建项目,创建用户组,分配权限,项目的签入/牵出等. 自动化部署 源代码产生变更时(如签入),自动化编译并发布到指定服务器中部署, ...
随机推荐
- 在Vim中查看文件编码和文件编码转换
在Vim中查看文件编码和文件编码转换 风亡小窝 关注 0.2 2016.09.26 22:43* 字数 244 阅读 5663评论 0喜欢 2 在Vim中查看文件编码 :set fileencodi ...
- Sqli-labs-master通关解析(持续更新中。。。)
大多情况下:SQL注入其实就是构造正确的mysql命令,让网页回显本不应该让我们看到的数据(如用户的账号和密码). 第一关-联合查询注入 查库 // 查看当前页面在的数据库 ?id=-1' union ...
- 9.4-6 kill & killall & pkill
kill:终止进程 能够终止你希望停止的进程. kill 命令的参数选项及说明 -l 列出全部的信号名称 -p 指定kill命令只打印相关进程的进程号,而不发送任何信号 -s 指定要 ...
- python3 xlrd包的用法
一.xlrd的安装 pip install xlrd 二.xlrd使用介绍 1.导入模块 import xlrd 2.打开Excel文件,实例化为readbook readbook = xlrd.op ...
- docker swarm外部验证负载均衡时不生效
问题描述 我在本地创建了3个装了centos7的虚拟机, 并初始化了swarm集群, 即1个manager节点, 2个worker节点; 三台机子的ip分别是 192.168.124.8 - (man ...
- [论文阅读笔记] Community aware random walk for network embedding
[论文阅读笔记] Community aware random walk for network embedding 本文结构 解决问题 主要贡献 算法原理 参考文献 (1) 解决问题 先前许多算法都 ...
- Go语言介绍(背景、特点)
一.go语言的背景 Go是一个开源的编程语言,它能让构造简单.可靠且高效的软件变得容易. Go(又称 Golang)是 Google 的 Rob Pike(罗勃.派克),Ken Thompson(肯· ...
- VUE3后台管理系统【路由鉴权】
前言: 在"VUE3后台管理系统[模板构建]"文章中,详细的介绍了我使用vue3.0和vite2.0构建的后台管理系统,虽然只是简单的一个后台管理系统,其中涉及的技术基本都覆盖了, ...
- 手把手带你快速入门jQuery(视频|资料,建议收藏!)
jQuery是什么? jQuery是一个快速.简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(或JavaScript框架). jQuery设计的宗旨是 ...
- 腾讯 angel 3.0:高效处理模型
腾讯 angel 3.0:高效处理模型 紧跟华为宣布新的 AI 框架开源的消息,腾讯又带来了全新的全栈机器学习平台 angel3.0.新版本功能特性覆盖了机器学习的各个阶段,包括:特征工程.模型训练. ...