diff --git a/README.md b/README.md index 483aa2e..4404009 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ Action to push a remote repository to Dokku. ## Usage ``` -uses: https://lmika.dev/actions/push-to-dokku@v1 +uses: https://lmika.dev/actions/push-to-dokku@v1.1 with: app: dokku-app-name host: dokku-host @@ -17,6 +17,8 @@ Parameters are: - `host`: hostname of the Dokku instance to push the application to. - `app`: the Dokku application name. - `private-key`: the private SSH key +- `source-branch`: the code branch to push (default = `main`) +- `target-branch`: the Dokku branch to push to (default = same as source-branch) This action requires Go 1.22.4 or later. diff --git a/config.go b/config.go index 87c6d1f..e2e1e24 100644 --- a/config.go +++ b/config.go @@ -3,15 +3,19 @@ package main import "os" type config struct { - HostName string - AppName string - PrivateKey string + HostName string + AppName string + PrivateKey string + LocalBranch string + RemoteBranch string } func readConfig() config { return config{ - HostName: os.Getenv("INPUT_HOST"), - AppName: os.Getenv("INPUT_APP"), - PrivateKey: os.Getenv("INPUT_PRIVATE-KEY"), + HostName: os.Getenv("INPUT_HOST"), + AppName: os.Getenv("INPUT_APP"), + PrivateKey: os.Getenv("INPUT_PRIVATE-KEY"), + LocalBranch: os.Getenv("INPUT_SOURCE-BRANCH"), + RemoteBranch: os.Getenv("INPUT_REMOTE-BRANCH"), } } diff --git a/services.go b/services.go index 67aba79..1286b98 100644 --- a/services.go +++ b/services.go @@ -67,7 +67,21 @@ func (s *Services) PushRepository() error { return err } - if err := runCmd("git", "push", "dokku", "main"); err != nil { + sourceBranch := s.cfg.LocalBranch + if sourceBranch == "" { + sourceBranch = "main" + } + remoteBranch := s.cfg.RemoteBranch + if remoteBranch == "" { + remoteBranch = sourceBranch + } + + branchArg := sourceBranch + if sourceBranch != remoteBranch { + branchArg = fmt.Sprintf("%v:%v", sourceBranch, remoteBranch) + } + + if err := runCmd("git", "push", "dokku", branchArg); err != nil { return err }