mirror of
https://github.com/actions/runner.git
synced 2025-12-10 12:36:23 +00:00
* Keep env vars alphabetical * ref_* context. Co-authored-by: Ferenc Hammerl <31069338+fhammerl@users.noreply.github.com>
72 lines
2.0 KiB
C#
72 lines
2.0 KiB
C#
using GitHub.DistributedTask.Pipelines.ContextData;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
|
|
namespace GitHub.Runner.Worker
|
|
{
|
|
public sealed class GitHubContext : DictionaryContextData, IEnvironmentContextData
|
|
{
|
|
private readonly HashSet<string> _contextEnvAllowlist = new HashSet<string>(StringComparer.OrdinalIgnoreCase)
|
|
{
|
|
"action",
|
|
"action_path",
|
|
"action_ref",
|
|
"action_repository",
|
|
"actor",
|
|
"api_url",
|
|
"base_ref",
|
|
"env",
|
|
"event_name",
|
|
"event_path",
|
|
"graphql_url",
|
|
"head_ref",
|
|
"job",
|
|
"path",
|
|
"ref",
|
|
"ref_name",
|
|
"ref_protected",
|
|
"ref_type",
|
|
"repository",
|
|
"repository_owner",
|
|
"retention_days",
|
|
"run_attempt",
|
|
"run_id",
|
|
"run_number",
|
|
"server_url",
|
|
"sha",
|
|
"workflow",
|
|
"workspace",
|
|
};
|
|
|
|
public IEnumerable<KeyValuePair<string, string>> GetRuntimeEnvironmentVariables()
|
|
{
|
|
foreach (var data in this)
|
|
{
|
|
if (_contextEnvAllowlist.Contains(data.Key))
|
|
{
|
|
if (data.Value is StringContextData value)
|
|
{
|
|
yield return new KeyValuePair<string, string>($"GITHUB_{data.Key.ToUpperInvariant()}", value);
|
|
}
|
|
else if (data.Value is BooleanContextData booleanValue)
|
|
{
|
|
yield return new KeyValuePair<string, string>($"GITHUB_{data.Key.ToUpperInvariant()}", booleanValue.ToString());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public GitHubContext ShallowCopy()
|
|
{
|
|
var copy = new GitHubContext();
|
|
|
|
foreach (var pair in this)
|
|
{
|
|
copy[pair.Key] = pair.Value;
|
|
}
|
|
|
|
return copy;
|
|
}
|
|
}
|
|
}
|