zoukankan      html  css  js  c++  java
  • asp.net core结合Gitlab-CI实现自动化部署

    0、目录


    整体架构目录:ASP.NET Core分布式项目实战-目录

    一、前言


    在之前的文章中写过k8s+Jenkins+GitLab-自动化部署asp.net core项目 的topic,这次讲解一下gitlab-ci的CI/CD,说实话,自动化部署是在是非常的舒服,而且gitlab-ci很适合中小项目的部署,大项目推荐使用k8s。

    阅读目录:

    1、gitlab-ci及gitlab-runner说明

    2、部署环境介绍

    3、安装gitlab和gitlab-runner

    4、asp.net core项目配置

    二、Gitlab-CI及Gitlab-Runner说明


    1、GitLab-CI

    即GitLab上的CI功能,持续集成功能
    可以实现代码提交后自动测试、编译、发布、部署等自动化工作
    持续集成是一种软件开发实践,即团队开发成员经常集成它们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。

    2、GitLab-Runner
    GitLab在接收到代码提交事件时,通过.gitlab-ci.yml的配置信息与对应节点上的runner进行交互。
    Runner需要在CI上进行注册后方可使用。
    Runner相当于代替人工在安装了Runner的服务器上运行yml文件上的配置。通常由GitLab上的项目更新触发。

    三、环境介绍

    IP(CentOS7) 组件
    192.168.161.140 gitlab、Docker
    192.168.161.142 gitlab-runner、Docker、git、dotnet sdk

     

    四、安装gitlab和gitalb-runner


    0、Docker安装的命令请看我之前写的文章

    传送门:Docker系列之CentOS7安装Docker(一)

    1、在140这台服务器上在Docker上运行gitalb

    此gitlab由于是测试,因此没有进行数据的挂载,在生产环境中需要用到数据的挂载。

    命令如下:这边要注意一下 gitlab需要用到22端口,而CentOS服务器ssh连接也是用22端口,因此需要让gitalb使用。具体操作可以看:CentOS服务器安装Telnet来远程连接服务器

    docker run --detach --hostname localhost --publish 443:443 --publish 80:80 --publish 22:22 --name gitlab --restart always gitlab/gitlab-ce:latest

     这样即可运行成功

    2、在142服务器上安装git

    在gitalb-ci.yml 文件中我有用到git 来进行拉取代码到本地服务器上的。

    命令:

    yum install -y git

    3、在服务器上安装dotnet SDK

    gitlab-ci.yml文件中git拉取完代码后需要把代码进行编译、发布出来,因此需要用到dotnet sdk。

    在安装.NET之前,您需要注册Microsoft密钥,注册产品存储库并安装所需的依赖项。这只需要每台机器完成一次。打开命令提示符并运行以下命令:

    sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm

    安装.NET SDK,更新可用于安装的产品,然后安装.NET SDK。在命令提示符中,运行以下命令:

    sudo yum update 
    sudo yum install libunwind libicu 
    sudo yum install dotnet-sdk-2.0.0

    4、现在可以在服务器上安装gitlab-runner了

    安装gitlab-runner的方式很多,有使用gitlab存储库的,以及手动安装,具体的可以参考官方给出的方案,这边我采用手动安装gitlab-runner

    下载二进制文件

    # Linux x86-64
    sudo wget -O /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64

     赋予权限:

    sudo chmod +x /usr/local/bin/gitlab-runner

     创建gitlabCI用户:

    sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash

    安装并作为运行服务:

    sudo /usr/local/bin/gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
    sudo /usr/local/bin/gitlab-runner start

     

    5、现在就开始注册我们的gitlab-runner啦

    注册runner需要配合我们的gitlab来操作。

    第一步:我们先打开一下我们的gitlab,切换到我们的Runners栏目

     在这里我们可以看到一个是 url和token,这两个内容是我们必须的。

    第二步:切换回我们的服务器上

    执行命令 注册:

    gitlab-runner register

    接下来要填写的信息比较多,具体请看下面的内容。

    注:第一个和第二个不要写错了,直接复制即可。

    注册完成后即可在gitlab Runners 中可以看到

    第三步:点击修改一下 runner

     把此栏目的勾选一下,否则在自动化部署时项目无法监测到runner的存在,除非项目上传的时候带上tag标签。

     

    然后我们选择一下 此runner 挂钩的 项目。我们选择项目,点击后面的 “Enable”即可。

     到目前为止gitlab配置完成,现在配置一下asp.net core项目吧

    五、asp.net core项目配置


      注:我已经把项目代码上传到github上,可供下载:gitlabci

     1、创建一个asp.net core webapi项目

    在项目中添加  .gitlab-ci.yml 文件,该文件是用来配置Runner对当前项目进行的操作。

    variables:
      GIT_STRATEGY: none
    stages:
      - test
    test_job:
      stage: test
      only: 
        - master
      script:
        - cd /home/gitproject
        - rm -rf /home/gitproject/gitrunner
        - git clone http://root:12345678@192.168.161.140/Team/gitrunner.git
        - cd ./gitrunner
        - dotnet build --configuration Release 
        - rm -rf /home/project/gitrunner
        - docker stop gitci
        - docker rm gitci
        - docker rmi gitciimages
        - dotnet publish -c Release --output /home/project/gitrunner
        - cd /home/project/gitrunner
        - docker build -t gitciimages .
        - docker run -d -v /home/project/gitrunner:/code -p 5001:80 --name gitci --restart always gitciimages

    具体的参数说明可以参考 gitlab官网给出的。gitlab-ci.yml 配置

    2、当然在项目里面也需要 Dockerfile文件

    Dockerfile,并且把Dockerfile文件设置为 始终复制,不然在发布的过程中会丢失文件。

    FROM microsoft/aspnetcore
    COPY . /code
    WORKDIR /code    
    EXPOSE 5001
    CMD ["dotnet","gitlabcicd.dll"]

    3、现在我们就可以使用 git上传代码啦

    上传后我们就可以在 gitlab Commits里面查看啦

    进入执行查看

     4、自此即可在我们的142服务器上的docker 查看到我们所运行的容器啦。

    六、总结


    上面的runner安装之前讲解了一种,其实还有很多种,具体可以看一下官方给出的案例。

    到目前为止发现自动化部署是在是太方便了。有gitlab- CI/CD、以及k8s CI/CD,当然还有gitlab结合jenkins CI/CD,有兴趣的同学可以看看我之前的文章。欢迎给我留言

    注:我已经把项目代码上传到github上,可供下载:gitlabci

    参考文档

    官方文档:https://docs.gitlab.com/runner/install/linux-repository.html
    注册runner:https://docs.gitlab.com/runner/register/index.html
    gitlab-ci.yml 配置:https://docs.gitlab.com/ee/ci/yaml/README.html#only-and-except-simplified
    DotnetSDK:https://www.microsoft.com/net/download/linux-package-manager/centos/sdk-2.0.0

    asp.net Core 交流群:787464275 欢迎加群交流
    如果您认为这篇文章还不错或者有所收获,您可以点击右下角的【推荐】按钮精神支持,因为这种支持是我继续写作,分享的最大动力!

    作者:LouieGuo

    微信公众号:欢迎关注                                                 QQ技术交流群: 欢迎加群

                    

  • 相关阅读:
    7月18日实习日志
    第二周总结
    7月15日实习日志
    7月14日实习日志
    7月13日实习日志
    7月12日实习日志
    7月11日实习日志
    第一周总结
    7月8日实习日志
    小飞机工作笔记(一)方案简述
  • 原文地址:https://www.cnblogs.com/guolianyu/p/9709166.html
Copyright © 2011-2022 走看看