在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
Jenkins就是根据前面的触发器触发这个脚本去构建镜像,持续部署。
这边设的是每两分钟,可以自行设置Gitee webhook 触发构建,Gitee webhook参考文档:https://gitee.com/help/articles/4193#article-header13

配置完后保存,查看任务,可以看到构建部署历史:

看一下构建好的网站

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

在Jenkins中设置WebAppNet

Gitee中的配置

这样当我们推送代码到Gitee时候就会被自动构建。



使用jenkins 实现 .net core项目自动发布到 docker的更多相关文章

  1. eclipse项目自动发布到tomcat目录,缺文件。

    eclipse项目自动发布到tomcat目录,缺文件. 解决方案: 项目--Properties-->Deployment Assembly-->Add--> Folder Add- ...

  2. 记录一次创建.net core 项目 并且发布到docekr【完全新手入门】

    1]环境说明 操作系统:Window 10 专业版 开发工具 Vs2019专业版 Docker:  Docker for Windows  2]创建.net core项目并且发布 2.0先打开并且运行 ...

  3. Jenkins持续集成(下)-Jenkins部署Asp.Net网站自动发布

    环境:Windows 2008 R2.Jenkins2.235.1.Visual Studio 2017: 概要 前面写过一篇文章,<自动发布-asp.net自动发布.IIS站点自动发布(集成S ...

  4. 基于jenkins的go语言项目自动化发布遇到的坑

    之前我们研究dep,就是为了有一天可以实现go语言项目在我们系统里的CI. 之前联物科技的项目主要是使用java作为后端开发语言,基于jenkins的自动发布,使用了pipeline编写脚本,从拉取代 ...

  5. Eclipse中将web项目自动发布到Tomcat webapps下(转)

    A:FileàDynamic Web Project[工程名:test] B:右键WebContent,New-->Jsp File C:右键test,Run AsàRun on Serverà ...

  6. jenkins 配置 gitlab webhook 实现自动发布

    测试环境需要git提交代码后,Jenkins自动部署,需要gitlab配置project webhook. 1,Jenkins版本2.89  gitlab 8.11 2,Jenkins需要安装插件:G ...

  7. Jenkins自动化构建vue项目然后发布到远程Linux服务器

    部署Jenkins参照另一篇博客: centos7安装Jenkins及其卸载 一.jenkins相关插件的安装 1.安装Publish Over SSH插件用于SSH连接远程的服务器. 登录 jenk ...

  8. 从基于idea的第一个javaweb项目到shell脚本项目自动发布(jdk1.8,mysql5.7,maven3.5,tomcat9,subversion,centos7.3)之一

    首先说一下为什么写这篇文章,因为从正式参加工作就做javaweb开发,一路走来,碰到了很多的问题,每次问题都想从度娘那里得到准确的答案,但是,每个人遇到的问题不尽相同,问题的解决方案有时候也只是仅供参 ...

  9. jenkins构建maven聚合项目,发布jar包,可配置单独发布某个模块

    https://blog.csdn.net/qq_42703181/article/details/109643330

随机推荐

  1. 网易云信融合CDN方案及实践

    日前,网易云信视频云架构师席智勇在第七届GFIC全球家庭互联网大会进行了题为<网易云信融合CDN方案及实践>的分享,以下是演讲内容回顾. 图为 网易云信视频云架构师席智勇 CDN所面临的问 ...

  2. 【转】VS2017离线安装

    [转自]https://www.cnblogs.com/feigao/p/8409606.html 第一步:下载离线安装包 https://www.visualstudio.com/zh-hans/d ...

  3. New Skateboard

    Max wants to buy a new skateboard. He has calculated the amount of money that is needed to buy a new ...

  4. HTML5使用JavaScript控制<audio>音频的播放

    1.播放音乐最简单的样例 <audio controls> <source src="horse.mp3" type="audio/mpeg" ...

  5. [C语言学习笔记四]变量与系统的交互

    使用 const 创建常量和使用 volatie 优化变量 C语言中使用 const 定义常量. 例如: const INT a = 10; 此处如果添加a = 20;,编辑器则会报错,因为此处 a ...

  6. 关于Excute()方法,与in参数连用

    DECLARE @tempTbl TABLE(OrderNo VARCHAR(50)) DECLARE @orderNos VARCHAR(4000) SET @orderNos='''3f1a82c ...

  7. VIM键盘映射 (Map)

    http://www.pythonclub.org/linux/vim/map VIM键盘映射 (Map) 设置键盘映射 使用:map命令,可以将键盘上的某个按键与Vim的命令绑定起来.例如使用以下命 ...

  8. IDEA常用操作链接

    idea中svn的提交.更新等操作 https://jingyan.baidu.com/article/375c8e19e3c47a25f3a22955.html Idea 部署SVN详细步骤以及上传 ...

  9. input输入框在ios手机上获取焦点后有一个灰色阴影

    遇到的场景: 有一个输入框 设置 outline:none 然后我又想给他设置获取焦点的颜色 然后 我给input 设置 border 为 1px t透明的 然后 获取焦点的时候 重新设置border ...

  10. mysql(5):主从复制和分库分表

    主从复制集群 概念:主从复制是指数据可以从一个MySQL数据库服务器主节点复制到一个或多个从节点. 使用场景: 读写分离:使用主从复制,让主库负责写,从库负责读,这样,即使主库出现了锁表的情景,通过读 ...