Files
sbox-public/engine/Tools/SboxBuild/Steps/SentryRelease.cs
s&box team 71f266059a Open source release
This commit imports the C# engine code and game files, excluding C++ source code.

[Source-Commit: ceb3d758046e50faa6258bc3b658a30c97743268]
2025-11-24 09:05:18 +00:00

78 lines
2.2 KiB
C#

using static Facepunch.Constants;
namespace Facepunch.Steps;
internal class SentryRelease( string name, string org, string project ) : Step( name )
{
public string Organization { get; } = org;
public string Project { get; } = project;
protected override ExitCode RunInternal()
{
try
{
string version = Utility.VersionName();
Log.Info( $"Creating Sentry release for version {version}..." );
var projectStr = $"--project {Project}";
bool success;
// Create new release
Log.Info( "Creating new release" );
success = RunSentryCommand( $"releases new \"{version}\" --org \"{Organization}\" {projectStr}" );
if ( !success ) return ExitCode.Failure;
// Set commits
Log.Info( "Setting commits" );
success = RunSentryCommand( $"releases set-commits \"{version}\" --auto --org \"{Organization}\" {projectStr}" );
if ( !success ) return ExitCode.Failure;
// Create deploy
Log.Info( "Creating deploy" );
success = RunSentryCommand( $"releases deploys \"{version}\" new -e retail --org \"{Organization}\" {projectStr}" );
if ( !success ) return ExitCode.Failure;
// Finalize release
Log.Info( "Finalizing release" );
success = RunSentryCommand( $"releases finalize \"{version}\" --org \"{Organization}\" {projectStr}" );
if ( !success ) return ExitCode.Failure;
Log.Info( "Successfully created and finalized Sentry release" );
return ExitCode.Success;
}
catch ( Exception ex )
{
Log.Error( $"Sentry release creation failed with error: {ex}" );
return ExitCode.Failure;
}
}
/// <summary>
/// Runs a Sentry CLI command with the appropriate auth token from environment variables
/// </summary>
public static bool RunSentryCommand( string arguments, string workingDirectory = null )
{
var token = Environment.GetEnvironmentVariable( "SENTRY_AUTH_TOKEN" );
if ( string.IsNullOrEmpty( token ) )
{
Log.Warning( "SENTRY_AUTH_TOKEN was empty" );
return false;
}
// Create a custom environment variable dictionary for the auth token
var envVars = new Dictionary<string, string>
{
{ "SENTRY_AUTH_TOKEN", token }
};
return Utility.RunProcess(
"sentry-cli.exe",
arguments,
workingDirectory,
envVars,
30000
);
}
}