惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

大猫的无限游戏
大猫的无限游戏
云风的 BLOG
云风的 BLOG
小众软件
小众软件
V
V2EX
博客园 - Franky
博客园 - 司徒正美
Apple Machine Learning Research
Apple Machine Learning Research
量子位
博客园 - 【当耐特】
雷峰网
雷峰网
WordPress大学
WordPress大学
Jina AI
Jina AI
Google DeepMind News
Google DeepMind News
N
Netflix TechBlog - Medium
爱范儿
爱范儿
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
阮一峰的网络日志
阮一峰的网络日志
IT之家
IT之家
Blog — PlanetScale
Blog — PlanetScale
Hugging Face - Blog
Hugging Face - Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
V
Visual Studio Blog
Microsoft Security Blog
Microsoft Security Blog

博客园 - tianyamoon

linux 常用操作 nacos Error creating bean with name 'connectionManager' 错误 Zookeeper、Eureka、Consul、Nacos对比 Centos重新安装 python2.7 和 yum 使Visual Studio Code在windows下的Linux子系统中工作 在 Windows 上运行 Linux 程序 使用connected-react-router使router与store同步 redux之compose的理解 react-router-dom 5.X 在React中使用react-router-dom路由 react-router与react-router-dom使用时的区别 react-router 使用 换个语言学一下 Golang(14) ——fmt包 分布式事务:Saga模式 使用 Go 语言徒手撸一个负载均衡器 基于react-app搭建react-router+redux项目 react,react-router,redux+react-redux 构建一个React Demo 基于NodeJS的全栈式开发 换个语言学一下 Golang (13)——Web表单处理
使用jenkins 实现 .net core项目自动发布到 docker
tianyamoon · 2020-02-20 · via 博客园 - tianyamoon

在Docker内运行Jenkins

pull镜像 

docker pull jenkins/jenkins:lts

Dockerfile

FROM jenkins/jenkins:lts

USER root
ARG dockerGid=999

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 8080:8080 -p 50000:50000 -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 1000:1000 /app/jenkins
 chown -R 1000:1000 /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 80
EXPOSE 443

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 5000:80 testjenkins:latest

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

 看一下构建好的网站

 

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

在Jenkins中设置WebAppNet

Gitee中的配置

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