MCPcopy
hub / github.com/nektos/act / newActionCacheReusableWorkflowExecutor

Function newActionCacheReusableWorkflowExecutor

pkg/runner/reusable_workflow.go:47–80  ·  view source on GitHub ↗
(rc *RunContext, filename string, remoteReusableWorkflow *remoteReusableWorkflow)

Source from the content-addressed store, hash-verified

45}
46
47func newActionCacheReusableWorkflowExecutor(rc *RunContext, filename string, remoteReusableWorkflow *remoteReusableWorkflow) common.Executor {
48 return func(ctx context.Context) error {
49 ghctx := rc.getGithubContext(ctx)
50 remoteReusableWorkflow.URL = ghctx.ServerURL
51 sha, err := rc.Config.ActionCache.Fetch(ctx, filename, remoteReusableWorkflow.CloneURL(), remoteReusableWorkflow.Ref, ghctx.Token)
52 if err != nil {
53 return err
54 }
55 archive, err := rc.Config.ActionCache.GetTarArchive(ctx, filename, sha, fmt.Sprintf(".github/workflows/%s", remoteReusableWorkflow.Filename))
56 if err != nil {
57 return err
58 }
59 defer archive.Close()
60 treader := tar.NewReader(archive)
61 if _, err = treader.Next(); err != nil {
62 return err
63 }
64 planner, err := model.NewSingleWorkflowPlanner(remoteReusableWorkflow.Filename, treader)
65 if err != nil {
66 return err
67 }
68 plan, err := planner.PlanEvent("workflow_call")
69 if err != nil {
70 return err
71 }
72
73 runner, err := NewReusableWorkflowRunner(rc)
74 if err != nil {
75 return err
76 }
77
78 return runner.NewPlanExecutor(plan)(ctx)
79 }
80}
81
82var (
83 executorLock sync.Mutex

Callers 1

Calls 9

NewSingleWorkflowPlannerFunction · 0.92
getGithubContextMethod · 0.65
FetchMethod · 0.65
GetTarArchiveMethod · 0.65
CloseMethod · 0.65
PlanEventMethod · 0.65
NewPlanExecutorMethod · 0.65
CloneURLMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…