1. 什么是WTM框架?

  一个快速、灵活、社区活跃、最最最最高效的.netcore 后台管理系统。详见 https://wtmdoc.walkingtec.cn/

  欢迎大家付费支持WTMPlus,反哺社区(我已充值,还未使用,等vue3版本)。

2. 通过本文可以实现什么?

通过使用主流的开源软件或技术实现WTM项目自动化部署到ubuntu系统。

  1. 通过Gitee管理WTM项目代码
  2. 通过Jenkins获取代码提交事件,从而生成WTM镜像
  3. 容器运行WTM镜像

3. 你需要准备什么?

  1. 准备一台Ubuntu云服务器(或虚拟机安装花生壳,因为要用到外网)
  2. ubuntu、git、docker的基础知识(没了解过也无所谓,我会手摸手)
  3. 准备好耐心,本文适合对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 密码是刚刚获取到的

系统管理=>插件管理=>高级=>最下方升级站点 输入  https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
4.4.3 安装gitee插件
4.4.4 gitee新增令牌
 

 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(持续集成/持续部署)的更多相关文章

  1. CI/CD持续集成/持续部署 敏捷开发

    敏捷软件开发(英语:Agile software development),又称敏捷开发,是一种从1990年代开始逐渐引起广泛关注的一些新型软件开发方法,是一种应对快速变化的需求的一种软件开发能力.它 ...

  2. CI / CD /CD 持续集成 持续交付 持续部署

    CI / CD /CD 持续集成 持续交付 持续部署 CI CD 是啥?干了啥? CI continuous integration 持续集成 CD continuous delivery 持续交付 ...

  3. 03 持续集成和部署/基础设施 - DevOps之路

    02 持续集成和部署/基础设施 - DevOps之路 文章Github地址,欢迎start:https://github.com/li-keli/DevOps-WiKi 服务的持续集成和部署这里有两套 ...

  4. Linux-GitLab+Jenkins持续集成+自动化部署

    GitLab+Jenkins持续集成+自动化部署 什么是持续集成? (1)Continuous integration (CI) 持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个 ...

  5. 构建gitlab+Jenkins+harbor+kubernetes的DevOps持续集成持续部署环境

    构建gitlab+Jenkins+harbor+kubernetes的DevOps持续集成持续部署环境 整个环境的结构图. 一.准备工作 gitlab和harbor我是安装在kubernetes集群外 ...

  6. SAP开源的持续集成-持续交付的解决方案

    SAP开源的持续集成/持续交付的解决方案: (1) 一个叫做piper的github项目,包含一个针对Jenkins的共享库和一个方便大家快速搭建CI/CD环境的Docker镜像: (2) 一套SAP ...

  7. ThoughtWorks开发持续集成及部署利器:Go

    持续集成及部署利器:Go   Go是一款先进的持续集成和发布管理系统,由ThoughtWorks开发.(不要和Google的编程语言Go混淆了!)其前身为Cruise,是ThoughtWorks在做咨 ...

  8. vsts + XX云服务器构建netcore+docker持续集成交付部署

    持续集成交付部署是什么意思,它给我们带来什么好处? 先贴一张图 持续集成(Continuous Integration) 持续集成强调开发人员提交了新代码之后,立刻进行构建.(单元)测试(这个要看情况 ...

  9. 持续集成①安装部署jenkins从git获取代码

    持续集成①安装部署jenkins从git获取代码 一:持续集成的概念: 1.1:总体的概括 持续集成Continuous Integration 持续交付Continuous Delivery 持续部 ...

随机推荐

  1. 查看k8s的yaml里面反馈的错误,不仅仅是通过日志来查看错误

    使用:kubectl describe pod......例如: kubectl describe pod api-55f5d8d49d-kzmcj ///////////////////////// ...

  2. ZABBIX Proxy容器启动的配置过程

    ZABBIX Proxy容器启动的配置过程 环境介绍 版本 zabbix6 zabbix server 与 zabbix proxy 非同一台主机,zabbix proxy为主动方式提交给server ...

  3. 删库到跑路?还得看这篇Redis数据库持久化与企业容灾备份恢复实战指南

    本章目录 0x00 数据持久化 1.RDB 方式 2.AOF 方式 如何抉择 RDB OR AOF? 0x01 备份容灾 一.备份 1.手动备份redis数据库 2.迁移Redis指定db-数据库 3 ...

  4. python基础练习题(题目 回文数)

    day21 --------------------------------------------------------------- 实例030:回文数 题目 一个5位数,判断它是不是回文数.即 ...

  5. Delphi 类库(DLL)动态调用与静态调用示例讲解

    在Delphi或者其它程序中我们经常需要调用别人写好的DLL类库,下面直接上示例代码演示如何进行动态和静态的调用方法: { ************************************** ...

  6. 『现学现忘』Git基础 — 11、配置Git用户签名的方式

    目录 1.配置Git签名 (1)语法 (2)配置系统用户签名 (3)配置全局用户签名 (4)配置本地用户签名 2.查看三个配置文件的用户签名 (1)语法 (2)查看项目/仓库级别的配置文件信息(loc ...

  7. Pytorch 实现线性回归

    Pytorch 实现线性回归 import torch from torch.utils import data from torch import nn # 合成数据 def synthetic_d ...

  8. 9.2 Linux硬盘分区和挂载

    一块新的硬盘存储设备后,先需要分区,然后再格式化文件系统,最后才能挂载并正常使用. 分区:根据需求和硬盘大小划分空间 格式化:对分区安装文件系统 挂载:将设备文件与一个目录关联的动作叫挂载 硬盘分区格 ...

  9. GO语言学习——运算符

    运算符 Go 语言内置的运算符有: 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 算术运算符 运算符 描述 + 相加 - 相减 * 相乘 / 相除 % 求余 注意: ++(自增)和--(自 ...

  10. python常见漏洞总结

    总结一下python里面常见安全问题,文章大部分内容来自MisakiKata师傅的python_code_audit项目,对原文进行了一些修改,后续会使用编写了规则对代码里面是否用到这些危险函数进行相 ...