mirror of
https://github.com/thegeeklab/wp-git-action.git
synced 2024-11-24 22:50:39 +00:00
fix: unset git env vars to avoid overlapping with plugin config (#4)
This commit is contained in:
parent
05857f9db3
commit
6735cb80e6
@ -17,10 +17,12 @@ properties:
|
|||||||
|
|
||||||
- name: netrc_machine
|
- name: netrc_machine
|
||||||
description: Netrc remote machine name.
|
description: Netrc remote machine name.
|
||||||
|
defaultvalue: github.com
|
||||||
type: string
|
type: string
|
||||||
|
|
||||||
- name: netrc_username
|
- name: netrc_username
|
||||||
description: Netrc login user on the remote machine.
|
description: Netrc login user on the remote machine.
|
||||||
|
defaultvalue: token
|
||||||
type: string
|
type: string
|
||||||
|
|
||||||
- name: netrc_password
|
- name: netrc_password
|
||||||
@ -59,8 +61,8 @@ properties:
|
|||||||
defaultvalue: false
|
defaultvalue: false
|
||||||
type: bool
|
type: bool
|
||||||
|
|
||||||
- name: skip_verify
|
- name: insecure_ssl_verify
|
||||||
description: Skip SSL verification of the remote machine.
|
description: Configure git SSL verification of the remote machine.
|
||||||
defaultvalue: false
|
defaultvalue: false
|
||||||
type: bool
|
type: bool
|
||||||
|
|
||||||
|
@ -18,7 +18,7 @@ func settingsFlags(settings *plugin.Settings, category string) []cli.Flag {
|
|||||||
},
|
},
|
||||||
|
|
||||||
&cli.StringFlag{
|
&cli.StringFlag{
|
||||||
Name: "commit.author.name",
|
Name: "commit-author-name",
|
||||||
Usage: "git author name",
|
Usage: "git author name",
|
||||||
EnvVars: []string{"PLUGIN_AUTHOR_NAME", "DRONE_COMMIT_AUTHOR"},
|
EnvVars: []string{"PLUGIN_AUTHOR_NAME", "DRONE_COMMIT_AUTHOR"},
|
||||||
Destination: &settings.Commit.Author.Name,
|
Destination: &settings.Commit.Author.Name,
|
||||||
@ -26,7 +26,7 @@ func settingsFlags(settings *plugin.Settings, category string) []cli.Flag {
|
|||||||
Category: category,
|
Category: category,
|
||||||
},
|
},
|
||||||
&cli.StringFlag{
|
&cli.StringFlag{
|
||||||
Name: "commit.author.email",
|
Name: "commit-author-email",
|
||||||
Usage: "git author email",
|
Usage: "git author email",
|
||||||
EnvVars: []string{"PLUGIN_AUTHOR_EMAIL", "DRONE_COMMIT_AUTHOR_EMAIL"},
|
EnvVars: []string{"PLUGIN_AUTHOR_EMAIL", "DRONE_COMMIT_AUTHOR_EMAIL"},
|
||||||
Destination: &settings.Commit.Author.Email,
|
Destination: &settings.Commit.Author.Email,
|
||||||
@ -35,21 +35,23 @@ func settingsFlags(settings *plugin.Settings, category string) []cli.Flag {
|
|||||||
},
|
},
|
||||||
|
|
||||||
&cli.StringFlag{
|
&cli.StringFlag{
|
||||||
Name: "netrc.machine",
|
Name: "netrc-machine",
|
||||||
Usage: "netrc remote machine name",
|
Usage: "netrc remote machine name",
|
||||||
EnvVars: []string{"PLUGIN_NETRC_MACHINE", "DRONE_NETRC_MACHINE"},
|
EnvVars: []string{"PLUGIN_NETRC_MACHINE", "DRONE_NETRC_MACHINE"},
|
||||||
Destination: &settings.Netrc.Machine,
|
Destination: &settings.Netrc.Machine,
|
||||||
|
Value: "github.com",
|
||||||
Category: category,
|
Category: category,
|
||||||
},
|
},
|
||||||
&cli.StringFlag{
|
&cli.StringFlag{
|
||||||
Name: "netrc.username",
|
Name: "netrc-username",
|
||||||
Usage: "netrc login user on the remote machine",
|
Usage: "netrc login user on the remote machine",
|
||||||
EnvVars: []string{"PLUGIN_NETRC_USERNAME", "DRONE_NETRC_USERNAME"},
|
EnvVars: []string{"PLUGIN_NETRC_USERNAME", "DRONE_NETRC_USERNAME"},
|
||||||
Destination: &settings.Netrc.Login,
|
Destination: &settings.Netrc.Login,
|
||||||
|
Value: "token",
|
||||||
Category: category,
|
Category: category,
|
||||||
},
|
},
|
||||||
&cli.StringFlag{
|
&cli.StringFlag{
|
||||||
Name: "netrc.password",
|
Name: "netrc-password",
|
||||||
Usage: "netrc login password on the remote machine",
|
Usage: "netrc login password on the remote machine",
|
||||||
EnvVars: []string{"PLUGIN_NETRC_PASSWORD", "DRONE_NETRC_PASSWORD"},
|
EnvVars: []string{"PLUGIN_NETRC_PASSWORD", "DRONE_NETRC_PASSWORD"},
|
||||||
Destination: &settings.Netrc.Password,
|
Destination: &settings.Netrc.Password,
|
||||||
@ -92,7 +94,7 @@ func settingsFlags(settings *plugin.Settings, category string) []cli.Flag {
|
|||||||
Usage: "commit message",
|
Usage: "commit message",
|
||||||
EnvVars: []string{"PLUGIN_MESSAGE"},
|
EnvVars: []string{"PLUGIN_MESSAGE"},
|
||||||
Destination: &settings.Message,
|
Destination: &settings.Message,
|
||||||
Value: "[skip ci] Commit dirty state",
|
Value: "[skip ci] commit dirty state",
|
||||||
Category: category,
|
Category: category,
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -101,6 +103,7 @@ func settingsFlags(settings *plugin.Settings, category string) []cli.Flag {
|
|||||||
Usage: "enable force push to remote repository",
|
Usage: "enable force push to remote repository",
|
||||||
EnvVars: []string{"PLUGIN_FORCE"},
|
EnvVars: []string{"PLUGIN_FORCE"},
|
||||||
Destination: &settings.Force,
|
Destination: &settings.Force,
|
||||||
|
Value: false,
|
||||||
Category: category,
|
Category: category,
|
||||||
},
|
},
|
||||||
&cli.BoolFlag{
|
&cli.BoolFlag{
|
||||||
@ -108,13 +111,15 @@ func settingsFlags(settings *plugin.Settings, category string) []cli.Flag {
|
|||||||
Usage: "follow tags for pushes to remote repository",
|
Usage: "follow tags for pushes to remote repository",
|
||||||
EnvVars: []string{"PLUGIN_FOLLOWTAGS"},
|
EnvVars: []string{"PLUGIN_FOLLOWTAGS"},
|
||||||
Destination: &settings.FollowTags,
|
Destination: &settings.FollowTags,
|
||||||
|
Value: false,
|
||||||
Category: category,
|
Category: category,
|
||||||
},
|
},
|
||||||
&cli.BoolFlag{
|
&cli.BoolFlag{
|
||||||
Name: "skip-verify",
|
Name: "insecure-ssl-verify",
|
||||||
Usage: "skip ssl verification of the remote machine",
|
Usage: "set SSL verification of the remote machine",
|
||||||
EnvVars: []string{"PLUGIN_SKIP_VERIFY"},
|
EnvVars: []string{"PLUGIN_INSECURE_SSL_VERIFY"},
|
||||||
Destination: &settings.SkipVerify,
|
Destination: &settings.InsecureSSLVerify,
|
||||||
|
Value: false,
|
||||||
Category: category,
|
Category: category,
|
||||||
},
|
},
|
||||||
&cli.BoolFlag{
|
&cli.BoolFlag{
|
||||||
@ -122,6 +127,7 @@ func settingsFlags(settings *plugin.Settings, category string) []cli.Flag {
|
|||||||
Usage: "allow empty commits",
|
Usage: "allow empty commits",
|
||||||
EnvVars: []string{"PLUGIN_EMPTY_COMMIT"},
|
EnvVars: []string{"PLUGIN_EMPTY_COMMIT"},
|
||||||
Destination: &settings.EmptyCommit,
|
Destination: &settings.EmptyCommit,
|
||||||
|
Value: false,
|
||||||
Category: category,
|
Category: category,
|
||||||
},
|
},
|
||||||
&cli.BoolFlag{
|
&cli.BoolFlag{
|
||||||
@ -129,6 +135,7 @@ func settingsFlags(settings *plugin.Settings, category string) []cli.Flag {
|
|||||||
Usage: "bypass the pre-commit and commit-msg hooks",
|
Usage: "bypass the pre-commit and commit-msg hooks",
|
||||||
EnvVars: []string{"PLUGIN_NO_VERIFY"},
|
EnvVars: []string{"PLUGIN_NO_VERIFY"},
|
||||||
Destination: &settings.NoVerify,
|
Destination: &settings.NoVerify,
|
||||||
|
Value: false,
|
||||||
Category: category,
|
Category: category,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
@ -2,28 +2,41 @@ package git
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"os/exec"
|
"os/exec"
|
||||||
|
"strconv"
|
||||||
)
|
)
|
||||||
|
|
||||||
// GlobalUser sets the global git author email.
|
// SetUserEmail sets the global git author email.
|
||||||
func GlobalUser(email string) *exec.Cmd {
|
func SetUserEmail(email string) *exec.Cmd {
|
||||||
cmd := exec.Command(
|
cmd := exec.Command(
|
||||||
"git",
|
"git",
|
||||||
"config",
|
"config",
|
||||||
"--global",
|
"--local",
|
||||||
"user.email",
|
"user.email",
|
||||||
email)
|
email)
|
||||||
|
|
||||||
return cmd
|
return cmd
|
||||||
}
|
}
|
||||||
|
|
||||||
// GlobalName sets the global git author name.
|
// SetUserName sets the global git author name.
|
||||||
func GlobalName(author string) *exec.Cmd {
|
func SetUserName(author string) *exec.Cmd {
|
||||||
cmd := exec.Command(
|
cmd := exec.Command(
|
||||||
"git",
|
"git",
|
||||||
"config",
|
"config",
|
||||||
"--global",
|
"--local",
|
||||||
"user.name",
|
"user.name",
|
||||||
author)
|
author)
|
||||||
|
|
||||||
return cmd
|
return cmd
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SetSSLSkipVerify disables globally the git ssl verification.
|
||||||
|
func SetSSLVerify(sslVerify bool) *exec.Cmd {
|
||||||
|
cmd := exec.Command(
|
||||||
|
"git",
|
||||||
|
"config",
|
||||||
|
"--local",
|
||||||
|
"http.sslVerify",
|
||||||
|
strconv.FormatBool(sslVerify))
|
||||||
|
|
||||||
|
return cmd
|
||||||
|
}
|
||||||
|
@ -65,10 +65,6 @@ func WriteSSHKey(privateKey string) error {
|
|||||||
|
|
||||||
// WriteNetrc writes the netrc file.
|
// WriteNetrc writes the netrc file.
|
||||||
func WriteNetrc(machine, login, password string) error {
|
func WriteNetrc(machine, login, password string) error {
|
||||||
if machine == "" {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
netrcContent := fmt.Sprintf(
|
netrcContent := fmt.Sprintf(
|
||||||
netrcFile,
|
netrcFile,
|
||||||
machine,
|
machine,
|
||||||
|
@ -1,17 +0,0 @@
|
|||||||
package git
|
|
||||||
|
|
||||||
import (
|
|
||||||
"os/exec"
|
|
||||||
)
|
|
||||||
|
|
||||||
// SkipVerify disables globally the git ssl verification.
|
|
||||||
func SkipVerify() *exec.Cmd {
|
|
||||||
cmd := exec.Command(
|
|
||||||
"git",
|
|
||||||
"config",
|
|
||||||
"--global",
|
|
||||||
"http.sslVerify",
|
|
||||||
"false")
|
|
||||||
|
|
||||||
return cmd
|
|
||||||
}
|
|
@ -2,6 +2,7 @@ package plugin
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"os"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
|
||||||
@ -10,7 +11,16 @@ import (
|
|||||||
|
|
||||||
// InitRepo initializes the repository.
|
// InitRepo initializes the repository.
|
||||||
func (p Plugin) initRepo() error {
|
func (p Plugin) initRepo() error {
|
||||||
if isDirEmpty(filepath.Join(p.settings.Path, ".git")) {
|
path := filepath.Join(p.settings.Path, ".git")
|
||||||
|
if err := os.MkdirAll(p.settings.Path, os.ModePerm); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := os.Chdir(p.settings.Path); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
if isDirEmpty(path) {
|
||||||
return execute(exec.Command(
|
return execute(exec.Command(
|
||||||
"git",
|
"git",
|
||||||
"init",
|
"init",
|
||||||
@ -53,10 +63,6 @@ func (p Plugin) checkoutHead() error {
|
|||||||
|
|
||||||
// HandleClone clones remote.
|
// HandleClone clones remote.
|
||||||
func (p Plugin) handleClone() error {
|
func (p Plugin) handleClone() error {
|
||||||
if err := p.initRepo(); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := p.addRemote(); err != nil {
|
if err := p.addRemote(); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -25,17 +25,17 @@ type Author struct {
|
|||||||
|
|
||||||
// Settings for the Plugin.
|
// Settings for the Plugin.
|
||||||
type Settings struct {
|
type Settings struct {
|
||||||
Actions cli.StringSlice
|
Actions cli.StringSlice
|
||||||
SSHKey string
|
SSHKey string
|
||||||
Remote string
|
Remote string
|
||||||
Branch string
|
Branch string
|
||||||
Path string
|
Path string
|
||||||
Message string
|
Message string
|
||||||
Force bool
|
Force bool
|
||||||
FollowTags bool
|
FollowTags bool
|
||||||
SkipVerify bool
|
InsecureSSLVerify bool
|
||||||
EmptyCommit bool
|
EmptyCommit bool
|
||||||
NoVerify bool
|
NoVerify bool
|
||||||
|
|
||||||
Netrc Netrc
|
Netrc Netrc
|
||||||
Commit Commit
|
Commit Commit
|
||||||
@ -44,8 +44,19 @@ type Settings struct {
|
|||||||
|
|
||||||
// Validate handles the settings validation of the plugin.
|
// Validate handles the settings validation of the plugin.
|
||||||
func (p *Plugin) Validate() error {
|
func (p *Plugin) Validate() error {
|
||||||
if p.settings.SSHKey == "" && p.settings.Netrc.Password == "" {
|
for _, action := range p.settings.Actions.Value() {
|
||||||
return fmt.Errorf("either SSH key or netrc password are required")
|
switch action {
|
||||||
|
case "clone":
|
||||||
|
continue
|
||||||
|
case "commit":
|
||||||
|
continue
|
||||||
|
case "push":
|
||||||
|
if p.settings.SSHKey == "" && p.settings.Netrc.Password == "" {
|
||||||
|
return fmt.Errorf("either SSH key or netrc password are required")
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
return fmt.Errorf("unknown action %s", action)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
@ -53,28 +64,29 @@ func (p *Plugin) Validate() error {
|
|||||||
|
|
||||||
// Execute provides the implementation of the plugin.
|
// Execute provides the implementation of the plugin.
|
||||||
func (p *Plugin) Execute() error {
|
func (p *Plugin) Execute() error {
|
||||||
|
for _, env := range []string{"GIT_AUTHOR_NAME", "GIT_AUTHOR_EMAIL"} {
|
||||||
|
if err := os.Unsetenv(env); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if err := os.Setenv("GIT_TERMINAL_PROMPT", "0"); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
if p.settings.Path != "" {
|
if p.settings.Path != "" {
|
||||||
if err := os.MkdirAll(p.settings.Path, os.ModePerm); err != nil {
|
if err := p.initRepo(); err != nil {
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := os.Chdir(p.settings.Path); err != nil {
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := git.GlobalName(p.settings.Commit.Author.Name).Run(); err != nil {
|
if err := git.SetUserName(p.settings.Commit.Author.Name).Run(); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
if err := git.SetUserEmail(p.settings.Commit.Author.Email).Run(); err != nil {
|
||||||
if err := git.GlobalUser(p.settings.Commit.Author.Email).Run(); err != nil {
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
if err := git.SetSSLVerify(p.settings.InsecureSSLVerify).Run(); err != nil {
|
||||||
if p.settings.SkipVerify {
|
return err
|
||||||
if err := git.SkipVerify().Run(); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if p.settings.SSHKey != "" {
|
if p.settings.SSHKey != "" {
|
||||||
@ -101,8 +113,6 @@ func (p *Plugin) Execute() error {
|
|||||||
if err := p.handlePush(); err != nil {
|
if err := p.handlePush(); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
default:
|
|
||||||
return fmt.Errorf("unknown action %s", action)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user