Skip to content

Commit de44a50

Browse files
author
Ryan
authored
fix: copy whole action dir to container (#774)
fixes nektos/act#754 this will prevent actions from failing that use resources outside of the action directory
1 parent bea32d5 commit de44a50

File tree

1 file changed

+12
-6
lines changed

1 file changed

+12
-6
lines changed

pkg/runner/step_context.go

+12-6
Original file line numberDiff line numberDiff line change
@@ -467,24 +467,30 @@ func (sc *StepContext) runAction(actionDir string, actionPath string, localActio
467467

468468
sc.Env = mergeMaps(sc.Env, action.Runs.Env)
469469

470-
log.Debugf("type=%v actionDir=%s actionPath=%s Workdir=%s ActionCacheDir=%s actionName=%s containerActionDir=%s", step.Type(), actionDir, actionPath, rc.Config.Workdir, rc.ActionCacheDir(), actionName, containerActionDir)
470+
log.Debugf("type=%v actionDir=%s actionPath=%s workdir=%s actionCacheDir=%s actionName=%s containerActionDir=%s", step.Type(), actionDir, actionPath, rc.Config.Workdir, rc.ActionCacheDir(), actionName, containerActionDir)
471471

472472
maybeCopyToActionDir := func() error {
473473
sc.Env["GITHUB_ACTION_PATH"] = containerActionDir
474474
if step.Type() != model.StepTypeUsesActionRemote {
475475
return nil
476476
}
477-
err := removeGitIgnore(actionDir)
478-
if err != nil {
477+
if err := removeGitIgnore(actionDir); err != nil {
479478
return err
480479
}
481-
return rc.JobContainer.CopyDir(containerActionDir+"/", actionLocation+"/", rc.Config.UseGitIgnore)(ctx)
480+
481+
var containerActionDirCopy string
482+
containerActionDirCopy = strings.TrimSuffix(containerActionDir, actionPath)
483+
log.Debug(containerActionDirCopy)
484+
485+
if !strings.HasSuffix(containerActionDirCopy, `/`) {
486+
containerActionDirCopy += `/`
487+
}
488+
return rc.JobContainer.CopyDir(containerActionDirCopy, actionDir+"/", rc.Config.UseGitIgnore)(ctx)
482489
}
483490

484491
switch action.Runs.Using {
485492
case model.ActionRunsUsingNode12:
486-
err := maybeCopyToActionDir()
487-
if err != nil {
493+
if err := maybeCopyToActionDir(); err != nil {
488494
return err
489495
}
490496
containerArgs := []string{"node", path.Join(containerActionDir, action.Runs.Main)}

0 commit comments

Comments
 (0)