zoukankan      html  css  js  c++  java
  • 用Docker运行Jenkins自动化构建.NET Core项目

    目标

    当代码提交到GitHub后,自动生成构建项目并部署到服务器。接下来介绍一下如何在容器中运行Jenkins,并自动化构建GitHub上的项目,使用自动化构建来解放你的双手。

    前置条件

    一台已经安装了Docker的Ubuntu服务器,有公网IP并可通过IP或者域名访问。因为GitHub无法访问本地服务器,所以不能触发构建,只能手动触发构建。

    这里我们选择使用基于.Net Core开发的纸壳CMS作为演示例子,一步一步搭建自动构建。

    当然,一样可以不使用Docker在Windows、Linux上安装Jenkins来达到同样的目的。

    Dockerfile

    首先创建一个Dockerfile文件,文件名就是Dockerfile,然后输入以下内容:

    FROM jenkins/jenkins:lts
    USER root
    WORKDIR /dotnet
    RUN wget -O dotnet.tar.gz https://download.visualstudio.microsoft.com/download/pr/72ce4d40-9063-4a2e-a962-0bf2574f75d1/5463bb92cff4f9c76935838d1efbc757/dotnet-sdk-3.0.100-preview6-012264-linux-x64.tar.gz
    RUN tar zxf dotnet.tar.gz -C ./
    RUN rm -rf dotnet.tar.gz
    ENV PATH="${PATH}:/dotnet:/var/jenkins_home/.dotnet/tools"
    ENV DOTNET_ROOT="/dotnet"
    RUN apt update -y
    RUN apt install icu-devtools vim zip unzip -y
    RUN usermod -a -G root jenkins
    USER jenkins

    简单说明一下这个Dockerfile里面都做了什么事情:

    1. 这个Docker镜像基于jenkins
    2. 设置当前用户为root,因为后面安装需要使用root
    3. 设置当前工作目录为dotnet
    4. 下载dotnet SDK包,保存为dotnet.tar.gz。这里要注意下载正确版本的SDK,可前往微软官方网站获取下载链接:https://dotnet.microsoft.com/download
    5. 解压dotnet SDK到当前目录,即/dotnet目录
    6. 删除dotnet SDK包
    7. 把dotnet目录和dotnet tools目录添加到环境变量PATH,这样就可以使用dotnet命令了
    8. 设置DOTNET_ROOT变量
    9. 更新源
    10. 安装一些必需的,常用的工具包,其中icu-devtools是运行dotnet需要的
    11. 修改jenkins用户到root附加组
    12. 设置当前用户为jenkins

    到这里,Dockerfile就定义完成了。当你的项目升级到更新版本的.Net Core时,只需要进入容器下载对应的.Net Core SDK就可以了。

    生成Docker镜像

    接下来使用以下命令来生成Docker镜像,镜像名为jenkins,Tag是dotnet:

    docker build -t jenkins:dotnet .

    生成这个镜像要花数分钟的时间,请耐心等待:

     

    生成完成以后,可以使用docker images命令查看所有镜像

     

    运行Jenkins实例

    使用docker run命令来运行一个jenkins实例,注意映射端口,右边的8080,50000是Jenkin的默认端口,左边的是Docker宿主机的端口,可以按情况修改:

    docker run -p 8080:8080 -p 50000:50000 --name jenkins jenkins:dotnet

    运行命令以后会jenkins会自动初始化,当控制台上出现Jenkins is fully up and running的时候就初始化完成了,同时可以看到上面有一个admin的初始化密码,把它复制下来,在第一次使用Jenkins的时候要使用到这个密码。

    打开浏览器,在地址栏中输入服务器的IP地址和端口号访问jenkins:

     

    然后将刚才复制下来的密码,粘贴到密码输入框中,然后点击继续:

     

    然后点击选择安装插件,因为除了默认推荐的插件,我们还需要安装一些其它插件:

     

    除了推荐的插件外,我们还需要安装GitHub的插件,Publish Over SSH插件,这个插件可以将你发布好的程序通过SSH复制到你的服务器上

     

    然后点击安装,等待安装完成:

     

    插件安装完成以后,输入初始化用户名和密码等信息后,就可以开始使用Jenkins了:

     

    接下来的使用默认信息一直点下一步就可以了。

    添加项目

    点击添加新作业,创建一个项目:

     

    输入名称,选择Freestyle project,然后点击ok创建:

     

    勾选GitHub project,然后输入项目地址:

     

    在源码管理里面选择git,然后输入git地址:

     

    有了源代码之后,就可以添加生成操作了。在生成这里添加一个执行shell的步骤,我们将在这里使用dotnet的publish命令来发布项目

     

    然后就可以在这里输入dotnet publish命令了:

     

    因为我们这里演示使用的是纸壳CMS,有点不一样,需要使用官方的发布工具,所以要输入以下命令:

     

    由于ZKEACMS.Publisher没有在容器中安装,所以发布会报错,这里我们还需要进入窗口安装一下发布工具,首先进入容器:

    docker exec -it jenkins bash

    然后使用以下命令来安装发布工具: 

    dotnet tool install -g ZKEACMS.Publisher

    点击保存。到这里,添加项目,并且发布项目就完成了,点击立即生成来尝试生成一下:

     

    Build History里面可以看到所有的构建历史记录,点击进度条,可以查看当前生成任务的控制台输出:

     

    到这里,生成、发布已经可以了,但是提交代码后不会自动触发,我们需要在GitHub上添加一个Webhook,来自动触发生成、发布。

    添加GitHub Webhook

    首先,开启项目的GitHub触发事件,点击配置项目:

     

    然后勾选生成事件中的GitHub hook trigger

     

    接下来要在GitHub上设置项目的Webhook,点击项目设置下的Webhooks来添加

     

    注意jenkins的github插件设定的默认的GitHub的Webhook地址是{IP}:端口/github-webhook/,所以在Payload URL输入以下URL即可,如果有域名可以使用域名:

     

    在添加完后,GitHub会先尝试一送一个请求,这时候就可以到Jenkins看一下是否会生成了。如果没有生成,可以通过查看log来了解原因:

     

    部署到服务器

    现在自动触发构建已经设置好了,就剩下最后一步,将发布好的程序推送到服务器。

    首先,要在Jenkins里面配置服务器的相关信息,点击Manage Jenkins:

    选择Configure System:

     

    然后输入服务器的相关信息,Jenkins将会使用这些信息来远程连接你的服务器:

     

    注意:devops目录须要在目录服务器上存在。

    添加完服务器后,再次编辑项目,添加一个生成步骤,该步骤就是发送文件:

    输入要复制的文件目录,和在复制完成之后要执行的命令,文件复制完成以后,我们重新启动一下程序的服务:

     

    • Source files:要复制的文件
    • Remove prefix:如果不输入,目标服务器的devops目录(在配置SSH服务器的时候指定的目录)下会创建和Sourece files一样的目录结构
    • Remote directory:目标服务器下devops目录下的子目录
    • Exec command:在文件复制完成后将会在远程服务器上执行该命令

    到这里整个自动构建环境就搭配完成了。

    源文地址:https://www.zkea.net/codesnippet/detail/docker-jenkins-dotnet-core.html

  • 相关阅读:
    Ubuntu adb devices :???????????? no permissions (verify udev rules) 解决方法
    ubuntu 关闭显示器的命令
    ubuntu android studio kvm
    ubuntu 14.04版本更改文件夹背景色为草绿色
    ubuntu 创建桌面快捷方式
    Ubuntu 如何更改用户密码
    ubuntu 14.04 返回到经典桌面方法
    ubuntu 信使(iptux) 创建桌面快捷方式
    Eclipse failed to get the required ADT version number from the sdk
    Eclipse '<>' operator is not allowed for source level below 1.7
  • 原文地址:https://www.cnblogs.com/seriawei/p/docker-jenkins-dotnet.html
Copyright © 2011-2022 走看看