public static BuildTargetResult ExpectedBuildArtifacts(BuildTargetContext c) { var config = Environment.GetEnvironmentVariable("CONFIGURATION"); var versionBadgeName = $"{Monikers.GetBadgeMoniker()}_{config}_version_badge.svg"; c.BuildContext["VersionBadge"] = Path.Combine(Dirs.Output, versionBadgeName); var cliVersion = c.BuildContext.Get <BuildVersion>("BuildVersion").NuGetVersion; var sharedFrameworkVersion = CliDependencyVersions.SharedFrameworkVersion; var hostVersion = CliDependencyVersions.SharedHostVersion; var hostFxrVersion = CliDependencyVersions.HostFxrVersion; // Generated Installers + Archives AddInstallerArtifactToContext(c, "dotnet-sdk", "Sdk", cliVersion); AddInstallerArtifactToContext(c, "dotnet-dev", "CombinedFrameworkSDKHost", cliVersion); AddInstallerArtifactToContext(c, "dotnet-sharedframework-sdk", "CombinedFrameworkSDK", cliVersion); AddInstallerArtifactToContext(c, "dotnet-sdk-debug", "SdkSymbols", cliVersion); //Downloaded Installers + Archives AddInstallerArtifactToContext(c, "dotnet-host", "SharedHost", hostVersion); AddInstallerArtifactToContext(c, "dotnet-hostfxr", "HostFxr", hostFxrVersion); AddInstallerArtifactToContext(c, "dotnet-sharedframework", "SharedFramework", sharedFrameworkVersion); AddInstallerArtifactToContext(c, "dotnet", "CombinedFrameworkHost", sharedFrameworkVersion); return(c.Success()); }
public override bool Execute() { base.Execute(); var branchInfo = new BranchInfo(RepoRoot); var buildVersion = new BuildVersion() { Major = int.Parse(branchInfo.Entries["MAJOR_VERSION"]), Minor = int.Parse(branchInfo.Entries["MINOR_VERSION"]), Patch = int.Parse(branchInfo.Entries["PATCH_VERSION"]), ReleaseSuffix = branchInfo.Entries["RELEASE_SUFFIX"], CommitCount = _commitCount }; VersionMajor = buildVersion.Major; VersionMinor = buildVersion.Minor; VersionPatch = buildVersion.Patch; CommitCount = buildVersion.CommitCountString; ReleaseSuffix = buildVersion.ReleaseSuffix; VersionSuffix = buildVersion.VersionSuffix; SimpleVersion = buildVersion.SimpleVersion; NugetVersion = buildVersion.NuGetVersion; MsiVersion = buildVersion.GenerateMsiVersion(); VersionBadgeMoniker = Monikers.GetBadgeMoniker(); Channel = branchInfo.Entries["CHANNEL"]; BranchName = branchInfo.Entries["BRANCH_NAME"]; return(true); }
public static BuildTargetResult RemovePackages(BuildTargetContext c) { // Ubuntu 16.04 Jenkins Machines don't have docker or debian package build tools // So we need to skip this target if the tools aren't present. // https://github.com/dotnet/core-setup/issues/167 if (DebuildNotPresent()) { c.Info("Debuild not present, skipping target: {nameof(RemovePackages)}"); return(c.Success()); } IEnumerable <string> orderedPackageNames = new List <string>() { CliMonikers.GetSdkDebianPackageName(c), Monikers.GetDebianSharedFrameworkPackageName(CliDependencyVersions.SharedFrameworkVersion), Monikers.GetDebianHostFxrPackageName(CliDependencyVersions.HostFxrVersion), Monikers.GetDebianSharedHostPackageName(c) }; foreach (var packageName in orderedPackageNames) { RemovePackage(packageName); } return(c.Success()); }
public static BuildTargetResult GenerateSdkDeb(BuildTargetContext c) { var channel = c.BuildContext.Get <string>("Channel").ToLower(); var packageName = Monikers.GetSdkDebianPackageName(c); var version = c.BuildContext.Get <BuildVersion>("BuildVersion").NuGetVersion; var debFile = c.BuildContext.Get <string>("SdkInstallerFile"); var manPagesDir = Path.Combine(Dirs.RepoRoot, "Documentation", "manpages"); var previousVersionURL = $"https://dotnetcli.blob.core.windows.net/dotnet/{channel}/Installers/Latest/dotnet-ubuntu-x64.latest.deb"; var sdkPublishRoot = c.BuildContext.Get <string>("CLISDKRoot"); var sharedFxDebianPackageName = Monikers.GetDebianSharedFrameworkPackageName(c); var objRoot = Path.Combine(Dirs.Output, "obj", "debian", "sdk"); if (Directory.Exists(objRoot)) { Directory.Delete(objRoot, true); } Directory.CreateDirectory(objRoot); Cmd(Path.Combine(Dirs.RepoRoot, "scripts", "package", "package-debian.sh"), "-v", version, "-i", sdkPublishRoot, "-o", debFile, "-p", packageName, "-m", manPagesDir, "--framework-debian-package-name", sharedFxDebianPackageName, "--framework-nuget-name", Monikers.SharedFrameworkName, "--framework-nuget-version", c.BuildContext.Get <string>("SharedFrameworkNugetVersion"), "--previous-version-url", previousVersionURL, "--obj-root", objRoot) .Execute() .EnsureSuccessful(); return(c.Success()); }
public override bool Execute() { Rid = RuntimeEnvironment.GetRuntimeIdentifier(); Architecture = RuntimeEnvironment.RuntimeArchitecture; OSName = Monikers.GetOSShortName(); return(true); }
public override bool Execute() { Rid = string.IsNullOrEmpty(OverrideRid) ? RuntimeEnvironment.GetRuntimeIdentifier() : OverrideRid; Architecture = RuntimeEnvironment.RuntimeArchitecture; OSName = Monikers.GetOSShortName(); return(true); }
public static BuildTargetResult PublishLatestVersionTextFile(BuildTargetContext c) { var osname = Monikers.GetOSShortName(); var latestVersionBlob = $"{Channel}/dnvm/latest.{osname}.{CurrentArchitecture.Current}.version"; var latestVersionFile = Path.Combine(Dirs.Stage2, ".version"); PublishFileAzure(latestVersionBlob, latestVersionFile); return(c.Success()); }
public static BuildTargetResult PublishDebFileToDebianRepo(BuildTargetContext c) { var packageName = Monikers.GetDebianPackageName(c); var installerFile = c.BuildContext.Get <string>("InstallerFile"); var uploadUrl = $"https://dotnetcli.blob.core.windows.net/dotnet/{Channel}/Installers/{Version}/{Path.GetFileName(installerFile)}"; var uploadJson = GenerateUploadJsonFile(packageName, Version, uploadUrl); Cmd(Path.Combine(Dirs.RepoRoot, "scripts", "publish", "repoapi_client.sh"), "-addpkg", uploadJson) .Execute() .EnsureSuccessful(); return(c.Success()); }
public static BuildTargetResult PublishSharedHostDebToDebianRepo(BuildTargetContext c) { var version = SharedHostNugetVersion; var packageName = Monikers.GetDebianSharedHostPackageName(c); var installerFile = c.BuildContext.Get <string>("SharedHostInstallerFile"); var uploadUrl = AzurePublisherTool.CalculateInstallerUploadUrl(installerFile, Channel, version); DebRepoPublisherTool.PublishDebFileToDebianRepo( packageName, version, uploadUrl); return(c.Success()); }
public static BuildTargetResult GenerateDeb(BuildTargetContext c) { var channel = c.BuildContext.Get <string>("Channel").ToLower(); var packageName = Monikers.GetDebianPackageName(c); var version = c.BuildContext.Get <BuildVersion>("BuildVersion").SimpleVersion; var debFile = c.BuildContext.Get <string>("InstallerFile"); var manPagesDir = Path.Combine(Dirs.RepoRoot, "Documentation", "manpages"); var previousVersionURL = $"https://dotnetcli.blob.core.windows.net/dotnet/{channel}/Installers/Latest/dotnet-ubuntu-x64.latest.deb"; Cmd(Path.Combine(Dirs.RepoRoot, "scripts", "package", "package-debian.sh"), "-v", version, "-i", Dirs.Stage2, "-o", debFile, "-p", packageName, "-m", manPagesDir, "--previous-version-url", previousVersionURL) .Execute() .EnsureSuccessful(); return(c.Success()); }
public static BuildTargetResult GenerateSdkDeb(BuildTargetContext c) { // Ubuntu 16.04 Jenkins Machines don't have docker or debian package build tools // So we need to skip this target if the tools aren't present. // https://github.com/dotnet/core-setup/issues/167 if (DebuildNotPresent()) { c.Info("Debuild not present, skipping target: {nameof(RemovePackages)}"); return(c.Success()); } var channel = c.BuildContext.Get <string>("Channel").ToLower(); var packageName = CliMonikers.GetSdkDebianPackageName(c); var version = c.BuildContext.Get <BuildVersion>("BuildVersion").NuGetVersion; var debFile = c.BuildContext.Get <string>("SdkInstallerFile"); var manPagesDir = Path.Combine(Dirs.RepoRoot, "Documentation", "manpages"); var sdkPublishRoot = c.BuildContext.Get <string>("CLISDKRoot"); var sharedFxDebianPackageName = Monikers.GetDebianSharedFrameworkPackageName(CliDependencyVersions.SharedFrameworkVersion); var debianConfigFile = Path.Combine(Dirs.DebPackagingConfig, "dotnet-debian_config.json"); var postinstallFile = Path.Combine(Dirs.DebPackagingConfig, "postinst"); var debianConfigVariables = new Dictionary <string, string>() { { "SHARED_FRAMEWORK_DEBIAN_PACKAGE_NAME", sharedFxDebianPackageName }, { "SHARED_FRAMEWORK_NUGET_NAME", Monikers.SharedFrameworkName }, { "SHARED_FRAMEWORK_NUGET_VERSION", CliDependencyVersions.SharedFrameworkVersion }, { "SHARED_FRAMEWORK_BRAND_NAME", Monikers.SharedFxBrandName }, { "SDK_NUGET_VERSION", version }, { "CLI_SDK_BRAND_NAME", Monikers.CLISdkBrandName } }; var debCreator = new DebPackageCreator( DotNetCli.Stage2, Dirs.Intermediate); debCreator.CreateDeb( debianConfigFile, packageName, version, sdkPublishRoot, debianConfigVariables, debFile, manpagesDirectory: manPagesDir, versionManpages: true, debianFiles: new string[] { postinstallFile }); return(c.Success()); }
public static BuildTargetResult PublishLatestSharedFrameworkVersionTextFile(BuildTargetContext c) { var version = SharedFrameworkNugetVersion; var osname = Monikers.GetOSShortName(); var latestSharedFXVersionBlob = $"{Channel}/dnvm/latest.sharedfx.{osname}.{CurrentArchitecture.Current}.version"; var latestSharedFXVersionFile = Path.Combine( Dirs.Stage2, "shared", CompileTargets.SharedFrameworkName, version, ".version"); AzurePublisherTool.PublishFile(latestSharedFXVersionBlob, latestSharedFXVersionFile); return(c.Success()); }
public static BuildTargetResult RemovePackages(BuildTargetContext c) { IEnumerable <string> orderedPackageNames = new List <string>() { Monikers.GetSdkDebianPackageName(c), Monikers.GetDebianSharedFrameworkPackageName(c), Monikers.GetDebianSharedHostPackageName(c) }; foreach (var packageName in orderedPackageNames) { RemovePackage(packageName); } return(c.Success()); }
public static BuildTargetResult GenerateSdkDeb(BuildTargetContext c) { // Ubuntu 16.04 Jenkins Machines don't have docker or debian package build tools // So we need to skip this target if the tools aren't present. // https://github.com/dotnet/core-setup/issues/167 if (DebuildNotPresent()) { c.Info("Debuild not present, skipping target: {nameof(RemovePackages)}"); return(c.Success()); } var channel = c.BuildContext.Get <string>("Channel").ToLower(); var packageName = CliMonikers.GetSdkDebianPackageName(c); var version = c.BuildContext.Get <BuildVersion>("BuildVersion").NuGetVersion; var debFile = c.BuildContext.Get <string>("SdkInstallerFile"); var manPagesDir = Path.Combine(Dirs.RepoRoot, "Documentation", "manpages"); var previousVersionURL = $"https://dotnetcli.blob.core.windows.net/dotnet/{channel}/Installers/Latest/dotnet-ubuntu-x64.latest.deb"; var sdkPublishRoot = c.BuildContext.Get <string>("CLISDKRoot"); var sharedFxDebianPackageName = Monikers.GetDebianSharedFrameworkPackageName(CliDependencyVersions.SharedFrameworkVersion); var objRoot = Path.Combine(Dirs.Output, "obj", "debian", "sdk"); if (Directory.Exists(objRoot)) { Directory.Delete(objRoot, true); } Directory.CreateDirectory(objRoot); Cmd(Path.Combine(Dirs.RepoRoot, "scripts", "package", "package-debian.sh"), "-v", version, "-i", sdkPublishRoot, "-o", debFile, "-p", packageName, "-b", Monikers.CLISdkBrandName, "-m", manPagesDir, "--framework-debian-package-name", sharedFxDebianPackageName, "--framework-nuget-name", Monikers.SharedFrameworkName, "--framework-nuget-version", CliDependencyVersions.SharedFrameworkVersion, "--previous-version-url", previousVersionURL, "--obj-root", objRoot) .Execute() .EnsureSuccessful(); return(c.Success()); }
private static void AddInstallerArtifactToContext( BuildTargetContext c, string artifactPrefix, string contextPrefix, string version) { var productName = Monikers.GetProductMoniker(c, artifactPrefix, version); var extension = CurrentPlatform.IsWindows ? ".zip" : ".tar.gz"; c.BuildContext[contextPrefix + "CompressedFile"] = Path.Combine(Dirs.Packages, productName + extension); string installer = ""; switch (CurrentPlatform.Current) { case BuildPlatform.Windows: if (contextPrefix.Contains("Combined")) { installer = productName + ".exe"; } else { installer = productName + ".msi"; } break; case BuildPlatform.OSX: installer = productName + ".pkg"; break; case BuildPlatform.Ubuntu: installer = productName + ".deb"; break; default: break; } if (!string.IsNullOrEmpty(installer)) { c.BuildContext[contextPrefix + "InstallerFile"] = Path.Combine(Dirs.Packages, installer); } }
public override bool Execute() { var badges = new Dictionary <string, bool>() { { "win_x86", false }, { "win_x64", false }, { "ubuntu_x64", false }, { "ubuntu_16_04_x64", false }, { "rhel_x64", false }, { "osx_x64", false }, { "debian_x64", false }, { "centos_x64", false }, { "fedora_23_x64", false }, { "openSUSE_13_2_x64", false } }; var versionBadgeName = $"{Monikers.GetBadgeMoniker()}"; if (!badges.ContainsKey(versionBadgeName)) { throw new ArgumentException($"A new OS build '{versionBadgeName}' was added without adding the moniker to the {nameof(badges)} lookup"); } IEnumerable <string> blobs = AzurePublisherTool.ListBlobs(AzurePublisher.Product.Sdk, NugetVersion); foreach (string file in blobs) { string name = Path.GetFileName(file); foreach (string img in badges.Keys) { if ((name.StartsWith($"{img}")) && (name.EndsWith(".svg"))) { badges[img] = true; break; } } } HaveAllBuildsPublished = badges.Values.All(v => v).ToString(); return(true); }
private static bool CheckIfAllBuildsHavePublished() { Dictionary <string, bool> badges = new Dictionary <string, bool>() { { "Windows_x86", false }, { "Windows_x64", false }, { "Ubuntu_x64", false }, { "Ubuntu_16_04_x64", false }, { "RHEL_x64", false }, { "OSX_x64", false }, { "Debian_x64", false }, { "CentOS_x64", false }, { "Fedora_23_x64", false }, { "openSUSE_13_2_x64", false } }; var versionBadgeName = $"{Monikers.GetBadgeMoniker()}"; if (!badges.ContainsKey(versionBadgeName)) { throw new ArgumentException($"A new OS build '{versionBadgeName}' was added without adding the moniker to the {nameof(badges)} lookup"); } IEnumerable <string> blobs = AzurePublisherTool.ListBlobs(AzurePublisher.Product.Sdk, CliNuGetVersion); foreach (string file in blobs) { string name = Path.GetFileName(file); foreach (string img in badges.Keys) { if ((name.StartsWith($"{img}")) && (name.EndsWith(".svg"))) { badges[img] = true; break; } } } return(badges.Values.All(v => v)); }
public static BuildTargetResult ExpectedBuildArtifacts(BuildTargetContext c) { var productName = Monikers.GetProductMoniker(c); var config = Environment.GetEnvironmentVariable("CONFIGURATION"); var versionBadgeName = $"{CurrentPlatform.Current}_{CurrentArchitecture.Current}_{config}_version_badge.svg"; c.BuildContext["VersionBadge"] = Path.Combine(Dirs.Output, versionBadgeName); var extension = CurrentPlatform.IsWindows ? ".zip" : ".tar.gz"; c.BuildContext["CompressedFile"] = Path.Combine(Dirs.Packages, productName + extension); string installer = ""; switch (CurrentPlatform.Current) { case BuildPlatform.Windows: installer = productName + ".exe"; break; case BuildPlatform.OSX: installer = productName + ".pkg"; break; case BuildPlatform.Ubuntu: installer = productName + ".deb"; break; default: break; } if (!string.IsNullOrEmpty(installer)) { c.BuildContext["InstallerFile"] = Path.Combine(Dirs.Packages, installer); } return(c.Success()); }
public static BuildTargetResult GenerateSharedHostDeb(BuildTargetContext c) { var packageName = Monikers.GetDebianSharedHostPackageName(c); var version = c.BuildContext.Get <BuildVersion>("BuildVersion").NuGetVersion; var inputRoot = c.BuildContext.Get <string>("SharedHostPublishRoot"); var debFile = c.BuildContext.Get <string>("SharedHostInstallerFile"); var objRoot = Path.Combine(Dirs.Output, "obj", "debian", "sharedhost"); var manPagesDir = Path.Combine(Dirs.RepoRoot, "Documentation", "manpages"); if (Directory.Exists(objRoot)) { Directory.Delete(objRoot, true); } Directory.CreateDirectory(objRoot); Cmd(Path.Combine(Dirs.RepoRoot, "scripts", "package", "package-sharedhost-debian.sh"), "--input", inputRoot, "--output", debFile, "--obj-root", objRoot, "--version", version, "-m", manPagesDir) .Execute() .EnsureSuccessful(); return(c.Success()); }
public override bool Execute() { base.Execute(); var buildVersion = new BuildVersion() { Major = VersionMajor, Minor = VersionMinor, Patch = VersionPatch, ReleaseSuffix = ReleaseSuffix, CommitCount = _commitCount }; CommitCount = buildVersion.CommitCountString; VersionSuffix = buildVersion.VersionSuffix; SimpleVersion = buildVersion.SimpleVersion; NugetVersion = buildVersion.NuGetVersion; MsiVersion = buildVersion.GenerateMsiVersion(); VersionBadgeMoniker = Monikers.GetBadgeMoniker(); return(true); }
public static BuildTargetResult GenerateSharedFrameworkDeb(BuildTargetContext c) { var packageName = Monikers.GetDebianSharedFrameworkPackageName(c); var version = c.BuildContext.Get <string>("SharedFrameworkNugetVersion"); var inputRoot = c.BuildContext.Get <string>("SharedFrameworkPublishRoot"); var debFile = c.BuildContext.Get <string>("SharedFrameworkInstallerFile"); var objRoot = Path.Combine(Dirs.Output, "obj", "debian", "sharedframework"); if (Directory.Exists(objRoot)) { Directory.Delete(objRoot, true); } Directory.CreateDirectory(objRoot); Cmd(Path.Combine(Dirs.RepoRoot, "scripts", "package", "package-sharedframework-debian.sh"), "--input", inputRoot, "--output", debFile, "--package-name", packageName, "-b", Monikers.SharedFxBrandName, "--framework-nuget-name", Monikers.SharedFrameworkName, "--framework-nuget-version", c.BuildContext.Get <string>("SharedFrameworkNugetVersion"), "--obj-root", objRoot, "--version", version) .Execute() .EnsureSuccessful(); return(c.Success()); }