forked from tangled.org/core
Monorepo for Tangled — https://tangled.org

spindle: set clone branch in clone step

Signed-off-by: oppiliappan <me@oppi.li>

oppi.li b245d4d7 0fa7bf43

verified
Changed files
+26 -9
.tangled
workflows
spindle
workflow
+2 -2
.tangled/workflows/test.yaml .tangled/workflows/test.yml
···
when:
-
- event: push
-
branch: master
+
- event: ["push"]
+
branch: ["master", "test-ci"]
dependencies:
nixpkgs:
+1 -1
spindle/models/pipeline.go
···
setup := &setupSteps{}
setup.addStep(nixConfStep())
-
setup.addStep(cloneStep(*twf, *pl.TriggerMetadata.Repo, cfg.Server.Dev))
+
setup.addStep(cloneStep(*twf, *pl.TriggerMetadata, cfg.Server.Dev))
setup.addStep(checkoutStep(*twf, *pl.TriggerMetadata))
// this step could be empty
if s := dependencyStep(*twf); s != nil {
+23 -4
spindle/models/setup_steps.go
···
"path"
"strings"
+
"github.com/go-git/go-git/v5/plumbing"
"tangled.sh/tangled.sh/core/api/tangled"
+
"tangled.sh/tangled.sh/core/workflow"
)
func nixConfStep() Step {
···
// cloneOptsAsSteps processes clone options and adds corresponding steps
// to the beginning of the workflow's step list if cloning is not skipped.
-
func cloneStep(twf tangled.Pipeline_Workflow, tr tangled.Pipeline_TriggerRepo, dev bool) Step {
+
func cloneStep(twf tangled.Pipeline_Workflow, tr tangled.Pipeline_TriggerMetadata, dev bool) Step {
if twf.Clone.Skip {
return Step{}
}
···
uri := "https://"
if dev {
uri = "http://"
-
tr.Knot = strings.ReplaceAll(tr.Knot, "localhost", "host.docker.internal")
+
tr.Repo.Knot = strings.ReplaceAll(tr.Repo.Knot, "localhost", "host.docker.internal")
}
-
cloneUrl := uri + path.Join(tr.Knot, tr.Did, tr.Repo)
+
cloneUrl := uri + path.Join(tr.Repo.Knot, tr.Repo.Did, tr.Repo.Repo)
cloneCmd := []string{"git", "clone", cloneUrl, "."}
// default clone depth is 1
···
if twf.Clone.Depth > 1 {
cloneDepth = int(twf.Clone.Depth)
}
-
cloneCmd = append(cloneCmd, []string{"--depth", fmt.Sprintf("%d", cloneDepth)}...)
+
cloneCmd = append(cloneCmd, fmt.Sprintf("--depth=%d", cloneDepth))
+
+
// select the clone branch
+
cloneBranch := ""
+
switch tr.Kind {
+
case workflow.TriggerKindManual:
+
// TODO: unimplemented
+
case workflow.TriggerKindPush:
+
ref := tr.Push.Ref
+
refName := plumbing.ReferenceName(ref)
+
cloneBranch = refName.Short()
+
case workflow.TriggerKindPullRequest:
+
cloneBranch = tr.PullRequest.SourceBranch
+
}
+
+
if cloneBranch != "" {
+
cloneCmd = append(cloneCmd, fmt.Sprintf("--branch=%s", cloneBranch))
+
}
if twf.Clone.Submodules {
cloneCmd = append(cloneCmd, "--recursive")
-2
workflow/def.go
···
if refName.IsBranch() {
return slices.Contains(c.Branch, refName.Short())
}
-
fmt.Println("no", c.Branch, refName.Short())
-
return false
}