Added option to configure the source and target branch

This commit is contained in:
Leon Mika 2025-01-02 11:48:27 +11:00
parent 7999a86f58
commit ec773bc57d
3 changed files with 28 additions and 8 deletions

View file

@ -5,7 +5,7 @@ Action to push a remote repository to Dokku.
## Usage ## Usage
``` ```
uses: https://lmika.dev/actions/push-to-dokku@v1 uses: https://lmika.dev/actions/push-to-dokku@v1.1
with: with:
app: dokku-app-name app: dokku-app-name
host: dokku-host host: dokku-host
@ -17,6 +17,8 @@ Parameters are:
- `host`: hostname of the Dokku instance to push the application to. - `host`: hostname of the Dokku instance to push the application to.
- `app`: the Dokku application name. - `app`: the Dokku application name.
- `private-key`: the private SSH key - `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. This action requires Go 1.22.4 or later.

View file

@ -3,15 +3,19 @@ package main
import "os" import "os"
type config struct { type config struct {
HostName string HostName string
AppName string AppName string
PrivateKey string PrivateKey string
LocalBranch string
RemoteBranch string
} }
func readConfig() config { func readConfig() config {
return config{ return config{
HostName: os.Getenv("INPUT_HOST"), HostName: os.Getenv("INPUT_HOST"),
AppName: os.Getenv("INPUT_APP"), AppName: os.Getenv("INPUT_APP"),
PrivateKey: os.Getenv("INPUT_PRIVATE-KEY"), PrivateKey: os.Getenv("INPUT_PRIVATE-KEY"),
LocalBranch: os.Getenv("INPUT_SOURCE-BRANCH"),
RemoteBranch: os.Getenv("INPUT_REMOTE-BRANCH"),
} }
} }

View file

@ -67,7 +67,21 @@ func (s *Services) PushRepository() error {
return err 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 return err
} }