@@ -287,7 +287,8 @@ func RunGraph(ctx context.Context, graphName string, graphContent []byte, opts R
287287 }
288288
289289 entryNode , isBaseNode := entry .(NodeBaseInterface )
290- isGitHubWorkflow := os .Getenv ("GITHUB_ACTIONS" ) == "true" || (isBaseNode && entryNode .GetNodeTypeId () == "core/gh-start@v1" )
290+ isGitHubAction := os .Getenv ("GITHUB_ACTIONS" ) == "true"
291+ isGitHubWorkflow := isBaseNode && entryNode .GetNodeTypeId () == "core/gh-start@v1"
291292
292293 // Initialize trackers with their respective categories
293294 envTracker := newValueMap [string ]("env" )
@@ -399,36 +400,40 @@ func RunGraph(ctx context.Context, graphName string, graphContent []byte, opts R
399400 printExplicit (envTracker , false )
400401 }
401402
402- if isGitHubWorkflow {
403- err = SetupGitHubActionsEnv (finalEnv )
404- if err != nil {
405- return CreateErr (nil , err , "failed to setup GitHub Actions environment" )
406- }
407- }
408-
409- // set cwd for current process. `ACT_CWD` is used for non GitHub workflows
410- if cwd := finalEnv ["GITHUB_WORKSPACE" ]; cwd != "" {
403+ if cwd := finalEnv ["ACT_CWD" ]; cwd != "" {
411404 originalCwd , err := os .Getwd ()
412405 if err != nil {
413406 return CreateErr (nil , err , "failed to get current working directory" )
414407 }
415408 if err := os .Chdir (cwd ); err != nil {
416- return CreateErr (nil , err , "failed to change working directory to GITHUB_WORKSPACE " )
409+ return CreateErr (nil , err , "failed to change working directory to ACT_CWD " )
417410 }
418411 defer func () {
419412 _ = os .Chdir (originalCwd )
420413 }()
421- } else if cwd := finalEnv ["ACT_CWD" ]; cwd != "" {
422- originalCwd , err := os .Getwd ()
414+ }
415+
416+ if ! isGitHubAction && isGitHubWorkflow {
417+ // If we are running a github actions workflow, then mimic a GitHub Actions environment
418+ // But only do is if we are NOT already in GitHub Actions
419+ err = SetupGitHubActionsEnv (finalEnv )
423420 if err != nil {
424- return CreateErr (nil , err , "failed to get current working directory " )
421+ return CreateErr (nil , err , "failed to setup GitHub Actions environment " )
425422 }
426- if err := os .Chdir (cwd ); err != nil {
427- return CreateErr (nil , err , "failed to change working directory to ACT_CWD" )
423+
424+ // set cwd for current process. `ACT_CWD` above is used for non GitHub workflows
425+ if cwd := finalEnv ["GITHUB_WORKSPACE" ]; cwd != "" {
426+ originalCwd , err := os .Getwd ()
427+ if err != nil {
428+ return CreateErr (nil , err , "failed to get current working directory" )
429+ }
430+ if err := os .Chdir (cwd ); err != nil {
431+ return CreateErr (nil , err , "failed to change working directory to GITHUB_WORKSPACE" )
432+ }
433+ defer func () {
434+ _ = os .Chdir (originalCwd )
435+ }()
428436 }
429- defer func () {
430- _ = os .Chdir (originalCwd )
431- }()
432437 }
433438
434439 // construct the `github` context
0 commit comments