Skip to content

Commit cc23a5c

Browse files
feat: support annotated tags
closes #3
1 parent 9701c3f commit cc23a5c

File tree

2 files changed

+28
-2
lines changed

2 files changed

+28
-2
lines changed

pkg/provider/github.go

+15-2
Original file line numberDiff line numberDiff line change
@@ -124,14 +124,27 @@ func (repo *GitHubRepository) GetReleases(rawRe string) ([]*semrel.Release, erro
124124
if rawRe != "" && !re.MatchString(tag) {
125125
continue
126126
}
127-
if r.Object.GetType() != "commit" {
127+
objType := r.Object.GetType()
128+
if objType != "commit" && objType != "tag" {
128129
continue
129130
}
131+
foundSha := r.Object.GetSHA()
132+
// resolve annotated tag
133+
if objType == "tag" {
134+
resTag, _, err := repo.client.Git.GetTag(context.Background(), repo.owner, repo.repo, foundSha)
135+
if err != nil {
136+
continue
137+
}
138+
if resTag.Object.GetType() != "commit" {
139+
continue
140+
}
141+
foundSha = resTag.Object.GetSHA()
142+
}
130143
version, err := semver.NewVersion(tag)
131144
if err != nil {
132145
continue
133146
}
134-
allReleases = append(allReleases, &semrel.Release{SHA: r.Object.GetSHA(), Version: version.String()})
147+
allReleases = append(allReleases, &semrel.Release{SHA: foundSha, Version: version.String()})
135148
}
136149
if resp.NextPage == 0 {
137150
break

pkg/provider/github_test.go

+13
Original file line numberDiff line numberDiff line change
@@ -45,11 +45,16 @@ func createGithubCommit(sha, message string) *github.RepositoryCommit {
4545
}
4646

4747
var commitType = "commit"
48+
var tagType = "tag"
4849

4950
func createGithubRef(ref, sha string) *github.Reference {
5051
return &github.Reference{Ref: &ref, Object: &github.GitObject{SHA: &sha, Type: &commitType}}
5152
}
5253

54+
func createGithubRefWithTag(ref, sha string) *github.Reference {
55+
return &github.Reference{Ref: &ref, Object: &github.GitObject{SHA: &sha, Type: &tagType}}
56+
}
57+
5358
var (
5459
GITHUB_REPO_PRIVATE = true
5560
GITHUB_DEFAULTBRANCH = "master"
@@ -81,6 +86,7 @@ var (
8186
createGithubRef("refs/tags/v3.0.0-beta.2", "deadbeef"),
8287
createGithubRef("refs/tags/v3.0.0-beta.1", "deadbeef"),
8388
createGithubRef("refs/tags/2020.04.19", "deadbeef"),
89+
createGithubRefWithTag("refs/tags/v1.1.1", "12345678"),
8490
}
8591
)
8692

@@ -132,6 +138,13 @@ func githubHandler(w http.ResponseWriter, r *http.Request) {
132138
fmt.Fprint(w, "{}")
133139
return
134140
}
141+
if r.Method == "GET" && r.URL.Path == "/repos/owner/test-repo/git/tags/12345678" {
142+
sha := "deadbeef"
143+
json.NewEncoder(w).Encode(github.Tag{
144+
Object: &github.GitObject{SHA: &sha, Type: &commitType},
145+
})
146+
return
147+
}
135148
http.Error(w, "invalid route", http.StatusNotImplemented)
136149
}
137150

0 commit comments

Comments
 (0)