Compare commits

..

No commits in common. "main" and "0.8.1" have entirely different histories.
main ... 0.8.1

6 changed files with 39 additions and 147 deletions

View File

@ -1,45 +1,3 @@
## 0.13.0 (2024-10-25)
### Feat
- :sparkles: use time.Time.Before() instead of Sub()
## 0.12.0 (2024-10-25)
### Feat
- :sparkles: use tagger.when to find latest tag
## 0.11.1 (2024-07-11)
### Fix
- :bug: append newline after success message, use logger [CI SKIP]
## 0.11.0 (2024-07-11)
### Feat
- :sparkles: use log.textformatter
## 0.10.1 (2024-07-11)
### Fix
- revert: :rewind: fix: 🐛 use latest instead of last (oldest) tag - Add logs
## 0.10.0 (2024-07-11)
### Feat
- :loud_sound: add logs
## 0.9.0 (2024-07-11)
### Feat
- :sparkles: add support for adaptive cards
## 0.8.1 (2024-07-11)
### Fix

View File

@ -1,25 +0,0 @@
{
"type": "AdaptiveCard",
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
"version": "1.6",
"body": [
{
"type": "TextBlock",
"text": "Publish Adaptive Card Schema",
"wrap": true,
"style": "heading"
},
{
"type": "TextBlock",
"text": "Tag: 1.0.0",
"wrap": true
}
],
"actions": [
{
"type": "Action.OpenUrl",
"title": "View release",
"url": "https://google.com"
}
]
}

View File

@ -5,5 +5,5 @@ commitizen:
name: cz_conventional_commits
tag_format: $version
update_changelog_on_bump: true
version: 0.13.0
version: 0.8.1
version_scheme: semver

34
main.go
View File

@ -6,7 +6,7 @@ import (
"gitea.dikurium.ch/InnoPeak/drone-gitea-release/plugin"
"github.com/kelseyhightower/envconfig"
log "github.com/sirupsen/logrus"
"github.com/sirupsen/logrus"
flag "github.com/spf13/pflag"
)
@ -15,7 +15,7 @@ var args plugin.Args
func init() {
if err := envconfig.Process("", &args); err != nil {
log.Fatalln(err)
logrus.Fatalln(err)
}
var (
@ -24,7 +24,6 @@ func init() {
tagRegex *string = flag.String("tag-regex", "", "Regex pattern to look for tag in tag-file")
notes *string = flag.String("notes", "", "Notes to use in release")
notesFile *string = flag.String("notes-file", "", "File to use for release notes")
logLevel *string = flag.String("log-level", "", "Level for logging")
)
flag.Parse()
@ -48,25 +47,34 @@ func init() {
if notesFile != nil && *notesFile != "" {
args.NotesFile = *notesFile
}
if logLevel != nil && *logLevel != "" {
args.Level = *logLevel
}
}
func main() {
log.SetFormatter(&log.TextFormatter{
DisableTimestamp: true,
})
logrus.SetFormatter(new(formatter))
switch args.Level {
case "debug":
log.SetLevel(log.DebugLevel)
logrus.SetFormatter(textFormatter)
logrus.SetLevel(logrus.DebugLevel)
case "trace":
log.SetLevel(log.TraceLevel)
logrus.SetFormatter(textFormatter)
logrus.SetLevel(logrus.TraceLevel)
}
if err := plugin.Exec(context.Background(), args); err != nil {
log.Fatalln(err)
logrus.Fatalln(err)
}
}
// default formatter that writes logs without including timestamp
// or level information.
type formatter struct{}
func (*formatter) Format(entry *logrus.Entry) ([]byte, error) {
return []byte(entry.Message), nil
}
// text formatter that writes logs with level information
var textFormatter = &logrus.TextFormatter{
DisableTimestamp: true,
}

View File

@ -9,7 +9,6 @@ import (
"text/template"
"code.gitea.io/sdk/gitea"
log "github.com/sirupsen/logrus"
)
var (
@ -42,12 +41,6 @@ type Args struct {
FetchGitTags bool `envconfig:"PLUGIN_FETCH_GIT_TAGS" default:"true"`
}
type ReleaseCard struct {
Title string
Tag string
Url string
}
type TitleTemplateCtx struct {
Tag string
GiteaUrl string
@ -72,7 +65,7 @@ func Exec(ctx context.Context, args Args) error {
if err != nil {
if os.IsNotExist(err) && args.SkipIfNoNotesFile {
log.Info("No notes file found, skipping release")
fmt.Println("No notes file found, skipping release")
return nil
}
return fmt.Errorf("error reading notes file %w", err)
@ -96,11 +89,7 @@ func Exec(ctx context.Context, args Args) error {
if err != nil {
return fmt.Errorf("error getting git tag %w", err)
}
log.WithField("tag", tag).Info("Fetched latest git tag")
} else if args.TagFile != "" {
log.WithField("file", args.TagFile).Info("Reading tag from file")
var pattern = defaultTagRegex
if args.TagRegex != "" {
pattern = regexp.MustCompile(args.TagRegex)
@ -123,8 +112,6 @@ func Exec(ctx context.Context, args Args) error {
tag = matches[i]
}
}
log.WithField("tag", tag).Info("Found tag")
} else {
return fmt.Errorf("latest git tag or tag file must be given")
}
@ -149,11 +136,6 @@ func Exec(ctx context.Context, args Args) error {
title = titleBuffer.String()
log.WithFields(log.Fields{
"template": titleTmpl.DefinedTemplates(),
"title": title,
}).Info("Generated title with template")
client, err := gitea.NewClient(args.GiteaUrl, gitea.SetBasicAuth(args.GiteaUsername, args.GiteaPassword))
if err != nil {
@ -172,17 +154,7 @@ func Exec(ctx context.Context, args Args) error {
}
releaseURL := fmt.Sprintf("%s/%s/%s/releases/tag/%s", args.GiteaUrl, args.Owner, args.Repo, release.TagName)
log.WithField("url", releaseURL).Info("Successfully created release")
writeCard(
args.Pipeline.Card.Path,
"https://gitea.dikurium.ch/InnoPeak/drone-gitea-release/raw/branch/main/card.json",
ReleaseCard{
Title: title,
Tag: tag,
Url: releaseURL,
},
)
fmt.Printf("Successfully created release at %s", releaseURL)
return err
}

View File

@ -11,12 +11,11 @@ import (
"io"
"net/http"
"os"
"time"
"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"
log "github.com/sirupsen/logrus"
)
type GetLatestGitTagOption func(repo *git.Repository) error
@ -35,8 +34,6 @@ func (bat BasicAuthTransport) RoundTrip(req *http.Request) (resp *http.Response,
func SetBasicAuth(username, password string) func(repo *git.Repository) error {
return func(repo *git.Repository) error {
log.Println("Configuring basic auth for https")
customClient := &http.Client{
Transport: BasicAuthTransport{username, password, http.DefaultTransport},
}
@ -50,8 +47,6 @@ func SetBasicAuth(username, password string) func(repo *git.Repository) error {
func FetchTags() func(repo *git.Repository) error {
return func(repo *git.Repository) error {
log.Info("Fetching git tags")
err := repo.Fetch(&git.FetchOptions{Tags: git.AllTags})
if err == git.NoErrAlreadyUpToDate {
@ -62,56 +57,40 @@ func FetchTags() func(repo *git.Repository) error {
}
}
func getLatestGitTag(options ...GetLatestGitTagOption) (string, error) {
var (
tag string
tagDate *time.Time
err error
)
repo, err := git.PlainOpen(".")
func getLatestGitTag(options ...GetLatestGitTagOption) (tag string, err error) {
r, err := git.PlainOpen(".")
if err != nil {
return "", fmt.Errorf("error opening git repo at %s: %w", ".", err)
}
for _, opt := range options {
err := opt(repo)
err := opt(r)
if err != nil {
return "", err
}
}
tags, err := repo.TagObjects()
tagRefs, err := r.Tags()
if err != nil {
return "", fmt.Errorf("error getting git tags %w", err)
return "", fmt.Errorf("error getting git tag refs %w", err)
}
for {
t, err := tags.Next()
ref, err := tagRefs.Next()
if err == io.EOF {
break
return tag, fmt.Errorf("couldn't find any git tags %w", err)
}
if err != nil {
return "", fmt.Errorf("error iterating tags %w", err)
return tag, fmt.Errorf("error iterating tags %w", err)
}
if tagDate != nil && t.Tagger.When.Before(*tagDate) {
continue
}
parts := strings.Split(string(ref.Name()), "/")
tag = strings.Join(parts[2:], "/")
tagDate = &t.Tagger.When
tag = t.Name
}
if tag == "" {
return tag, fmt.Errorf("couldn't find any git tags")
}
return tag, err
return
}
func writeCard(path, schema string, card interface{}) {