2017-03-11 7 views
1

Cake를 사용하여 .csproj 파일로 ASP.NET 코어 1.1을 빌드하고 있습니다. 소스를 Github에 푸시하고 패키지를 MyGet에 게시해야합니다.Cake를 사용하여 버전을 정의하고 프로젝트를 Github 및 MyGet에 푸시

String target = Argument<String>("target", "Default"); 

Task("Clean").Does(() => {  
    if (DirectoryExists("./build")) 
    DeleteDirectory("./build", true); 
    CreateDirectory("./build");  
}); 

Task("Restore").Does(() => { 
    FilePathCollection projects = GetFiles("./**/*.csproj"); 
    foreach(FilePath project in projects) 
    DotNetCoreRestore(project.FullPath); 
}); 

Task("Build").IsDependentOn("Clean").IsDependentOn("Restore").Does(() => { 
    FilePathCollection projects = GetFiles("./**/*.csproj"); 
    foreach(FilePath project in projects) 
    DotNetCoreBuild(project.FullPath); 
}); 

Task("Test").IsDependentOn("Build").Does(() => { 
    FilePathCollection projects = GetFiles("./test/**/*.csproj"); 
    foreach(FilePath project in projects) 
    DotNetCoreTest(project.FullPath); 
}); 

Task("Pack").IsDependentOn("Test").Does(() => { 
    DotNetCorePack("./src/MyProject.csproj", new DotNetCorePackSettings { OutputDirectory = "./build/MyProject/" }); 
}); 

Task("Default").IsDependentOn("Pack"); 

RunTarget(target); 

다음 작업을 수행 할 수있는 방법 : 순간 나는 스크립트가
1. 증가 csproj 파일의 버전에 따라 개정 번호;
2. 프로젝트를 Github으로 푸십시오.
3. 패키지를 MyGet으로 밀어 넣습니다.

답변

2
  1. GitVersionMagicChunks의 조합을 사용하면이 두 가지 케이크 별칭을 사용할 수 있습니다. Gitversion은 repo의 버전 번호를 지정하는 데 사용되며 MagicChunks는 xml, json 파일 등의 다른 섹션을 업데이트하는 데 사용됩니다.
  2. 여기서 의미를 정확히 확인할 수 있습니까? GitHub 저장소로 변경 사항을 커밋하는 것에 대해 이야기하고 있습니까? 그렇다면 Cake.Git addin을 살펴 보시기 바랍니다. 또는 파일을 GitHub 릴리스로 푸시하는 것에 대해 이야기하는 경우 GitReleaseManager 별칭을 살펴볼 수 있습니다.
  3. NuGet 패키지를 얻었 으면 NuGetPush 별칭을 사용하여 패키지를 MyGet으로 푸시 할 수 있어야합니다. NuGetPushSettings 클래스의 Source 속성을 설정해야합니다. 귀하의 의견의 일부를 바탕으로

는, 나는 일반적으로 다시 소스 제어 저장소에 변경 사항을 밀어 케이크를 사용하지 않는 약간이 답변 ...

를 업데이트하고 있습니다. 오히려, 내가 소스 제어 저장소로 작성한 커밋은 일반적으로 AppVeyor 나 TeamCity 같은 지속적인 통합 서버의 일부 양식을 사용하여 빌드가 트리거되도록합니다. 그렇게하면 커밋 메시지는 사용자가 커밋을하면 알 수 있으므로 변경된 내용을 알 수 있습니다. 이 접근 방식을 사용하면 저장소에 자동화 된 커밋이 없으므로 개인적으로 이것이 어떻게되어야한다고 생각합니다.

위 내용을 기반으로 언급 한 릴리스 대상 만 있으면됩니다. 빌드 프로세스의 일부로 GitVersion은 버전 번호를 표시하고 해당 버전 번호로 NuGet 패키지를 만들 수있게합니다 (그러면 저장소에 대한 추가 커밋이 필요하지 않습니다). 그런 다음 NuGet.org에 푸시 할 수 있습니다. 및 GitHub.

+0

1. 수동으로 파일을 추가하고 로컬 저장소에 커밋 한 다음 Build 스크립트를 사용하여 GitVersion에 커밋 메시지 및 정보가 전달되도록 푸시합니다. 내가 Cake 스크립트 GitCommit (http://cakebuild.net/api/Cake.Git/GitCommit/)에 포함 시켰기 때문에 이것을 묻는다. 빌드 할 때마다 커밋이 생성되어 원격 저장소에 푸시된다. 하지만 내 문제는이 경우 커밋 메시지를 정의하는 방법이었습니다. 내 질문을 이해하니? –

+0

2. 나는 Github 저장소로 그것들을 밀어 넣고, 그렇게 할 필요가있을 때 태그로써 버전으로 릴리즈를 추진하고있다. 나는 2 가지 목표를 가지고 있다고 생각하고 있었다. "Default"는 Commit and Push로 버전 패치를 변경했지만 Github Tag는없고 누그없이 Nuget을 변경했다. 그리고 Tag를 추가하고 Nuget에도 그것을 밀어 넣을 다른 목표 "Release"를 가져라. 그것은 의미가 있습니까? –

+0

위의 답에 몇 가지 추가 노트를 추가했습니다. –