.netcore+jenkins+docker持续集成部署

本文详细介绍了在CentOS7及以上环境中,如何安装Docker并利用Docker搭建Jenkins持续集成环境,包括Jenkins镜像的下载、运行容器的配置、Jenkins的配置流程,以及如何设置定时任务从Git获取源码。

环境:centos7及以上

一.安装docker

https://www.cnblogs.com/stulzq/p/7743073.html

 二.docker安装jenkins

  1. 下载jenkins镜像,docker pull jenkins
  2. mkdir -p /var/jenkins_home
  3. 给jenkins用户授权 chown -R 1000 /var/jenkins_home
  4. 运行容器,docker run -p 8080:8080 -p 50000:50000 --name jenkins -v /var/run/docker.sock:/var/run/docker.sock -v $(which dcoker):/bin/docker -v /var/jenkins_home:/var/jenkins_home -d jenkins 
  5. 通过docker ps -a 查看生成的jenkins容器

 三.配置jenkins

https://www.cnblogs.com/stulzq/p/8627360.html

 四.配置git获取源码

我这里是配置为每十分钟获取一次

 

添加shell脚本

image_version=`date +%Y%m%d%H%M`;
echo $image_version;
# 停止之前的docker container

CID=$(docker ps | grep "agpweb" | awk '{print $1}')
echo $CID
if [ "$CID" != "" ];then
  docker stop $CID
  docker rm $CID
fi


#docker stop agpweb;
# 删除这个container
#docker rm agpweb;
# build镜像并且打上tag
docker build -t agpweb:$image_version .;
docker images;
# 把刚刚build出来的镜像跑起来
docker run -p 8090:80 --name agpweb -d agpweb:$image_version;
docker logs agpweb;

注意:在项目根目录要存放Dockerfile文件,用于构建镜像,Dockerfile文件可通过VS工具添加,或者在新建项目时选择docker支持

在构建 WPF 项目时,整合 MaterialDesignThemes.MahApps、CefSharp.Wpf.NETCore 和 CommunityToolkit.Mvvm 是一种常见需求,尤其适用于需要现代 UI 设计、内嵌浏览器功能和高效 MVVM 实现的应用场景。以下是具体的整合步骤和技术要点: ### 1. 创建项目并配置目标框架 首先,确保项目使用合适的 .NET 版本。若选择 .NET Core 3.1 或 .NET 5/6,则可以充分利用 CefSharp.Wpf.NETCore 和 CommunityToolkit.Mvvm 的现代特性支持。对于项目文件,需要添加以下依赖和配置: ```xml <Project Sdk="Microsoft.NET.Sdk.WindowsDesktop"> <PropertyGroup> <OutputType>WinExe</OutputType> <TargetFramework>net6.0</TargetFramework> <UseWPF>true</UseWPF> <LangVersion>9.0</LangVersion> </PropertyGroup> <ItemGroup> <PackageReference Include="CommunityToolkit.Mvvm" Version="8.2.1" /> <PackageReference Include="MaterialDesignThemes.Wpf" Version="3.0.1" /> <PackageReference Include="CefSharp.Wpf.NETCore" Version="114.2.110" /> </ItemGroup> </Project> ``` 上述配置中,`TargetFramework` 设置为 `net6.0`,以支持 CefSharp 的 .NET Core 版本,同时启用 `LangVersion` 为 9.0,以支持 MVVM Toolkit 的源生成器功能[^2]。 ### 2. 集成 MaterialDesignThemes.MahApps 实现现代 UI MaterialDesignThemes.Wpf 提供了丰富的控件和样式,用于实现 Material Design 风格的界面。在 `App.xaml` 中引入主题资源: ```xml <Application.Resources> <Style TargetType="Button" BasedOn="{StaticResource MaterialDesignFlatButton}" /> </Application.Resources> ``` 同时,在 `MainWindow.xaml` 或其他页面中直接使用控件: ```xml <Window x:Class="MyApp.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="450" Width="800"> <Grid> <Button Content="Click Me" Style="{StaticResource MaterialDesignFlatButton}" /> </Grid> </Window> ``` 此步骤确保了界面具备现代视觉风格,并与 WPF 原生控件无缝融合[^4]。 ### 3. 使用 CefSharp.Wpf.NETCore 嵌入浏览器控件 CefSharp.Wpf.NETCore 允许在 WPF 应用中嵌入 Chromium 浏览器。在 `MainWindow.xaml` 中添加浏览器控件: ```xml <Window x:Class="MyApp.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:cef="clr-namespace:CefSharp.Wpf;assembly=CefSharp.Wpf.NETCore" Title="MainWindow" Height="450" Width="800"> <Grid> <cef:ChromiumWebBrowser Address="https://www.example.com" /> </Grid> </Window> ``` 在 `MainWindow.xaml.cs` 中初始化 CEF 环境(通常在 `App.xaml.cs` 中进行全局初始化): ```csharp public partial class App : Application { public App() { Cef.Initialize(new CefSettings()); } } ``` 该配置确保应用能够加载并渲染网页内容,适用于需要嵌入 Web UI 的场景[^3]。 ### 4. 使用 CommunityToolkit.Mvvm 实现 MVVM 模式 MVVM 模式通过数据绑定和命令机制实现 UI 与业务逻辑的分离。定义一个 ViewModel 并绑定到视图: ```csharp using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.Input; public class MainWindowViewModel : ObservableObject { private string _url; public string Url { get => _url; set => SetProperty(ref _url, value); } public RelayCommand NavigateCommand { get; } public MainWindowViewModel() { Url = "https://www.example.com"; NavigateCommand = new RelayCommand(OnNavigate); } private void OnNavigate() { // 执行导航逻辑 } } ``` 在 `MainWindow.xaml` 中绑定 ViewModel: ```xml <Window.DataContext> <local:MainWindowViewModel /> </Window.DataContext> ``` 通过此方式,可以将 UI 逻辑与业务逻辑解耦,提升代码的可测试性和可维护性[^1]。 ### 5. 处理异步初始化和设计器兼容性 在使用 MVVM 模式时,若 ViewModel 中涉及异步操作,需特别注意 Visual Studio 设计器的行为。设计器会在打开时缓存 ViewModel 的构造逻辑,可能导致异步任务意外运行。建议将异步初始化逻辑延迟到视图加载完成后执行: ```csharp private async void OnLoaded(object sender, RoutedEventArgs e) { await InitializeAsync(); } ``` 此外,在 `App.xaml.cs` 中确保 CEF 的正确初始化,避免因异步加载导致的异常[^5]。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值