Publish แพ็คเกจ NuGet (.nupkg)ไปที่ nuget.org ด้วย Cake

wk
1 min readOct 11, 2018

--

  1. ติดตั้ง Cake ผ่าน .NET global tool
dotnet tool install -g cake.tool

2. สร้างโปรเจค Library

dotnet new library --output src/HelloLibrary

3. เพิ่ม Metadata ของโปรเจคไว้ในไฟล์ Directory.Build.props โดยต้องใช้ PackageId ที่ไม่ซ้ำกับแพ็คเกจใน nuget.org

<Project>
<PropertyGroup>
<PackageId>wk.HelloLibrary</PackageId>
<Version>0.1.0</Version>
<PackageTags>Hello</PackageTags>
<Description>Hello library</Description>
<authors>wk-j</authors>
<owners>wk-j</owners>
</PropertyGroup>
</Project>

4. เขียนสคริป Cake ตั้งชื่อไฟล์ว่า build.cake

var project = "src/HelloLibrary/HelloLibrary.csproj";
var publishDir = "publish";
Task("Pack").Does(() => {
CleanDirectory(publishDir);
DotNetCorePack(project, new DotNetCorePackSettings {
OutputDirectory = publishDir
});
});
Task("Publish")
.IsDependentOn("Pack")
.Does(() => {
var apiKey = EnvironmentVariable("NAPI");
var nupkg = new System.IO.DirectoryInfo(publishDir)
.GetFiles("*.nupkg").LastOrDefault();
var package = nupkg.FullName;
NuGetPush(package, new NuGetPushSettings {
Source = "https://www.nuget.org/api/v2/package",
ApiKey = apiKey
});
});
var target = Argument("target", "Pack");
RunTarget(target);

ในสคริปต์มีการใช้ NuGet API key ดังนั้นต้อง Generate key และเก็บเป็น Environment variable ในเครื่อง ตามตัวอย่างจะเก็บไว้ในตัวแปรชื่อ NAPI

5. Publish แพ็คเกจขึ้น Server ด้วยคำสั่ง dotnet cake -target=Publish

6. เข้าไปหน้า Manage package ใน nuget.org

จะเห็นแพ็คเกจ ชื่อ wk.HelloLibrary โดยต้องรอให้ Server validate และทำ Index ประมาณ 10–15 นาที จึงสามารถค้นหาและติดตั้งผ่าน NuGet client ได้

--

--

No responses yet