git log 获取构建时间_Docker 运行 Jenkins 自动化构建 .NET Core 项目
(给DotNet加星标,提升.Net技能)
转自:ZKEASOFTzkea.net/codesnippet
目标
当代码提交到GitHub后,自动生成构建项目并部署到服务器。
接下来介绍一下如何在容器中运行Jenkins,并自动化构建GitHub上的项目,使用自动化构建来解放你的双手。
前置条件
一台已经安装了Docker的Ubuntu服务器,有公网IP并可通过IP或者域名访问。因为GitHub无法访问本地服务器,所以不能触发构建,只能手动触发构建。
这里我们选择使用基于.Net Core开发的纸壳CMS作为演示例子,一步一步搭建自动构建。
当然,一样可以不使用Docker在Windows、Linux上安装Jenkins来达到同样的目的。
Dockerfile
首先创建一个Dockerfile文件,文件名就是Dockerfile,然后输入以下内容:
FROM jenkins/jenkins:ltsUSER rootWORKDIR /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.gzENV PATH="${PATH}:/dotnet:/var/jenkins_home/.dotnet/tools"ENV DOTNET_ROOT="/dotnet"RUN apt update -yRUN apt install icu-devtools vim zip unzip -yRUN usermod -a -G root jenkinsUSER jenkins
简单说明一下这个Dockerfile里面都做了什么事情:
这个Docker镜像基于jenkins
设置当前用户为root,因为后面安装需要使用root
设置当前工作目录为dotnet
下载dotnet SDK包,保存为dotnet.tar.gz。这里要注意下载正确版本的SDK,可前往微软官方网站获取下载链接:https://dotnet.microsoft.com/download
解压dotnet SDK到当前目录,即/dotnet目录
删除dotnet SDK包
把dotnet目录和dotnet tools目录添加到环境变量PATH,这样就可以使用dotnet命令了
设置DOTNET_ROOT变量
更新源
安装一些必需的,常用的工具包,其中icu-devtools是运行dotnet需要的
修改jenkins用户到root附加组
设置当前用户为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 --name
运行命令以后会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:在文件复制完成后将会在远程服务器上执行该命令
到这里整个自动构建环境就搭配完成了。
推荐阅读 点击标题可跳转ASP.NET Core 3.x 授权中的概念一文带你了解C# DLR 的世界浏览器中的.NET Core Blazor WebAssembly
看完本文有收获?请转发分享给更多人
关注「DotNet」加星标,提升.Net技能
好文章,我在看❤️
git log 获取构建时间_Docker 运行 Jenkins 自动化构建 .NET Core 项目相关推荐
- 最新Jenkins自动化构建使用 (Unity2020+Jenkins+云效)
团队开发项目时,经常要频繁地推拉.打包项目,如果能让机器自动去做这些重复的工作,将节省大量时间. Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件 ...
- gitlab ci 自动化部署_前端gitLab加jenkins自动化构建和部署,以及服务器常用的linux命令行操作,免密登录...
常用的linux命令行操作 将项目部署到服务器后,需要查看文件是否已经部署成功,已经对文件进行增删改查操作,就需要用到命令行操作,常用操作如下: ll 罗列出当前文件或目录的详细信息,含有时间.读写权 ...
- Android项目jenkins自动化构建之360加固(一)
Android项目jenkins自动化构建之360加固(一) 最近Jenkins接手一个项目,项目自动化构建都是在jenkins上做的,包括打包构建--360加固--apk签名--邮件发送apk 总共 ...
- jmeter添加html,Jmeter 报告可视化 —— 配置生成测试报告仪表板,Jmeter + Jenkins 自动化构建生成 HTML 报告...
目录 一.jmeter报告仪表板相关信息 二.文件修改说明 三.jmeter.properties文件配置 四.user.properties文件配置 五.新建jtl报告目录 六.复制jmeter.p ...
- 【二十三】win 10 :Jmeter 报告可视化 —— 配置生成测试报告仪表板,Jmeter + Jenkins 自动化构建生成 HTML 报告
目录 一.jmeter报告仪表板相关信息 二.文件修改说明 三.jmeter.properties文件配置 四.user.properties文件配置 五.新建jtl报告目录 六.复制jmeter.p ...
- 基于Jenkins自动化部署spring boot项目
1. 使用Jenkins来实现微服务架构下的自动化部署! 在微服务架构中,随着项目拆分越来越细,导致服务越来越多,服务的打包部署就会成为一个相当麻烦的事情.在我之前工作的公司都是本地打包好,上传到服务 ...
- Docker中安装Jenkins实时发布.net core 项目(二)
Docker中安装Jenkins实时发布.net core 项目 防坑点 升级docker jenkins运行 运行命令 jenkins拉取git并构建项目 其他 查看发布文件 防坑点 升级docke ...
- Docker中安装Jenkins实时发布.net core 项目(一)
Docker中安装Jenkins实时发布.net core 项目 安装docker 懒人篇 手动安装 dockerfile安装jenkins 常规安装jenkins jenkins的安装 搜索jenk ...
- Jenkins自动化部署前端Vue项目
Jenkins自动化部署前端Vue项目 前言 安装NodeJs 下载NodeJs 安装NodeJs npm配置 Jenkins配置NodeJs 安装NodeJs插件 配置NodeJs 新建及配置任务 ...
最新文章
- java 取字段_java – 获取字段的名称
- 如何显示服务器上excel,如何在HTML中使用OWC正确显示、加载服务器端的excel文件呢?...
- ref 与 out 参数的区别
- php解析api xml并输出到html页面,怎样操作JS读取xml内容并输出到div内
- 赶紧3分钟学完15分钟的内容我要出去玩(8)
- leetcode1466. 重新规划路线(dfs)
- PrestaShop物流跟踪模块
- 公众号的秘密,知道一个biz就够了
- Percona XtraBackup 数据恢复工具安装 ubuntu 16.04
- OpenShift 4 - 运行Spark和Zeppelin大数据应用
- 用谷歌浏览器来模拟手机浏览器
- Python爬虫实战02:分析Ajax请求并抓取今日头条街拍
- 因开源协议“大打出手”,AWS 宣布创建 Elasticsearch、Kibana 分支
- nyoj--32--组合数
- Java反射异常处理之InvocationTargetException
- 交换机cad图例_网络交换机cad图
- 基本知识 100052
- 【WIN】超简单的Excel密码破解
- PiXYZStudio:Revit 模型轻量化
- @kubernetes(k8s)label标签的使用及service代理模式
热门文章
- VS2019 windows桌面应用_多邻国英语测试推出桌面应用程序,确保考试环境安全可靠...
- mysql触发器对同一张表做操作_MySql 触发器对同表操作
- phpcms调用栏目描述_phpcms v9栏目列表调用每一篇文章内容方法
- bootloader搞定,1.67秒!
- oracle根据分区移动,Oracle 12c 在线移动分区和部分分区read only
- pymysql连接mysql_python使用MYSQL数据库
- c语言 结构数组读取,有关文件读写到结构体数组问题;
- visual studio输入法打不了中文_我为什么不用Mac自带输入法
- using namespace cv_闪耀暖暖万圣节非凡魔女南瓜套公开 消耗钻石获取 大喵无CV
- Java如何解决mysql读写延迟_java中延迟任务的处理方式