zoukankan      html  css  js  c++  java
  • .Net core 使用Jenkins + Docker + Azure Devops(或者GitHub、GitLab) 持续集成(CI/CD)

        目前CI/CD挺火的,这里使用的Jenkins + Docker + Azure Devops 部署,或者可以用这套Jenkins + Docker + Github或GitLab部署,

        进入正题:  第零点:当然要先安装.Net core 运行时,官网上就有下载。

        首先  这里的jenkins并不是装在docker里面的jenkins,是直接安装到linux上的jenkins。其实安装在docker更加方便,因为这样系统不用安装JavaSdk,我参考的是晓晨的博客,原文链接:https://www.cnblogs.com/stulzq/p/9291237.html ,这里要强调的是:1、首先我们先要安装java环境,参考晓晨的博客,原文链接:https://www.cnblogs.com/stulzq/p/9286878.html 里面非常详细的介绍。 

    但是这里要注意的就是:

    官网地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 在官网下载需要点击这个选项才能下载,下载框中的那个就可以了。

     

    然后jenkins安装晓晨的博客已经说的非常明白了。

    接下来就是 Azure Devops的说明,微软这个东西挺不错的,配合vs使用也挺好用的,但是还是比不上github,

    如图:可以建立自己的分支上传(push)和拉取(pull),从某分支合并(merge),完成团队协作。基本上使用非常简单,通过vs就可以直接新建项目到 Azure Devops,也可以建立多个分支,达到团队协作的目的,这里就不详细说明啦。

    接下来就是docker 的安装了,这里也是参考晓晨博客,原文地址:http://www.cnblogs.com/stulzq/p/7743073.html,这里要说明的就是我们需要安装docker-compose ,这样就可以运行dockerfile文件脚本,达到自动部署的目的。

    好吧,基本上安装完之后,我们就可以开始了:

    首先我们需要在jenkins上面新建一个任务,自由风格的软件项目: (这里有一部分参考晓晨的博客,原文链接:http://www.cnblogs.com/stulzq/p/8627824.html

     然后点击ok进入下一个页面,这里的是丢弃旧的构建,因为太多就占磁盘了,第一个是保留几天的build记录,第二个是最多保留多少个构建,设小一点就不会占很多硬盘空间了。

    然后就是git的地址了:

    上图的git地址, 就是这里的git clone地址 (当然git地址都行):

    还需要注意的就是凭证(再点击右上角你的账户下的security):

    在这里面填入名称密码就可以了,然后在上面的凭证Credentials填入就行了:

    接下来就是jenkins拉取代码的时间(这里 H/2 * * * * 是两分钟拉取一次):

    然后是拉取后,构建执行的命令:

    jenkins拉取代码后会判断代码与之前的是否不一致,如果不一致,则会执行构建。

    接下来是docker的说明:可以看到上图的命令,倒数两行,会执行这个脚本文件,这个脚本文件实际上是docker的一些命令,所以我们需要在项目目录中添加这个脚本文件,我就是直接添加TXT文件改后缀.sh。(有点low。。。。)

    来看看这个脚本里面放什么:

    #!/bin/sh
    docker container ls -a | grep "tr"
    if [ $? -eq 0 ];then
        docker container stop tr
        docker container rm tr
        docker rmi  tr
        docker network ls |grep tr
        docker network rm tr
    fi
    
    docker build -t tr --build-arg env="Development" .
    docker run -d --restart=always  -p 8051:80 --name tr tr
    docker cp /etc/localtime tr:/etc/

    可以看到就是如果存在tr 先停止 删除 然后再构建。当然我们也得有dockerfile这个文件,构建的时候docker会去找到dockerfile 然后执行里面的命令(dockerfile在新建.net core项目的时候勾选支持docker就可以咯,还有直接添加txt 去掉后缀也行哈哈哈)

    然后看看dockerfile有什么:

    # 基于dotnet基础环境构建镜像
    FROM docker.io/microsoft/dotnet
    
    RUN mkdir /TR
    #定义参数
    ARG env
    # 把发布的内容拷贝到docker容器的TR目录下
    COPY /publish /TR
    # 设置工作目录
    WORKDIR /TR
    # 暴露80端口
    EXPOSE 80
    # 设置环境变量
    ENV ASPNETCORE_ENVIRONMENT=$env
    # 启动web
    RUN echo "执行环境: $env"
    CMD ["dotnet","TR.dll"]

    dockerfile指令详解说明:https://yeasy.gitbooks.io/docker_practice/content/image/dockerfile/,里面都有说明就不多说了,要注意的就是,大致的流程就是首先我们上传代码到Azure Devops上,然后jenkins根据凭证去Azure Devops拉取代码到服务器上,执行命令脚本构建,然后就交给脚本执行,找到dockfile执行,重构镜像再生成容器。网站就部署到docker里面了。

    大致的就是这样,感谢晓晨的博客,给了我非常大的帮助,这就是晓晨的博客地址:https://www.cnblogs.com/stulzq/

  • 相关阅读:
    股指期货风声水起 股市"蛇人″给我们启示
    Goals of Distributed Application Design
    火箭股票,火箭发射(07.4.12)
    SQLAlchemy完全入门
    巧用异或
    FastAPI启用HTTPS
    错误记录:Can't connect to MySQL server on xxx
    MySQL常用命令
    就是想写点什么
    Android关于Activity class {package/class} does not exist
  • 原文地址:https://www.cnblogs.com/Ivan-Wu/p/10103688.html
Copyright © 2011-2022 走看看