Skip to content

Commit

Permalink
Add common code into a directory
Browse files Browse the repository at this point in the history
  • Loading branch information
william-msft committed Jul 26, 2023
1 parent aa3c7de commit 727142b
Show file tree
Hide file tree
Showing 4 changed files with 74 additions and 70 deletions.
4 changes: 0 additions & 4 deletions build/tools/Automation/Automation.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,4 @@
<PackageReference Include="YamlDotNet" Version="12.3.1" />
</ItemGroup>

<ItemGroup>
<Folder Include="Commons\" />
</ItemGroup>

</Project>
62 changes: 62 additions & 0 deletions build/tools/Automation/Commons/SdkStorageHelper.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
using System;
using System.Collections.Generic;

namespace Microsoft.Oryx.Automation.Commons
{
public static class SdkStorageHelper
{
/// <summary>
/// Gets the SDK storage URL by combining the base URL with a platform-specific suffix.
/// If the base URL is not provided, the default base URL will be used.
/// For the staging account, a SAS token is required and will be appended to the URL.
/// </summary>
/// <param name="oryxSdkStorageBaseUrl">The base URL of the SDK storage.</param>
/// <param name="platformSuffixUrl">The platform-specific suffix URL.</param>
/// <returns>The SDK storage URL.</returns>
public static string GetSdkStorageUrl(string oryxSdkStorageBaseUrl, string platformSuffixUrl)
{
if (string.IsNullOrEmpty(oryxSdkStorageBaseUrl))
{
oryxSdkStorageBaseUrl = Constants.OryxSdkStorageBaseUrl;
}

string sdkVersionsUrl = oryxSdkStorageBaseUrl + platformSuffixUrl;

// A SAS token is required for the staging account.
if (sdkVersionsUrl.StartsWith(Constants.OryxSdkStagingStorageBaseUrl))
{
string sasToken = Environment.GetEnvironmentVariable(Constants.OryxSdkStagingPrivateSasTokenEnvVar);
if (string.IsNullOrEmpty(sasToken))
{
throw new ArgumentException($"The environment variable {Constants.OryxSdkStagingPrivateSasTokenEnvVar} " +
$"must be provided in order to access {Constants.OryxSdkStagingStorageBaseUrl}");
}

sdkVersionsUrl += "&" + sasToken;
}

return sdkVersionsUrl;
}

/// <summary>
/// Extracts blocked versions from a comma-separated string,
/// stored in the GitHub Actions environment variable, and returns them as a list.
/// </summary>
/// <param name="blockedVersions">The comma-separated string of blocked versions.</param>
/// <returns>The list of extracted blocked versions.</returns>
public static List<string> ExtractBlockedVersions(string blockedVersions)
{
List<string> result = new List<string>();
if (!string.IsNullOrEmpty(blockedVersions))
{
var versionStrings = blockedVersions.Split(',');
foreach (var versionString in versionStrings)
{
result.Add(versionString.Trim());
}
}

return result;
}
}
}
37 changes: 5 additions & 32 deletions build/tools/Automation/DotNet/DotNetAutomator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
using System.Linq;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using Microsoft.Oryx.Automation.Commons;
using Microsoft.Oryx.Automation.DotNet.Models;
using Microsoft.Oryx.Automation.Models;
using Microsoft.Oryx.Automation.Services;
Expand All @@ -32,7 +33,6 @@ public class DotNetAutomator
private readonly IVersionService versionService;
private readonly IFileService fileService;
private readonly IYamlFileService yamlFileService;
private string oryxSdkStorageBaseUrl;
private string dotNetMinReleaseVersion;
private string dotNetMaxReleaseVersion;
private List<string> dotNetBlockedVersions = new List<string>();
Expand All @@ -52,40 +52,13 @@ public DotNetAutomator(

public async Task RunAsync()
{
this.oryxSdkStorageBaseUrl = Environment.GetEnvironmentVariable(Constants.OryxSdkStorageBaseUrlEnvVar);
if (string.IsNullOrEmpty(this.oryxSdkStorageBaseUrl))
{
this.oryxSdkStorageBaseUrl = Constants.OryxSdkStorageBaseUrl;
}

string sdkVersionsUrl = this.oryxSdkStorageBaseUrl + DotNetConstants.DotNetSuffixUrl;

// A SAS token is required for the staging account.
if (this.oryxSdkStorageBaseUrl == Constants.OryxSdkStagingStorageBaseUrl)
{
string sasToken = Environment.GetEnvironmentVariable(Constants.OryxSdkStagingPrivateSasTokenEnvVar);
if (string.IsNullOrEmpty(sasToken))
{
throw new ArgumentException($"The environment variable {Constants.OryxSdkStagingPrivateSasTokenEnvVar} " +
$"must be provided in order to access {Constants.OryxSdkStagingStorageBaseUrl}");
}

sdkVersionsUrl += "&" + sasToken;
}

string oryxSdkStorageBaseUrl = Environment.GetEnvironmentVariable(Constants.OryxSdkStorageBaseUrlEnvVar);
string sdkVersionsUrl = SdkStorageHelper.GetSdkStorageUrl(oryxSdkStorageBaseUrl, DotNetConstants.DotNetSuffixUrl);
this.oryxDotNetSdkVersions = await this.httpService.GetOryxSdkVersionsAsync(sdkVersionsUrl);
this.dotNetMinReleaseVersion = Environment.GetEnvironmentVariable(DotNetConstants.DotNetMinReleaseVersionEnvVar);
this.dotNetMaxReleaseVersion = Environment.GetEnvironmentVariable(DotNetConstants.DotNetMaxReleaseVersionEnvVar);
var blockedVersions = Environment.GetEnvironmentVariable(
DotNetConstants.DotNetBlockedVersionsEnvVar);
if (!string.IsNullOrEmpty(blockedVersions))
{
var versionStrings = blockedVersions.Split(',');
foreach (var versionString in versionStrings)
{
this.dotNetBlockedVersions.Add(versionString.Trim());
}
}
string blockedVersions = Environment.GetEnvironmentVariable(DotNetConstants.DotNetBlockedVersionsEnvVar);
this.dotNetBlockedVersions = SdkStorageHelper.ExtractBlockedVersions(blockedVersions);

List<DotNetVersion> newDotNetVersions = await this.GetNewDotNetVersionsAsync();
if (newDotNetVersions.Count > 0)
Expand Down
41 changes: 7 additions & 34 deletions build/tools/Automation/Python/PythonAutomator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.Oryx.Automation.Commons;
using Microsoft.Oryx.Automation.Models;
using Microsoft.Oryx.Automation.Python.Models;
using Microsoft.Oryx.Automation.Services;
Expand All @@ -22,7 +23,6 @@ public class PythonAutomator
private readonly IVersionService versionService;
private readonly IFileService fileService;
private readonly IYamlFileService yamlFileService;
private string oryxSdkStorageBaseUrl;
private string pythonMinReleaseVersion;
private string pythonMaxReleaseVersion;
private List<string> pythonBlockedVersions = new List<string>();
Expand All @@ -42,49 +42,22 @@ public PythonAutomator(

public async Task RunAsync()
{
this.oryxSdkStorageBaseUrl = Environment.GetEnvironmentVariable(Constants.OryxSdkStorageBaseUrlEnvVar);
if (string.IsNullOrEmpty(this.oryxSdkStorageBaseUrl))
{
this.oryxSdkStorageBaseUrl = Constants.OryxSdkStorageBaseUrl;
}

string sdkVersionsUrl = this.oryxSdkStorageBaseUrl + PythonConstants.PythonSuffixUrl;

// A SAS token is required for the staging account.
if (this.oryxSdkStorageBaseUrl == Constants.OryxSdkStagingStorageBaseUrl)
{
string sasToken = Environment.GetEnvironmentVariable(Constants.OryxSdkStagingPrivateSasTokenEnvVar);
if (string.IsNullOrEmpty(sasToken))
{
throw new ArgumentException($"The environment variable {Constants.OryxSdkStagingPrivateSasTokenEnvVar} " +
$"must be provided in order to access {Constants.OryxSdkStagingStorageBaseUrl}");
}

sdkVersionsUrl += "&" + sasToken;
}

string oryxSdkStorageBaseUrl = Environment.GetEnvironmentVariable(Constants.OryxSdkStorageBaseUrlEnvVar);
string sdkVersionsUrl = SdkStorageHelper.GetSdkStorageUrl(oryxSdkStorageBaseUrl, PythonConstants.PythonSuffixUrl);
this.oryxPythonSdkVersions = await this.httpService.GetOryxSdkVersionsAsync(sdkVersionsUrl);
this.pythonMinReleaseVersion = Environment.GetEnvironmentVariable(PythonConstants.PythonMinReleaseVersionEnvVar);
this.pythonMaxReleaseVersion = Environment.GetEnvironmentVariable(PythonConstants.PythonMaxReleaseVersionEnvVar);
var blockedVersions = Environment.GetEnvironmentVariable(PythonConstants.PythonBlockedVersionsEnvVar);
this.pythonBlockedVersions = SdkStorageHelper.ExtractBlockedVersions(blockedVersions);

if (!string.IsNullOrEmpty(blockedVersions))
{
var versionStrings = blockedVersions.Split(',');
foreach (var versionString in versionStrings)
{
this.pythonBlockedVersions.Add(versionString.Trim());
}
}

List<PythonVersion> pythonVersions = await this.GetNewPythonVersionsAsync();
if (pythonVersions.Count > 0)
List<PythonVersion> newPythonVersions = await this.GetNewPythonVersionsAsync();
if (newPythonVersions.Count > 0)
{
string constantsYamlSubPath = Path.Combine("build", Constants.ConstantsYaml);
List<ConstantsYamlFile> yamlConstantsObjs =
await this.yamlFileService.ReadConstantsYamlFileAsync(constantsYamlSubPath);

this.UpdateOryxConstantsForNewVersions(pythonVersions, yamlConstantsObjs);
this.UpdateOryxConstantsForNewVersions(newPythonVersions, yamlConstantsObjs);
}
}

Expand Down

0 comments on commit 727142b

Please sign in to comment.