目标

当代码提交到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:在文件复制完成后将会在远程服务器上执行该命令

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

原文地址

用Docker运行Jenkins自动化构建ASP.NET Core项目​www.zkea.net

docker jenkin下载缓慢_用Docker运行Jenkins自动化构建ASP.NET Core项目相关推荐

  1. git log 获取构建时间_Docker 运行 Jenkins 自动化构建 .NET Core 项目

    (给DotNet加星标,提升.Net技能) 转自:ZKEASOFTzkea.net/codesnippet 目标 当代码提交到GitHub后,自动生成构建项目并部署到服务器. 接下来介绍一下如何在容器 ...

  2. gitlab ci 自动化部署_前端gitLab加jenkins自动化构建和部署,以及服务器常用的linux命令行操作,免密登录...

    常用的linux命令行操作 将项目部署到服务器后,需要查看文件是否已经部署成功,已经对文件进行增删改查操作,就需要用到命令行操作,常用操作如下: ll 罗列出当前文件或目录的详细信息,含有时间.读写权 ...

  3. Centos7 amp;amp; Docker amp;amp; Jenkins amp;amp; ASP.NET Core

    写在前面 Docker一直很火热,一直想把原本的Jenkins自动部署工具搬到Docker上面,无奈今年一直忙于各种事情,迟迟未实施这个事情,正好迎来了dotnet core 2.0 的正式发布,升级 ...

  4. 从零实操基于WSL2 Docker部署Asp.Net Core项目

    前言 平日在公司里都是基于阿里Teambition中的飞流进行Docker部署Api项目或服务,已经习惯了那一套成熟的操作流程,开发和部署确实快捷方便,但是还没在自己的电脑上进行操作过,特别是Wind ...

  5. 如何使用vs将asp.net core项目添加容器支持并发布docker镜像到私有dockerhub和添加k8s/helm管理...

    这篇文章介绍一下,如何使用VS2017给asp.net core添加容器支持,并发布镜像到私有docker hub,然后用chart管理容器镜像的操作流程. 话不多说,just do it. 新建项目 ...

  6. 在传统.NET Framework 上运行ASP.NET Core项目

    新的项目我们想用ASP.NET Core来开发,但是苦于我们历史的遗产很多,比如<使用 JavaScriptService 在.NET Core 里实现DES加密算法>,我们要估计等到.N ...

  7. docker没有下载完全_会用Docker的人都别装了,这多简单呐

    学术又官方的说法 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows 机器上,也可以实现虚拟化,容器是 ...

  8. 服务器运维浏览器,本机浏览器如何访问docker容器的内容_网站服务器运行维护,浏览器,docker...

    docker无法下载镜像怎么办_网站服务器运行维护 docker无法下载镜像的解决方法是:1.运行命令[systemctl stop firewalld]关闭防火墙:2.运行命令[date -s xx ...

  9. docker没有下载完全_看完此文,妈妈还会担心你docker入不了门?

    上周对象突然心血来潮说想养个小宠物,我问想养啥她又说随便,你看着办!!!这我真的比较难办啊!但是咱们程序员能有个对象就不错了,还不赶紧宠着,我只能照办咯! 我去到了一家宠物店,半天也没有找到合适的目标 ...

  10. docker desktop ubuntu镜像_原创 | Docker入门,看了不理解,假一赔命

    写在前面 这篇博客适合谁? 对于Docker并不了解,只是有一点模糊的感觉,觉得Docker可以当成虚拟机用之类的 只是下载了Docker软件,对于怎么配置,怎么玩,第一步干什么,完全一无所知 其二, ...

最新文章

  1. 内存缓存LruCache的简单使用
  2. Oracle 中多个字段显示成一列
  3. 杨兴平离职完全是意料之中
  4. 洛谷P3809 后缀排序【后缀数组】【模板】
  5. 摘要注释_论文摘要怎么写,小编来帮你
  6. CG CTF WEB 密码重置2
  7. Implementation of WC in JAVA
  8. php 累,php 记录进行累结果
  9. Google第一女神李飞飞,从洗碗工蜕变成为首席科学家
  10. Maven -- 未完待续
  11. 互联网架构设计漫谈 (5)-搞清SpringCloud
  12. 【Flink】Flink使用withParameters(Configuration)传参
  13. Web — 概述、国际标准概述、特点+扩展名类型
  14. IIS的URL重写(url地址映射)
  15. 基于KELI5 新建一个STM32 project流程
  16. 一看就懂:正则表达式
  17. 计算机二级知识普及挑战赛答案,全国计算机二级试题库
  18. 遥感应用中影像最佳波段组合分析详细过程
  19. 演出节目名字_【时空文化集团演出公司承制】山东港口首届道德模范、最美家庭颁奖典礼成功举办!...
  20. 2.3 pandas:汇总和计算描述统计(统计上的方法)

热门文章

  1. 2021-08-27 向量究竟是什么?线性代数的本质,第1章
  2. 20200725每日一句
  3. 慕课网 jupyter notebook魔法方法学习小记
  4. Atitit  信息管理 艾提拉著 CAPT2 数据存储与分类 聚集.docx 目录 1. 按照存储位置 1 1.1. 网盘 1 1.2. 存储在eml imap中 方便检索 1 1.3. 分散与
  5. Atitit zip压缩过滤器 的模块功能语实现attilax总结 1.1. 一般可以使用webserver自带的实现,。如果实现的不好或者不好配置的,或者需要精细化控制的,可以自己使用过滤器实现。
  6. atitit 国家与社区发展战略研究attilax 总结 v2 .docx
  7. Atitit 软件开发中 瓦哈比派的核心含义以及修行方法以及对我们生活与工作中的指导意义
  8. Paip.最佳实践-- Buildin variale 内建变量 ,魔术变量,预定义变量,系统常量,系统变量 1
  9. PAIP.彩票系统的对外接口流程实录
  10. Rust:命令行参数与环境变量操作