最近一直在研究docker和kubernetes,小型的项目其实也用不到k8s,本文就是描述如何用jenkins 进行构建asp.net core 3.1项目并且发布到远程服务器docker容器中。本文也是对自己学习过程中的记录。

本文包含以下技术点:

1、CentOS 7 安装Jenkins与必要的配置

2、CentOS 7 安装 Git 与 dotnet core sdk

3、Jenkins全局配置与构建任务的配置

    一、CentOS 7 安装Jenkins与必要的配置

       首先需要安装java环境,因为Jenkins基于java。java的安装可参考 https://www.cnblogs.com/stulzq/p/9286878.html 

可以去Jenkins官网去下载rpm包,但是网速太慢了,这里推荐用 清华大学开源软件镜像站 去下载 Jenkins的rpm包。如下图:

这里下载2.223的最新版本,在centos 中使用: sudo  wget https://mirrors4.tuna.tsinghua.edu.cn/jenkins/redhat/jenkins-2.223-1.1.noarch.rpm 命令进行下载:

然后使用命令:rpm -ivh jenkins-2.223-1.1.noarch.rpm 安装

配置jenkins 用户为root,这里可以避免很多权限问题,如下图:

使用命令 systemctl restart jenkins 重启jenkins。然后使用命令:systemctl status jenkins 查看下jenkins是否正常启动,如下图:

这时,我们就可以通过 http://ip:8080 进行访问了。具体的初始化配置,这里就略过,可以自行百度。

初始化jenkins的过程中,jenkins会让我们安装一些 推荐的插件,我们选择后,有些插件会安装失败,是因为软件源的问题。我们可以选择跳过,然后进入jenkins。

这里可以在 系统管理--》插件管理--》高级 选项卡中 的配置中,配置清华软件镜像站的地址 https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json,替换官方默认的地址,

然后我们再修复插件的安装。如下图:

我们利用jenkins构建完asp.net core 程序后,需要将发布好的文件推送到远程linux服务器中,还需要远程执行脚本,操作远程服务器的Docker,这时我们需要安装插件 Publish Over SSH

在 系统管理--》插件管理--》可选插件 选项卡中搜索该插件并进行安装。到这来我们就完成了 CenrOS 安装jenkins 并进行了一些初始化的配置。

   二、CentOS 7 安装 Git 与 dotnet core sdk 

我们需要利用jenkins 调用 git 去下载代码,这时我们肯定需要事先安装git。执行 yum install  -y git 命令进行安装。

我们还需要利用jenkins执行 asp.net core 3.1 的Build 与 发布操作,我们也需要事先安装好 dotnet core 3.1 sdk 具体安装过程可参考微软官方文档:

https://docs.microsoft.com/zh-cn/dotnet/core/install/linux-package-manager-centos7

  三、Jenkins全局配置与构建任务的配置

我们在上面的配置过程中安装了jenkins 需要用到的 git 以及publish over ssh 插件,在用这两个之前,我们需要在jenkins中进行一些全局的配置。

首先我们来看git的配置,在Jenkins 系统管理--》全局工具配置 我们需要输入git 的安装位置,如下图:

我们再来看 publish over ssh 插件的配置,在 系统管理--》系统配置 中,如下图:

上面的 Remote Directory 需要输入远程服务器的文件夹,该文件夹表示上传文件的存放目录

到这里,我们就可以开始新建 jenkins的构建任务了,我们可以点击新建任务,输入一个名字,选择自由风格的软件项目,如下图:

在源码管理中,输入你项目的git 地址以及添加一个对应的git的用户名和密码凭据 信息, 如下图:

在构建环境中,我们勾选以下配置:

在勾选的 Send files or execute commands over SSH after the build runs 中,SSH Server 就是我们在上一步在全局配置中配置的  publish over ssh  的ssh 名字。

Source files 是我们需要上传的文件,这里我们利用 dotnet 命令发布 asp.net core 项目,然后压缩成 tar.gz 的压缩文件,所以这里配置 **/.tar.gz ,**/ 是你当前构建项目jenkins的

工作目录。

在构建 中,我们选择 执行 shell ,如下图:

cd /var/lib/jenkins/workspace/test/aspnetweb   
dotnet publish -c Release -o published
tar -czvf published.tar.gz published

命令总共三行,首先进入jenkins的工作目录,然后在该目录下,执行dotnet 发布命令,发布到published 文件夹

最后将 published 文件夹 进行压缩成 published.tar.gz

我们再选择 构建后操作,选择 Send build artifacts over ssh,如下图:

上图中的 SSH server 也是我们再全局配置中配置的,Source files 是我们要上传的文件,Exec command 是要在远程服务器执行的 脚本命令:

cd /root/remote/aspnetweb
tar -xvzf published.tar.gz
cd /root/remote/aspnetweb/published
docker stop aspnetweb
docker rm aspnetweb
docker rmi aspnetweb
docker build -t aspnetweb .
docker run -d -p:5001:80 --name aspnetweb aspnetweb

这里 我们也是进入到 远程服务器的 目录,解压上传的文件,然后 进行基本的 docker 容器操作。

在这里 我们发布的 asp.net core 目录中有一个 Dockerfile 文件,docker 才能进行 新的镜像的 build,Dockerfile 的文件内容如下:

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 AS runtime

WORKDIR /app
COPY . ./
ENTRYPOINT ["dotnet", "aspnetweb.dll"]

这里需要我们的远程服务器,安装docker,以及事先 docker  pull mcr.microsoft.com/dotnet/core/aspnet:3.1 的镜像。

--------

参考文章:https://www.cnblogs.com/stulzq/p/9291237.html

.Net Core 使用jenkins 部署到远程服务器docker的更多相关文章

  1. 【WCF】如何将WCF部署到远程服务器

    一.前言       最近需要将自己写的WCF服务部署到远程服务器上,也就是公网上.宿主是IIS,在配置成功之前遇到了很多问题,问题如下: 1. WCF该怎么宿主在IIS上,为何会出现 400 Bad ...

  2. fis-receiver:一行命令将项目部署到远程服务器

    前言 本项目基于FIS2,没了.其实fis项目本身就提供了php版本的范例,这里翻译成node版本. 项目地址:https://github.com/chyingp/fis-receiver 服务端接 ...

  3. 【SqlServer】如何把本地SqlServer数据库部署到远程服务器上

    这里笔者使用的使用SqlServer2012,本机和远程环境均为Win7. 1.选中需要部署的数据库,右击>任务>分离.选中删除连接. 2.现在在左侧的表中就看不见刚才那个数据了. 3.在 ...

  4. dotnet core 使用 sqlite 部署到 Centos 服务器

    原文:dotnet core 使用 sqlite 部署到 Centos 服务器 本文告诉大家如何创建一个 asp dotnet core 程序,这个程序使用 sqlite 保存,部署程序到 Cento ...

  5. Jenkins部署到远程(Linux服务器)

    接着上次的说,上次只是实现了本地自动化部署,这种情况只是针对开发环境和部署环境在同一台机器时适用.不过,一般情况下,我们都会要把项目部署到远程Linux服务器上,所以这节的主要内容是: 1.部署开发环 ...

  6. 通过VS2017发布.net core程序并使用Web 部署到远程服务器最新教程

    最近一个项目中,为App开发后台接口,技术选型为最新 .net core版本,使用.net core开发web api接口过程中,为了方便app团队成员直接在线调用接口,找了公网上的一台服务器做为ap ...

  7. 通过Jenkins,执行远程服务器的自动化脚本

    通过Jenkins,可自动执行写好的应用部署.自动化测试等的脚本工具,实现测试环境的应用自动定时更新.自动执行测试等. 1. 安装SSH插件 进入[系统管理]-[插件管理]-[可用插件],搜索Publ ...

  8. IDEA连接远程服务器Docker部署Spring Boot项目

    开始前的准备工作 拥有一台云服务器,我的是腾讯云服务器(CentOS7) 腾讯云服务器安装Docker,我的版本是Docker 19.03.9,关于安装和配置镜像加速器可以查阅我的另一篇博文:http ...

  9. ASP.NET Core WebApi 项目部署到 IIS 服务器的总结

    Point: - ASP.NET Core WebApi 项目 - 发布到 IIS 服务器 1. 选择 File System 2. 输入要发布到的路径 # 其它默认,直接发布 3. 打开 IIS,添 ...

随机推荐

  1. Hibernate实现分页查询

    分页查询就是把数据库中某张表的记录数进行分页查询,在做分页查询时会有一个Page类,下面是一个Page类,我对其做了详细的注解: 1 package com.entity; 2 /** 3 * @au ...

  2. JacksonConfig

    package org.linlinjava.litemall.core.config; import com.fasterxml.jackson.annotation.JsonInclude; im ...

  3. 吴裕雄--天生自然python机器学习:支持向量机SVM

    基于最大间隔分隔数据 import matplotlib import matplotlib.pyplot as plt from numpy import * xcord0 = [] ycord0 ...

  4. oracle ORA-01461 错误 can bind a LONG value only for insert into a LONG column

    我的ORACLE表里没有long字段,可是保存时报错:  ORA-01461 :仅可以为插入LONG列的LONG值赋值  本来我这张表里只有一个VARCHAR2(4000)的字段,一直没有这种错误发生 ...

  5. Navicat 12 无限期试用

    最近发现navicat12又过期了,以前的是用的破解软件,然后是到1899年过期哈哈哈哈哈哈.重装了系统后,软件也重装了,发现破解软件不好使了,就先试用了,现在到期了.很是难受,这可咋整,不过在网上看 ...

  6. 77)PHP,将session数据写到不用的存储介质中

    首先我的siession数据可以写到:文件中    session数据区  或者数据库中, 那么怎么将文件中的session数据或者session数据区的数据写到  数据库中,,又或者任意挑选两个不同 ...

  7. CCD (电荷耦合元件)

    CCD 是指电荷耦合器件,是一种用电荷量表示信号大小,用耦合方式传输信号的探测元件,具有自扫描.感受波谱范围宽.畸变小.体积小.重量轻.系统噪声低.功耗小.寿命长.可靠性高等一系列优点,并可做成集成度 ...

  8. cs231n spring 2017 lecture10 Recurrent Neural Networks

    (没太听明白,下次重新听一遍) 1. Recurrent Neural Networks

  9. [LC] 152. Maximum Product Subarray

    Given an integer array nums, find the contiguous subarray within an array (containing at least one n ...

  10. kafka运行找不到或无法加载主类 Files\Java\jdk1.8.0_131\lib\dt.jar;C:\Program

    最近在研究Flink+kafka解决方案, kafka的安装首先需要安装zookeeper,在安装zookeeper是报错找不到或无法加载主类 Files\Java\jdk1.8.0_131\lib\ ...