From d0035d6bca250bc3cf980e0b04aa609104fcf6bc Mon Sep 17 00:00:00 2001 From: Nightapes Date: Mon, 6 Jan 2020 12:14:41 +0100 Subject: [PATCH 1/6] fix(gitutil): fix log message for tags --- internal/gitutil/gitutil.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/gitutil/gitutil.go b/internal/gitutil/gitutil.go index ca0c8c9..4ca9d02 100644 --- a/internal/gitutil/gitutil.go +++ b/internal/gitutil/gitutil.go @@ -90,7 +90,7 @@ func (g *GitUtil) GetLastVersion() (*semver.Version, string, error) { err = gitTags.ForEach(func(p *plumbing.Reference) error { v, err := semver.NewVersion(p.Name().Short()) - log.Tracef("Tag %+v with hash: %s", p.Target(), p.Hash()) + log.Tracef("Tag %+v with hash: %s", p.Name().Short(), p.Hash()) if err == nil { tags = append(tags, v) From 279509c922aee2d42156b60ac474b1f90bc3d7be Mon Sep 17 00:00:00 2001 From: Nightapes Date: Mon, 6 Jan 2020 12:44:10 +0100 Subject: [PATCH 2/6] docs(README): fix typo --- README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 4ebe426..8179525 100644 --- a/README.md +++ b/README.md @@ -2,12 +2,12 @@ ## Release Types -| Type | Implemendet | Git tag | Changelog | Release | Write access git | Api token | -| ---------- | :----------------: | :----------------: | :----------------: | :----------------: | :----------------: | :----------------: | -| `github` | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | :white_check_mark: | -| `gitlab` | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | :white_check_mark: | -| `git` | :white_check_mark: | :white_check_mark: | | | :white_check_mark: | | -| `bitbuckt` | Comming soon | :white_check_mark: | | | :white_check_mark: | | +| Type | Implemendet | Git tag | Changelog | Release | Write access git | Api token | +| ----------- | :----------------: | :----------------: | :----------------: | :----------------: | :----------------: | :----------------: | +| `github` | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | :white_check_mark: | +| `gitlab` | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | :white_check_mark: | +| `git` | :white_check_mark: | :white_check_mark: | | | :white_check_mark: | | +| `bitbucket` | Comming soon | :white_check_mark: | | | :white_check_mark: | | ## Supported CI Pipelines From f6a2d837b1216926c16c13d94408e0cab6bd58fc Mon Sep 17 00:00:00 2001 From: Nightapes Date: Mon, 6 Jan 2020 12:47:02 +0100 Subject: [PATCH 3/6] buikd(docker): add github docker registy --- .github/workflows/main.yml | 6 +++++- .release.yml | 4 +++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index d7d960b..1c44e00 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -35,8 +35,11 @@ jobs: - name: Build Docker image if: github.ref != 'refs/heads/master' run: | - docker build -t nightapes/go-semantic-release:development . docker login -u nightapes -p ${{ secrets.DOCKER_PASSWORD }} + docker login -u nightapes -p ${{ secrets.GITHUB_TOKEN }} docker.pkg.github.com + docker build -t nightapes/go-semantic-release:development . + docker push nightapes/go-semantic-release:development + docker tag nightapes/go-semantic-release:development docker.pkg.github.com/Nightapes/go-semantic-release/go-semantic-release:development docker push nightapes/go-semantic-release:development - name: Push Docker image @@ -48,4 +51,5 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | docker login -u nightapes -p ${{ secrets.DOCKER_PASSWORD }} + docker login -u nightapes -p $GITHUB_TOKEN docker.pkg.github.com ./build/go-semantic-release-temp release --loglevel trace diff --git a/.release.yml b/.release.yml index 64892da..6784e18 100644 --- a/.release.yml +++ b/.release.yml @@ -17,7 +17,9 @@ changelog: hooks: preRelease: - docker build -t nightapes/go-semantic-release:latest . - - docker build -t nightapes/go-semantic-release:$RELEASE_VERSION . + - docker tag nightapes/go-semantic-release:latest docker.pkg.github.com/Nightapes/go-semantic-release/go-semantic-release:$RELEASE_VERSION + - docker tag nightapes/go-semantic-release:latest nightapes/go-semantic-release:$RELEASE_VERSION postRelease: - docker push nightapes/go-semantic-release:latest - docker push nightapes/go-semantic-release:$RELEASE_VERSION + - docker push docker.pkg.github.com/Nightapes/go-semantic-release/go-semantic-release:$RELEASE_VERSION From a8b68f91829652d61a97007a546c028426a4ef76 Mon Sep 17 00:00:00 2001 From: Nightapes Date: Mon, 6 Jan 2020 12:51:01 +0100 Subject: [PATCH 4/6] build(docker): fix github naming --- .github/workflows/main.yml | 4 ++-- .release.yml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 1c44e00..9761882 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -39,8 +39,8 @@ jobs: docker login -u nightapes -p ${{ secrets.GITHUB_TOKEN }} docker.pkg.github.com docker build -t nightapes/go-semantic-release:development . docker push nightapes/go-semantic-release:development - docker tag nightapes/go-semantic-release:development docker.pkg.github.com/Nightapes/go-semantic-release/go-semantic-release:development - docker push nightapes/go-semantic-release:development + docker tag nightapes/go-semantic-release:development docker.pkg.github.com/nightapes/go-semantic-release/go-semantic-release:development + docker push docker.pkg.github.com/nightapes/go-semantic-release/go-semantic-release:development - name: Push Docker image if: github.ref != 'refs/heads/master' diff --git a/.release.yml b/.release.yml index 6784e18..12da15b 100644 --- a/.release.yml +++ b/.release.yml @@ -17,9 +17,9 @@ changelog: hooks: preRelease: - docker build -t nightapes/go-semantic-release:latest . - - docker tag nightapes/go-semantic-release:latest docker.pkg.github.com/Nightapes/go-semantic-release/go-semantic-release:$RELEASE_VERSION + - docker tag nightapes/go-semantic-release:latest docker.pkg.github.com/nightapes/go-semantic-release/go-semantic-release:$RELEASE_VERSION - docker tag nightapes/go-semantic-release:latest nightapes/go-semantic-release:$RELEASE_VERSION postRelease: - docker push nightapes/go-semantic-release:latest - docker push nightapes/go-semantic-release:$RELEASE_VERSION - - docker push docker.pkg.github.com/Nightapes/go-semantic-release/go-semantic-release:$RELEASE_VERSION + - docker push docker.pkg.github.com/nightapes/go-semantic-release/go-semantic-release:$RELEASE_VERSION From 575ba5d5bd0225dccfc814951648e1dbb2854be9 Mon Sep 17 00:00:00 2001 From: Nightapes Date: Mon, 6 Jan 2020 17:41:10 +0100 Subject: [PATCH 5/6] fix(hooks): improve cmd execution --- cmd/go-semantic-release/commands/hooks.go | 67 +++++++++++++++++++++++ internal/hooks/hooks.go | 12 +++- 2 files changed, 76 insertions(+), 3 deletions(-) create mode 100644 cmd/go-semantic-release/commands/hooks.go diff --git a/cmd/go-semantic-release/commands/hooks.go b/cmd/go-semantic-release/commands/hooks.go new file mode 100644 index 0000000..4372c87 --- /dev/null +++ b/cmd/go-semantic-release/commands/hooks.go @@ -0,0 +1,67 @@ +package commands + +import ( + "fmt" + + "github.com/Nightapes/go-semantic-release/internal/hooks" + "github.com/Nightapes/go-semantic-release/pkg/semanticrelease" + log "github.com/sirupsen/logrus" + "github.com/spf13/cobra" +) + +func init() { + rootCmd.AddCommand(hooksCmd) +} + +var hooksCmd = &cobra.Command{ + Use: "hooks", + Short: "Run all hooks", + RunE: func(cmd *cobra.Command, args []string) error { + config, err := cmd.Flags().GetString("config") + if err != nil { + return err + } + + repository, err := cmd.Flags().GetString("repository") + if err != nil { + return err + } + + force, err := cmd.Flags().GetBool("no-cache") + if err != nil { + return err + } + + ignoreConfigChecks, err := cmd.Flags().GetBool("no-checks") + if err != nil { + return err + } + + releaseConfig := readConfig(config) + + s, err := semanticrelease.New(releaseConfig, repository, !ignoreConfigChecks) + if err != nil { + return err + } + + provider, err := s.GetCIProvider() + + if err != nil { + return err + } + + releaseVersion, err := s.GetNextVersion(provider, force) + if err != nil { + return err + } + + hook := hooks.New(releaseConfig, releaseVersion) + + err = hook.PreRelease() + if err != nil { + return err + } + + return hook.PostRelease() + }, +} diff --git a/internal/hooks/hooks.go b/internal/hooks/hooks.go index 1b51195..098ea2a 100644 --- a/internal/hooks/hooks.go +++ b/internal/hooks/hooks.go @@ -3,6 +3,7 @@ package hooks import ( "bufio" "os/exec" + "runtime" "strings" "github.com/Nightapes/go-semantic-release/internal/shared" @@ -51,9 +52,14 @@ func (h *Hooks) PostRelease() error { func (h *Hooks) runCommand(command string) error { - splittedCmd := strings.Split(strings.ReplaceAll(command, "$RELEASE_VERSION", h.version.Next.Version.String()), " ") + cmdReplaced := strings.ReplaceAll(command, "$RELEASE_VERSION", h.version.Next.Version.String()) - cmd := exec.Command(splittedCmd[0], splittedCmd[1:]...) + var cmd *exec.Cmd + if runtime.GOOS == "windows" { + cmd = exec.Command("cmd.exe", "/C", cmdReplaced) + } else { + cmd = exec.Command("sh", "-c", cmdReplaced) + } cmdReader, err := cmd.StdoutPipe() if err != nil { @@ -63,7 +69,7 @@ func (h *Hooks) runCommand(command string) error { scanner := bufio.NewScanner(cmdReader) go func() { for scanner.Scan() { - log.WithField("cmd", splittedCmd[0]).Infof("%s\n", scanner.Text()) + log.WithField("cmd", strings.Fields(cmdReplaced)[0]).Infof("%s\n", scanner.Text()) } }() From 7157d64b7b60758d751e19abf4db6b68d645ac6a Mon Sep 17 00:00:00 2001 From: Nightapes Date: Mon, 6 Jan 2020 17:45:52 +0100 Subject: [PATCH 6/6] style(hooks): fix lint issues --- cmd/go-semantic-release/commands/hooks.go | 3 --- 1 file changed, 3 deletions(-) diff --git a/cmd/go-semantic-release/commands/hooks.go b/cmd/go-semantic-release/commands/hooks.go index 4372c87..ef21554 100644 --- a/cmd/go-semantic-release/commands/hooks.go +++ b/cmd/go-semantic-release/commands/hooks.go @@ -1,11 +1,8 @@ package commands import ( - "fmt" - "github.com/Nightapes/go-semantic-release/internal/hooks" "github.com/Nightapes/go-semantic-release/pkg/semanticrelease" - log "github.com/sirupsen/logrus" "github.com/spf13/cobra" )