feat: ✨ add git username and password options for http
This commit is contained in:
parent
0d7cc87b37
commit
e11f467042
@ -30,7 +30,7 @@ steps:
|
||||
from_secret: docker_username
|
||||
password:
|
||||
from_secret: docker_password
|
||||
- image: gitea.dikurium.ch/innopeak/drone-gitea-release:0.6
|
||||
- image: gitea.dikurium.ch/innopeak/drone-gitea-release:0.7
|
||||
name: create release
|
||||
settings:
|
||||
gitea_password:
|
||||
|
@ -26,6 +26,8 @@ type Args struct {
|
||||
GiteaUrl string `envconfig:"PLUGIN_GITEA_URL"`
|
||||
GiteaUsername string `envconfig:"PLUGIN_GITEA_USERNAME"`
|
||||
GiteaPassword string `envconfig:"PLUGIN_GITEA_PASSWORD"`
|
||||
GitUsername string `envconfig:"PLUGIN_GIT_USERNAME"`
|
||||
GitPassword string `envconfig:"PLUGIN_GIT_PASSWORD"`
|
||||
Owner string `envconfig:"PLUGIN_OWNER"`
|
||||
Repo string `envconfig:"PLUGIN_REPO"`
|
||||
TitleFormat string `envconfig:"PLUGIN_TITLE_FORMAT"`
|
||||
@ -76,8 +78,11 @@ func Exec(ctx context.Context, args Args) error {
|
||||
|
||||
if args.UseLatestGitTag {
|
||||
var options = make([]GetLatestGitTagOption, 0)
|
||||
if args.GitUsername != "" && args.GitPassword != "" {
|
||||
options = append(options, SetBasicAuth(args.GitUsername, args.GitPassword))
|
||||
}
|
||||
if args.FetchGitTags {
|
||||
options = append(options, FetchTags)
|
||||
options = append(options, FetchTags())
|
||||
}
|
||||
tag, err = getLatestGitTag(options...)
|
||||
|
||||
|
@ -9,15 +9,44 @@ import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io"
|
||||
"net/http"
|
||||
"os"
|
||||
"strings"
|
||||
|
||||
"github.com/go-git/go-git/v5"
|
||||
"github.com/go-git/go-git/v5/plumbing/transport/client"
|
||||
githttp "github.com/go-git/go-git/v5/plumbing/transport/http"
|
||||
)
|
||||
|
||||
type GetLatestGitTagOption func(repo *git.Repository) error
|
||||
|
||||
var FetchTags = func(repo *git.Repository) error {
|
||||
type BasicAuthTransport struct {
|
||||
Username string
|
||||
Password string
|
||||
RoundTriper http.RoundTripper
|
||||
}
|
||||
|
||||
func (bat BasicAuthTransport) RoundTrip(req *http.Request) (resp *http.Response, err error) {
|
||||
creds := base64.StdEncoding.EncodeToString([]byte(fmt.Sprintf("%s:%s", bat.Username, bat.Password)))
|
||||
req.Header.Set("Authorization", fmt.Sprintf("Basic %s", creds))
|
||||
return bat.RoundTriper.RoundTrip(req)
|
||||
}
|
||||
|
||||
func SetBasicAuth(username, password string) func(repo *git.Repository) error {
|
||||
return func(repo *git.Repository) error {
|
||||
customClient := &http.Client{
|
||||
Transport: BasicAuthTransport{username, password, http.DefaultTransport},
|
||||
}
|
||||
|
||||
// Override http(s) default protocol to use our custom client
|
||||
client.InstallProtocol("https", githttp.NewClient(customClient))
|
||||
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
func FetchTags() func(repo *git.Repository) error {
|
||||
return func(repo *git.Repository) error {
|
||||
err := repo.Fetch(&git.FetchOptions{Tags: git.AllTags})
|
||||
|
||||
if err == git.NoErrAlreadyUpToDate {
|
||||
@ -26,6 +55,7 @@ var FetchTags = func(repo *git.Repository) error {
|
||||
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
func getLatestGitTag(options ...GetLatestGitTagOption) (tag string, err error) {
|
||||
r, err := git.PlainOpen(".")
|
||||
|
Loading…
Reference in New Issue
Block a user