使用jenkins 实现 .net core项目自动发布到 docker
在Docker内运行Jenkins
pull镜像
docker pull jenkins/jenkins:lts
Dockerfile
FROM jenkins/jenkins:lts USER root
ARG dockerGid= RUN echo "docker:x:${dockerGid}:jenkins" >> /etc/group USER jenkins
Build
docker build . -t my-jenkins
创建用户并加入docker组
useradd jenkins
usermod -G docker jenkins
Run
docker run --name jenkins -p : -p : -e TZ="Asia/Shanghai" -v /app/jenkins/jenkins_home:/var/jenkins_home -v /app/jenkins/settings:/var/settings -v /var/run/docker.sock:/var/run/docker.sock -v $(which docker):/usr/bin/docker -d my-jenkins
注意这两个volume参数(将jenkins容器内的docker命令指向了宿主机):
-v /var/run/docker.sock:/var/run/docker.sock
-v $(which docker):/usr/bin/docker
修改文件夹所有者
chown -R : /app/jenkins
chown -R : /var/run/docker.sock
初始化

按提示填入密码,安装推荐的插件

进入

测试下容器内docker是否可用

准备.net Core 项目
我创建了个.net core 3.1的MVC项目

并推送到Gitee。

Dockerfile
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
WORKDIR /app
EXPOSE
EXPOSE FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build
WORKDIR /src
COPY ["JenkinsWebDemo.csproj", ""]
RUN dotnet restore "./JenkinsWebDemo.csproj"
COPY . .
WORKDIR "/src/."
RUN dotnet build "JenkinsWebDemo.csproj" -c Release -o /app/build FROM build AS publish
RUN dotnet publish "JenkinsWebDemo.csproj" -c Release -o /app/publish FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "JenkinsWebDemo.dll"]
这里拉取了两个镜像一个带SDK是用来build,一个用来发布。
持续部署
然后点击系统管理->插件管理->下载Gitee插件
然后,系统管理->系统设置,配置如下:
具体配置过程参考:https://gitee.com/help/articles/4193#article-header0

配置完后保存。
回到首页,新建一个任务:

然后配置任务:

从自己的gitee 中找到Repository UR
然后配置Build Triggers

最后,最重要的是Build,下拉框选择执行shell:

#!/bin/bash
# 获取短版本号
GITHASH=`git rev-parse --short HEAD`
docker stop testjenkins
docker rm testjenkins
docker build -t testjenkins:$GITHASH .
docker tag testjenkins:$GITHASH testjenkins:latest
docker run --name testjenkins -d -p : testjenkins:latest
这边设的是每两分钟,可以自行设置Gitee webhook 触发构建,Gitee webhook参考文档:https://gitee.com/help/articles/4193#article-header13
配置完后保存,查看任务,可以看到构建部署历史:

看一下构建好的网站

也可以设置成根据webhook,推送代码时自动构建。
在Jenkins中设置WebAppNet

Gitee中的配置
这样当我们推送代码到Gitee时候就会被自动构建。
使用jenkins 实现 .net core项目自动发布到 docker的更多相关文章
- eclipse项目自动发布到tomcat目录,缺文件。
eclipse项目自动发布到tomcat目录,缺文件. 解决方案: 项目--Properties-->Deployment Assembly-->Add--> Folder Add- ...
- 记录一次创建.net core 项目 并且发布到docekr【完全新手入门】
1]环境说明 操作系统:Window 10 专业版 开发工具 Vs2019专业版 Docker: Docker for Windows 2]创建.net core项目并且发布 2.0先打开并且运行 ...
- Jenkins持续集成(下)-Jenkins部署Asp.Net网站自动发布
环境:Windows 2008 R2.Jenkins2.235.1.Visual Studio 2017: 概要 前面写过一篇文章,<自动发布-asp.net自动发布.IIS站点自动发布(集成S ...
- 基于jenkins的go语言项目自动化发布遇到的坑
之前我们研究dep,就是为了有一天可以实现go语言项目在我们系统里的CI. 之前联物科技的项目主要是使用java作为后端开发语言,基于jenkins的自动发布,使用了pipeline编写脚本,从拉取代 ...
- Eclipse中将web项目自动发布到Tomcat webapps下(转)
A:FileàDynamic Web Project[工程名:test] B:右键WebContent,New-->Jsp File C:右键test,Run AsàRun on Serverà ...
- jenkins 配置 gitlab webhook 实现自动发布
测试环境需要git提交代码后,Jenkins自动部署,需要gitlab配置project webhook. 1,Jenkins版本2.89 gitlab 8.11 2,Jenkins需要安装插件:G ...
- Jenkins自动化构建vue项目然后发布到远程Linux服务器
部署Jenkins参照另一篇博客: centos7安装Jenkins及其卸载 一.jenkins相关插件的安装 1.安装Publish Over SSH插件用于SSH连接远程的服务器. 登录 jenk ...
- 从基于idea的第一个javaweb项目到shell脚本项目自动发布(jdk1.8,mysql5.7,maven3.5,tomcat9,subversion,centos7.3)之一
首先说一下为什么写这篇文章,因为从正式参加工作就做javaweb开发,一路走来,碰到了很多的问题,每次问题都想从度娘那里得到准确的答案,但是,每个人遇到的问题不尽相同,问题的解决方案有时候也只是仅供参 ...
- jenkins构建maven聚合项目,发布jar包,可配置单独发布某个模块
https://blog.csdn.net/qq_42703181/article/details/109643330
随机推荐
- Python-selenium,使用SenKey模块时所碰到的坑
一.SenKey模块(模拟鼠标键盘操作) :python3中没有该模块,使用PyUserInput模块代替 二.PyUserInput模块安装前需要安装:pywin32和pyHook模块,pywin3 ...
- EF CodeFirst 之 Fluent API
如何访问Fluent API: 在自定义上下文类中重写OnModelCreating方法,在方法内调用. 注:用法基本一样,配置类中的this就相当于modelBuilder.Entity<Pe ...
- 第一篇 网站基础知识 第3章 DNS的设置
第3章 DNS的设置 3.1 DNS解析 3.2 Windows 7设置DNS服务器 3.3Windows设置本机域名和IP的对应关系 在自己的电脑里也可以设置域名和IP的对应关系,具体设置是在C:\ ...
- PP: Reconstructing time series into a complex network to assess the evolution dynamics of the correlations among energy prices
Purpose detect the dynamics in time series of their correlation Methodology 1. calculate correlation ...
- [CodeForces]Educational Round 52
幸好我没有打这场,我VP的时候在C题就卡死了,我果然还是太菜了. A Vasya and Chocolate 题意:一个巧克力\(c\)元,买\(a\)赠\(b\),一共有\(n\)元,问能买几个巧克 ...
- 微信小程序前台的用户数据入库(后台Laravel)
首先 我们可以看到微信小程序官方 文档 wx.login api-login.jpg 通过此图 我们知道 前台要传 一个 code给后台,后台拿到code 并结合appid和appsecret请求 ...
- 查看gcc编译器版本
我们在windows下DS5中编译时使用GCC交叉编译器,但是在ubuntu时也需要使用GCC编译器,这时最好时保持版本一致,所以就需要查看windows下版本,如下图,在按装的文件夹中找到对应得文件 ...
- 2分钟就能学会的【Google/百度搜索大法】了解一下?
之前我在知乎回答了「日常生活中有哪些十分钟就能学会并可以终生受用的技能」,现在也整理分享给公众号的朋友们. 作为一个入坑8年国际贸易的老阿姨,真心推荐[google搜索大法](同样适用于百度). 2分 ...
- 题解【洛谷P1347】排序
题目描述 一个不同的值的升序排序数列指的是一个从左到右元素依次增大的序列,例如,一个有序的数列\(A,B,C,D\) 表示\(A<B,B<C,C<D\).在这道题中,我们将给你一系列 ...
- NOIP做题练习(day2)
A - Reign 题面 题解 最大子段和+\(DP\). 预处理两个数组: \(p[i]\)表示 \(i\) 之前的最大子段和. \(l[i]\)表示 \(i\) 之后的最大子段和. 最后直接输出即 ...

