1.首先,安装docker,不多bb

2.我们采用docker的方式安装jenkins,同时将宿主机的docker挂载到docker安装的jenkins里面,可能有点拗口。说白了就是

就是要让jenkins里面能共享宿主机docker
docker run --memory .5G  --name myjenkins -p : -p : -u root -d --env JAVA_OPTS="-Xms256m -Xmx512m  -XX:MaxNewSize=256m"  -v /var/run/docker.sock:/var/run/docker.sock  -v /usr/bin/docker:/usr/bin/docker  -v /var/jenkins:/var/jenkins_home -v /usr/lib/x86_64-linux-gnu/libltdl.so.:/usr/lib/x86_64-linux-gnu/libltdl.so. jenkins/jenkins

3.安装成功了之后,在安装一些必要的插件

直接在 系统管理-》插件管理-》可选插件 搜索(根据自己需求安装)
Publish Over SSH 通过ssh远程其他服务器
gogs 这个不用解释了,你用什么代码管理工具搜索什么

4.配置Publish Over SSH
进入系统管理-》系统设置 找到Publish Over SSH

这里需要注意的是,如果jenkins和要构建和发布的是在同一个服务器上,可以不用配置(比如我这里没进行配置)。

如果不在同一台服务器上,需要填写。并且他的本质是远程到另一台宿主机,而不是进入jenkins目录,所以后面配置项目路径的时候按需修改。

5.安装gogs,网上一大堆,建议直接用docker安装,省时省力。

6.创建项目,添加Dockerfile

FROM microsoft/dotnet:2.2-sdk as build-env
WORKDIR /app
# 拷贝所有文件到环境中,并进行restore,build and release
COPY . ./
RUN dotnet restore
RUN dotnet build web.csproj
RUN dotnet publish web.csproj -c Release -o out FROM microsoft/dotnet:2.2-aspnetcore-runtime
WORKDIR /app
#把发布好的文件拷贝到镜像中
COPY --from=build-env /app/out ./ EXPOSE
ENTRYPOINT [ "dotnet", "web.dll" ]

7.配置gogs,可参考 https://www.cnblogs.com/stulzq/p/8629720.html

8.在jenkins创建一个自由风格的任务,主要配置以下几个

echo "获取当前容器是否存在-----------------------------------------------------------------"
containerps=$(docker ps -f name=web1 -q)
containerstop=$(docker ps -a -f name=web1 -q)
for alpha in "$containerps";do
if [ "$alpha" = "" ];then
echo "检查是否存在停止的容器-------------------------------------------------"
for alpha1 in "$containerstop";do
if [ "$alpha1" = "" ];then
echo "不存指定容器-----------------------------------"
else
echo "存在停止了的 然后直接删除-----------开始------------------"
docker rm $alpha1
echo "存在停止了的 然后直接删除-----------完成------------------"
fi
done
else
echo "存在-停止运行 然后删除----------------------开始-----------------"
docker stop $alpha
docker rm $alpha
echo "存在-停止运行 然后删除---------------------完成------------------"
fi
done echo "获取当前镜像是否存在-----------------------------------------------------------------"
dockerlist=$(docker images web1image:latest -q)
for alpha2 in "$dockerlist";do
if [ "$alpha2" = "" ];then
echo "不存在指定镜像-------------------------------------------------"
else
echo "存在当前指定的镜像 删除镜像--------------开始-----------------------------------"
docker rmi $alpha2
echo "存在当前指定的镜像 删除镜像--------------完成-----------------------------------"
fi
done
echo "开始输入工作目录-----------------------------------------------------------------"
echo $WORKSPACE
echo "转到项目工程目录-----------------------------------------------------------------"
cd $WORKSPACE/web
echo "构建Docker镜像-------------------------------开始----------------------------------"
docker build -t web1image .
echo "构建Docker镜像-------------------------------完成----------------------------------"
echo "运行Docker容器-------------------------------------开始----------------------------"
docker run --name=web1 -p : -d web1image
echo "运行Docker容器------------------------------------完成-----------------------------"

9.测试

成功。

常见问题:

.出现gogs推送403错误
去jenkins-系统设置-全局安全设置-关闭CSRF防护
2.出现connect: no route to host错误
  打开jenkins的端口,或者运行gogs容器时使用--link <jenkins容器名称>:<jenkins自定义别名> 后期web钩子那里直接填写http://<jenkins自定义别名>/gogs-webhook/?job=test就行(我没有测试过,你可以尝试一下)

.net core +gogs + jenkins +docker自动化发布、部署的更多相关文章

  1. Gogs+Jenkins+Docker 自动化部署.NetCore

    环境说明 腾讯云轻量服务器, 配置 1c 2g 6mb ,系统是 ubuntu 20.14,Docker 和 Jenkins 都在这台服务器上面, 群晖218+一台,Gogs 在这台服务器上. Doc ...

  2. .Net core 使用Jenkins + Docker + Azure Devops 傻瓜式部署

    这几天一直在搞 Jenkins + Docker + Azure Devops 部署,因为这种方式部署真的非常的省心,而且速度快,方便快捷,等等无数优点,感谢我的单身领导的支持,当然也感谢 晓晨大神, ...

  3. 从零开始搭建Jenkins+Docker自动化集成环境

    本文只简单标记下大概的步骤,具体搭建各个部分的细节,还请自行搜索.第一.二部分只是对Jenkins和Docker的简单介绍,熟悉的同学请直接跳到第三部分. 一.关于Jenkins Jenkins简介 ...

  4. Docker学习总结(13)——从零开始搭建Jenkins+Docker自动化集成环境

    本文只简单标记下大概的步骤,具体搭建各个部分的细节,还请自行搜索.第一.二部分只是对Jenkins和Docker的简单介绍,熟悉的同学请直接跳到第三部分. 一.关于Jenkins Jenkins简介 ...

  5. Gogs的Docker容器化部署流程遇到的问题

    Gogs的Docker容器化部署流程遇到的问题   最近在学习CI/CD的一些方案,个人比较青睐容器化轻量级.CI方面一开始是想使用gitlab的,但是发现我自己买的服务器配置太低,内存根本不够(大写 ...

  6. Linux文档整理之【Jenkins+Docker自动化部署.Net Core】

    这次整理的文档是Jenkins+Docker实现自动化部署,很早之前就写的,今天有时间就搬到博客园做个记录. Jenkins是基于Java开发的一种持续集成工具,主要用于持续.自动的构建/测试软件等相 ...

  7. asp.net core + jenkins 实现自动化发布

    由于部署个人博客系统的服务器只有2G内存,每次利用jenkins编译,发布的时候jenkins老是挂,因此新买了一台轻量应用服务器,专门用于个人博客系统的持续发布任务,下面讲解如何利用jenkins实 ...

  8. jenkins+Docker持续化部署(笔记)

    参考资料:https://www.cnblogs.com/leolztang/p/6934694.html (Jenkins(Docker容器内)使用宿主机的docker命令) https://con ...

  9. Ubuntu中安装jenkins+docker,实现项目部署

    本人对于linux系统是个小白,恰逢公司新框架需要docker+jenkins部署项目,所以通过同事口述+一顿乱查,终于实现在虚拟机上搭建的ubuntu系统中 实现jenkins +docker 自动 ...

随机推荐

  1. Hive SQL NVL 相关函数

    1.NVL函数 NVL函数的格式如下:NVL(expr1,expr2)含义是:如果oracle第一个参数为空那么显示第二个参数的值,如果第一个参数的值不为空,则显示第一个参数本来的值. NVL(exp ...

  2. 【Java】Unicode和字符串互转

    Unicode(统一码.万国码.单一码)是计算机科学领域里的一项业界标准,包括字符集.编码方案等.Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一 ...

  3. LightGBM建模

    LightGBM 1.读取csv数据并指定参数建模 # coding: utf-8 import json import lightgbm as lgb import pandas as pd fro ...

  4. markdown中如何设置字体为红色?

    答: 语法如下: <font color='red'> text </font>

  5. [webpack]webpack打包优化

    1.import优化 a.tree-shaking 把没用到的代码删除掉,import 在生产环境下 会自动去除掉没用的代码 b.scope hosting 作用域提升,在webpack中会自动省略一 ...

  6. 简易的CRM系统案例之Struts2+Hibernate3+JSP+MySQL版本

    改造上一版本的DAO层 简易的CRM系统案例之Struts2+JSP+MySQL版本 src文件下hibernate.cfg.xml <!DOCTYPE hibernate-configurat ...

  7. java数据类型,取值范围,引用类型解析

      与javascript不同,Java是强类型语言,在定义变量前需要声明数据类型.主要分两种数据类型:基本数据类型和引用数据类型. 1.基本数据类型分析: 基本数据类型 数值型 整数型 byte字节 ...

  8. 好用的开源SVN仓库

    1.地址 https://svnbucket.com/#/projects 2.简单注册使用即可

  9. xshell6破解4窗口限制

    资源路径: 链接: https://pan.baidu.com/s/11zumNoaIN1AF_YhmiPGWdA 提取码: nfs9 破解方法 先卸载系统中已经安装的xshell与xftp 然后安装 ...

  10. java通过telnet远程至windows机器执行dos命令

    准备工作,远程windows机器中开启telnet服务,将远程登录用户添加至telnetClients用户组 核心代码: import java.io.IOException; import java ...