WTM框架使用技巧之:CI/CD(持续集成/持续部署)
1. 什么是WTM框架?
一个快速、灵活、社区活跃、最最最最高效的.netcore 后台管理系统。详见 https://wtmdoc.walkingtec.cn/
欢迎大家付费支持WTMPlus,反哺社区(我已充值,还未使用,等vue3版本)。
2. 通过本文可以实现什么?
通过使用主流的开源软件或技术实现WTM项目自动化部署到ubuntu系统。
- 通过Gitee管理WTM项目代码
- 通过Jenkins获取代码提交事件,从而生成WTM镜像
- 容器运行WTM镜像
3. 你需要准备什么?
- 准备一台Ubuntu云服务器(或虚拟机安装花生壳,因为要用到外网)
- ubuntu、git、docker的基础知识(没了解过也无所谓,我会手摸手)
- 准备好耐心,本文适合对ubuntu不是很熟悉,但是想把WTM运行在Ubuntu上的朋友。包括git、gitee配置、jenkins安装配置部署,很多都是一劳永逸的,坚持下来,会有收获
4. 安装配置基础环境
4.1关于gitee
4.1.1 什么是gitee
国产免费git源码管理平台
4.1.2 gitee可以干什么
多人协作 、代码备份、触发自动化构建(webhook)
4.1.3 下载安装git https://git-scm.com/download/win
4.1.4 下载安装tortoisegit及语言包 https://tortoisegit.org/download/
4.2 git管理WTM代码
4.2.1 新建WTM项目
简单起见,先使用sqlite
4.2.2 gitee注册、登陆
4.2.3 gitee管理wtm代码
新建代码仓
复制代码仓地址
克隆代码仓,输入代码仓地址
wtm代码放入git所在文件夹
提交代码
推送代码
刷新gitee页面,可以看到提交的代码
4.3 关于docker
4.3.1 什么是docker
将WTM和.netcore运行时打包在一起,生成一个镜像,从而运行在任何操作系统中
4.3.2 docker安装
sudo curl -fsSL https://get.docker.com | bash -s docker
4.4 关于Jenkins
4.4.1 jenkins
基于java的持续集成工具,用来实现自动获取gitee提交事件,拉去代码、编译代码、构建WTM镜像、运行WTM镜像。
4.4.2 jenkins安装
注意这里没有持久化。
sudo docker run -d --restart always --name testjenkins -p 8888:8080 -p 50001:50000 -e TZ="Asia/Shanghai" \
-v /var/run/docker.sock:/var/run/docker.sock -v $(which docker):/usr/bin/docker -d jenkins/jenkins:lts
进入jenkins容器
cat /var/jenkins_home/secrets/initialAdminPassword
查看jenkins初始密码
cat /var/jenkins_home/secrets/initialAdminPassword
修改docker权限
sudo chmod 777 /var/run/docker.sock
访问主机9090端口,用户名jenkins 密码是刚刚获取到的


4.4.5 jenkings 配置gitee插件
系统管理=>系统配置
添加Gitee凭据,用自己的gitee用户名和密码
4.4.6 新建任务
生成一个webhook密码,先记下来
构建新增shell,等下步执行完后再保存


#!/bin/bash
echo start
docker build -t wtmtest .
docker stop wtmapp
docker rm wtmapp
docker run -d --restart always --name wtmapp -p 8888:80 wtmtest
docker restart wtmapp
配置gitee的webhook,保存后,再保存上一步的jenkins
5.修改WTM源码
wtm MVC项目配置文件新增,以防止其余的多语言看起来比较乱
<SatelliteResourceLanguages>zh-Hans,en</SatelliteResourceLanguages>
6.修改Dockerfile


#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging. FROM mcr.microsoft.com/dotnet/aspnet:5.0-buster-slim AS base
WORKDIR /app
EXPOSE 80 RUN apt-get update
RUN apt-get install libgdiplus -y
RUN apt-get install nano -y FROM mcr.microsoft.com/dotnet/sdk:5.0-buster-slim AS build
WORKDIR /src
COPY ["WTMtest/WTMtest.csproj", "WTMtest/"]
RUN dotnet restore "WTMtest/WTMtest.csproj"
COPY . .
WORKDIR "/src/WTMtest"
RUN dotnet build "WTMtest.csproj" -c Release -o /app/build FROM build AS publish
RUN dotnet publish "WTMtest.csproj" -c Release -o /app/publish FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish . ENV TZ=Asia/Shanghai ENTRYPOINT ["dotnet", "WTMtest.dll"]
7. 提交、推送源码
8. 查看jenkins
耐心等待,第一次比较慢,看网络环境要10-20分钟左右,后面就会很快,因为有了基础镜像
9. 查看wtm页面
访问云服务器的8888端口(别忘了打开防火墙),可以看到经典的WTM桌面啦。
重点是我们修改过的页面
WTM框架使用技巧之:CI/CD(持续集成/持续部署)的更多相关文章
- CI/CD持续集成/持续部署 敏捷开发
敏捷软件开发(英语:Agile software development),又称敏捷开发,是一种从1990年代开始逐渐引起广泛关注的一些新型软件开发方法,是一种应对快速变化的需求的一种软件开发能力.它 ...
- CI / CD /CD 持续集成 持续交付 持续部署
CI / CD /CD 持续集成 持续交付 持续部署 CI CD 是啥?干了啥? CI continuous integration 持续集成 CD continuous delivery 持续交付 ...
- 03 持续集成和部署/基础设施 - DevOps之路
02 持续集成和部署/基础设施 - DevOps之路 文章Github地址,欢迎start:https://github.com/li-keli/DevOps-WiKi 服务的持续集成和部署这里有两套 ...
- Linux-GitLab+Jenkins持续集成+自动化部署
GitLab+Jenkins持续集成+自动化部署 什么是持续集成? (1)Continuous integration (CI) 持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个 ...
- 构建gitlab+Jenkins+harbor+kubernetes的DevOps持续集成持续部署环境
构建gitlab+Jenkins+harbor+kubernetes的DevOps持续集成持续部署环境 整个环境的结构图. 一.准备工作 gitlab和harbor我是安装在kubernetes集群外 ...
- SAP开源的持续集成-持续交付的解决方案
SAP开源的持续集成/持续交付的解决方案: (1) 一个叫做piper的github项目,包含一个针对Jenkins的共享库和一个方便大家快速搭建CI/CD环境的Docker镜像: (2) 一套SAP ...
- ThoughtWorks开发持续集成及部署利器:Go
持续集成及部署利器:Go Go是一款先进的持续集成和发布管理系统,由ThoughtWorks开发.(不要和Google的编程语言Go混淆了!)其前身为Cruise,是ThoughtWorks在做咨 ...
- vsts + XX云服务器构建netcore+docker持续集成交付部署
持续集成交付部署是什么意思,它给我们带来什么好处? 先贴一张图 持续集成(Continuous Integration) 持续集成强调开发人员提交了新代码之后,立刻进行构建.(单元)测试(这个要看情况 ...
- 持续集成①安装部署jenkins从git获取代码
持续集成①安装部署jenkins从git获取代码 一:持续集成的概念: 1.1:总体的概括 持续集成Continuous Integration 持续交付Continuous Delivery 持续部 ...
随机推荐
- k8s pod 在迁移zookeeper时出现的问题
一次迁移中出现的问题,因为要搬迁机房,集群中的节点服务器分布在两个机房,通过专线打通了,现在需要整体都迁移到其中一个机房,所以pod要进行迁移,机器资源也比较紧张,在迁移中zookeeper迁移出现问 ...
- python的注释、变量、常量基础
一.注释 1.什么是注释 注释就是对代码的解释说明,注释的内容不会被当作代码运行 2.为什么要注释 增强代码的可读性 3.怎么用注释? 代码注释单行和多行注释 单行注释用#号,可以跟在代码的正上方或正 ...
- gin框架使用【1.Hello World】
package mainimport ( "github.com/gin-gonic/gin")func main() { router := gin.Default() rout ...
- 如何突破Jenkins瓶颈,实现集中管理、灵活高效的CI/CD
在过去的几年间,随着DevOps的兴起,持续集成(Continuous Integration)与持续交付(Continuous Delivery)的热度也水涨船高.在本文中,我们将首先带您了解热门的 ...
- Halo 开源项目学习(六):事件监听机制
基本介绍 Halo 项目中,当用户或博主执行某些操作时,服务器会发布相应的事件,例如博主登录管理员后台时发布 "日志记录" 事件,用户浏览文章时发布 "访问文章" ...
- Python 树表查找_千树万树梨花开,忽如一夜春风来(二叉排序树、平衡二叉树)
什么是树表查询? 借助具有特殊性质的树数据结构进行关键字查找. 本文所涉及到的特殊结构性质的树包括: 二叉排序树. 平衡二叉树. 使用上述树结构存储数据时,因其本身对结点之间的关系以及顺序有特殊要求, ...
- 【ACM程序设计】并查集
并查集 并查集(Union-find Sets)是一种非常精巧而实用的数据结构,它主要用于处理一些不相交集合的合并问题.一些常见的用途有:求连通子图.求最小生成树的Kruskal算法和求最近公共祖先( ...
- IDEA新建项目时的默认配置与模版配置
今天一大早,群里(点击加群)有小伙伴问了这样的一个问题: 在我们使用IDEA开发项目的时候,通常都会有很多配置项需要去设置,比如对于Java项目来说,一般就包含:JDK配置.Maven配置等.那么如果 ...
- Flutter网络请求和数据解析
一:前言 - 什么是反射机制,Flutter为什么禁用反射机制? 在Flutter中它的网络请求和数据解析稍微的比较麻烦一点,因为Flutter不支持反射机制.相信大家都看到这么一条,就是Flutte ...
- Web安全学习笔记 SQL注入中
Web安全学习笔记 SQL注入中 繁枝插云欣 --ICML8 权限提升 数据库检测 绕过技巧 一.权限提升 1. UDF提权 UDF User Defined Function,用户自定义函数 是My ...