首页 > 其他分享 >docker部署gitlab CI/CD (二)终篇:部署gitlab runner和添加gitlab-ci.yml文件 终极踩坑版

docker部署gitlab CI/CD (二)终篇:部署gitlab runner和添加gitlab-ci.yml文件 终极踩坑版

时间:2023-04-24 10:33:52浏览次数:56  
标签:webapi run 部署 gitlab runner docker com 终篇

网上教程很多,但断断续续,先不说大部分都是只截取片段,让人云里雾里,不会的看不懂,懂的不需要看,根据步骤跑不起来不说,改了一堆,完全不解释为什么,也分不清是官方要求还是作者自己夹带的私货。痛定思痛,抛弃任何教程,根据报错实时改进,于2023年4月24日完成此篇。

官方文档:

  https://docs.gitlab.com/runner/install/docker.html

前提:

  已部署gitlab,可参阅 docker部署gitlab CI/CD (一)第一篇:部署gitlab及汉化,内附官方文档链接

开始:

  #1.拉取并启动runner

 docker run -d --name runner --network=host --restart always -v /srv/gitlab-runner/config:/etc/gitlab-runner -v /var/run/docker.sock:/var/run/docker.sock gitlab/gitlab-runner:latest

官网没有--network=host这句话,正常情况不需要加。但是我在公司实际测试中,在后面的过程会说请求不到gitlab,加上这句话就好了

注意,挂载目录不能改,不然到最后会报错,找不到docker的守护进程:Preparation failed: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

  #2.进入容器内部

docker exec -it 容器id /bin/bash

  #3.runner注册

gitlab-runner register

 如图,打开你的项目设置,把URL和token都复制进入

 如图,自己填,tag需要记一下,后续的ci文件里要用到,镜像由于注册的时候还不懂,随便填了一个,应该填你的项目依赖的环境镜像,mcr.microsoft.com/dotnet/sdk:6.0,随便填也无所谓,yml文件里可以指定

如下图,刷新你的设置页面,会显示已经有了

  #4.docker部署的必要环节:修改runner的config文件

默认他会每次拉取hub里的镜像,我想改成使用本地镜像,可以用vi命令,也可以自己用其他方法改

vi /srv/gitlab-runner/config/config.toml

有就改,没有就结尾加上 pull_policy = "if-not-present"

由于runner默认不识别docker命令,所以 volumes加上 "/usr/bin/docker:/usr/bin/docker", "/var/run/docker.sock:/var/run/docker.sock"

官方配置说明:https://docs.gitlab.com/runner/configuration/advanced-configuration.html

改完就生效,不用重启

   #5.添加.gitlab-ci.yml文件

项目根目录创建.gitlab-ci.yml文件,官方各语言项目模板参考:https://gitlab.com/gitlab-org/gitlab/-/tree/master/lib/gitlab/ci/templates

以下附上net6项目的简略文件

image: mcr.microsoft.com/dotnet/sdk:6.0

variables:
  VERSION: "$CI_PIPELINE_ID"

stages:
  - deploy

deploy:
  stage: deploy
  script:
    - echo "开始构建镜像:webapi:${VERSION}"
    - docker build -t webapi:${VERSION} -f ./webapi/Dockerfile .
    - if [ $(docker ps -aq --filter name=webapi) ]; then 
        echo "暂停旧版容器";
        docker stop webapi;
        echo "删除旧版容器";
        docker rm webapi;
      fi
    - echo "启动新容器"
    - docker run -d --name webapi -p 5566:5566 -p 5567:5567 webapi:${VERSION} 
only: 
  - production 
tags: 
  - dotnet

解释:

image:mcr.microsoft.com/dotnet/sdk:6.0。依赖net6环境

stages: 定义了多个构建阶段,部署(deploy)阶段。这些阶段将按照定义的顺序依次执行。

$CI_PIPELINE_ID:内置变量,取当前流水线id为版本号

if,如果存在名为webapi的容器,就暂停并删除容器

only: -production  只有production分钟的改动才启动deploy阶段

tages: 用于为任务指定标签,让标签为dotnet的runner执行。

  #6.把环境拉取到本地

因为前文把runner改为了使用本地镜像,所以需要先把net6sdk拉取到本地

docker pull mcr.microsoft.com/dotnet/sdk:6.0

  #7.项目提交改动到gitlab

个人建议先拿前端项目练手,因为后端项目依赖比较复杂,坑比较多,我这还涉及依赖私有nuget包等问题,带来的挫折感,陆陆续续搞了两周才完事。

提交改动,然后打开项目的CI/CD流水线,等一等就会发现已经通过

查看控制台,也可以看到,任务执行成功,build成功,且把我docker里的旧容器删了,重新拿新镜像run了一个新的

结束

标签:webapi,run,部署,gitlab,runner,docker,com,终篇
From: https://www.cnblogs.com/gaoxiong666/p/17336256.html

相关文章

  • .NET CORE开源 DDD微服务 支持 多租户 单点登录 多级缓存、自动任务、分布式、日志、
    源代码地址https://github.com/junkai-li/NetCoreKevin基于NET6搭建跨平台DDD思想WebApi架构、IDS4单点登录、多缓存、自动任务、分布式、多租户、日志、授权和鉴权、CAP、SignalR、docker部署 如需简约项目可直接去除项目引用解耦设计都可以单独引用架构默认全部引用并启动......
  • [ Docker ] 部署 nps 和 npc 实现内网穿透
    https://www.cnblogs.com/yeungchie/云主机上运行nps创建映射目录mkdir-p~/docker/nps/config拉取镜像dockerpulloldiy/nps-server运行容器创建容器dockerrun-d--namenps--net=host-v/root/docker/nps/config:/nps/confoldiy/nps-server现在nps已经开......
  • DNS部署与安全
    1、DNS(DomainNameService)域名解析服务作用:为客户机提供域名解析服务器2、域名组成2.1、域名组成概述如"www.sina.com.cn"是一个域名,从严格意义上讲,"sina.com.cn"才被称为域名(全球唯一),而"www"是主机名。"主机名.域名"称为完全限定域名(FQDN)。一个域名下可以有多个主机,域名......
  • zabbix 安装部署及应用
    一、Zabbix概述作为一个运维,需要会使用监控系统查看服务器状态以及网站流量指标,利用监控系统的数据去了解上线发布的结果,和网站的健康状态。利用一个优秀的监控软件,我们可以:●通过一个友好的界面进行浏览整个网站所有的服务器状态●可以在Web前端方便的查看监控数据●可以回......
  • docker部署gitlab-runner
    要求在注册runner之前,您必须首先:将其安装在与安装GitLab的服务器不同的服务器上获取令牌:对于共享运行器,让管理员转到GitLab管理区域并选择Overview>Runners对于grouprunner,转到CI/CD>Runners对于projectrunner,转到Settings>CI/CD并展开Runners部分生成配......
  • Kubesphere中DevOps流水线无法部署/部署失败
    摘要总算能让devops运行以后,流水线却卡在了deploy这一步。碰到了两个比较大的问题,一个是无法使用k8sp自带的kubeconfig认证去部署;一个是部署好了以后但是没有办法解析镜像名。版本信息k8s:v1.21.5k8sp:v3.3.0流水线概览Q问题描述pipeline在deploy的阶段总是报各种错。Q1.......
  • xxl-job 安装部署
    下载源码https://github.com/xuxueli/xxl-job.git配置数据库执行源码下doc.db下的sql修改application.properties配置文件#修改为自己的数据库spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serv......
  • 云原生之部署wordpress博客及设置圣诞主题风格
    (云原生之部署wordpress博客及设置圣诞主题风格)一、前言1.本次实践目的1.使用docker部署wordpress网站2.配置圣诞主题风格2.wordpress介绍WordPress是使用PHP语言开发的博客平台,用户可以在支持PHP和MySQL数据库的服务器上架设属于自己的网站。也可以把WordPress当作一个......
  • tdengine安装部署
    1.下载最新版本https://docs.taosdata.com/get-started/package/#!官方网址,详细介绍都有2.centos7上解压文件tar-zxvfTDengine-server--Linux-x64.tar.gz3.安装进入解压后的目录,执行sudo./install.sh4.自定义日志,缓存,数据存储位置创建三个文件夹修改配置文件vim/et......
  • 基于docker 安装的gitlab 升级
    gitlab升级背景现在的gitlab版本是13.0.1,目标是14.9.5因为,这个版本及以后支持禅道集成。升级过程先备份数据gitlab-rakegitlab:backup:create#有两个文件需要手工备份#gitlab.rb路径:/etc/gitlab/gitlab.rb#gitlab-secrets.json路径:/etc/gitlab/gitlab-secrets.js......