搜索

搭建个人存储服务器NAS

用过了各种网盘,各种限制,各种害怕数据泄露,于是就踏上了搭建自己存储服务器这条路,如果有条件赶紧试试吧。

掌上菜谱-微菜谱等你来解锁

像我这种不会做饭的人,偶尔兴趣来潮,想动手做做饭,泡泡茶,那么就需要一本菜谱来指引了,为此,我专门开发了一款菜谱小程序,欢迎体验。

Java抽象类的使用

我们在实际开发中会有一定的业务流程,很多流程的步骤是一样的,但是具体的业务逻辑需要不同的场景去完成,这时候我们首先想到的是抽象类和接口。

实践:gitlab自动构建dotnet发布nuget包

.net开发者在开发过程中必不可少封装自己的类库,那么nuget便是管理自己类库版本的最佳选择。本文将介绍怎么使用gitlab的runner自动发布nuget。

dotnet开发者都应该使用过nuget管理自己的类库;

现在简单介绍一下nuget使用;

第一部分:安装服务端;

第二部分:nuget使用。

 

实践:

1、创建一个空的web服务;

2、安装nuget.server;

3、发布部署;

4、查看效果如下:

到这里,nuget私服就已经搭建好了,自己可以配置上传到私服的密钥;

 

5、新建一个类库;

6、打包类库,我这里使用dotnet core作为示例:

dotnet pack -nowarn:CS1591,CS1587 -o="C:\Nuget-Build" C:\Runner\builds\TsFm6zic\0\root\vli\Vli.sln -c Release
nuget push "vli.nuget" F5141B8-AC71-4342-9C1D-39oopE -src https://nuget.nuosoon.com/nuget

7、到这里就已经完成了整个流程,你学会了吗,赶紧动手吧。

整个过程可以集成到自己的自动构建服务中,把命令放在脚本连去执行;

 

下面是我使用gitlab中自带的runner配置简单的ci;

指令:

stages:
  - build

job-master:
  stage: build
  script:
  - 'chcp 65001'
  - cd C:\Runner\builds\TsFmpzic\0\root\vli
  - PowerShell.exe "C:\CI-Script\vli-nuget-ci.ps1"
  tags: 
  only:
  - master
  except:
  - tags

脚本:

$version_api = "https://tools.mainki.com/api/NugetService/";
$output_path = "C:\Nuget-Build";
$sln_path = "C:\Runner\builds\TsFm6zic\0\root\vli\Vli.sln";

# 预打包
echo "预打包"

dotnet pack -nowarn:CS1591,CS1587 -o="$output_path" $sln_path -c Release

# 获取所有包
$packages = Get-ChildItem -Path "$output_path" -Filter *.nupkg -Recurse;
$package_ids = New-Object -TypeName System.Collections.ArrayList;
$package_versions = New-Object -TypeName System.Collections.ArrayList;
$package_names = New-Object -TypeName System.Collections.ArrayList;

# 获取Nuget打包后的ID  
foreach($pk in $packages)
{
    $name = $pk.Name.Split(".");   
    $id = "";
    for($i=0;$i -le $name.Length-5;$i++ )
    {
        $id += $name[$i]+".";
    }
    $id = $id.TrimEnd('.');
    if(!$package_ids.Contains($id))
    {
         $package_ids.Add($id);    
    }   
};

# 获取版本
foreach($pack in $package_ids)
{
    $url = $version_api + $pack;
    $version_json = Invoke-WebRequest -Uri $url -UseBasicParsing;
    $version = ($version_json.Content | ConvertFrom-Json).NextVersion;
    $package_versions.Add($version);    
};

$package_versions.Sort();
$max_version = $package_versions[$package_versions.Count-1];

# 设置包名
foreach($packn in $package_ids)
{
    $package_name = $packn + "." + $max_version + ".nupkg";
    $package_names.Add($package_name);
}

if($max_version -eq $null)
{
    echo "第一次生成";
    
    # 打包
    dotnet pack -nowarn:CS1591,CS1587 $sln_path -o="$output_path" -c Release /p:PackageVersion=1.0.0;   
} 
else
{
    echo "删除旧包..."
    Remove-Item "$output_path\*" -include *.nupkg
    dotnet pack -nowarn:CS1591,CS1587 $sln_path -o="$output_path" -c Release /p:PackageVersion=$max_version ;
}

$packages_up = Get-ChildItem -Path "$output_path" -Filter *.nupkg -Recurse;
foreach($p in $packages_up)
{
    $pname = $p.Name;
    # 上传包
    nuget push "$output_path\$pname" FppllasA8-AC71-4342-9C1D-dsdkwmd -src https://nuget.nuosoon.com/nuget ;
}

echo "打包上传完成";

 

留 言