Compare commits
7 Commits
export_fun
...
install-la
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
73db301490 | ||
|
|
b0df506899 | ||
|
|
9143a54e8c | ||
|
|
ea035828b5 | ||
|
|
dd4718d178 | ||
|
|
7cf1d30546 | ||
|
|
00c44869c2 |
@@ -80,9 +80,14 @@ func fetchAndUpdateCR(qConfig *qapi.QliksenseConfig, version string) error {
|
|||||||
}
|
}
|
||||||
if version == "" {
|
if version == "" {
|
||||||
if qcr.GetLabelFromCr("version") == "" {
|
if qcr.GetLabelFromCr("version") == "" {
|
||||||
return errors.New("Cannot find gitref/tag/branch/version to fetch")
|
if encKey, err := qConfig.GetEncryptionKeyFor(qcr.GetName()); err != nil {
|
||||||
|
return err
|
||||||
|
} else if version, err = getLatestTag(qcr.GetFetchUrl(), qcr.GetFetchAccessToken(encKey)); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
version = qcr.GetLabelFromCr("version")
|
||||||
}
|
}
|
||||||
version = qcr.GetLabelFromCr("version")
|
|
||||||
}
|
}
|
||||||
encKey, err := qConfig.GetEncryptionKeyFor(qcr.GetName())
|
encKey, err := qConfig.GetEncryptionKeyFor(qcr.GetName())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -32,4 +32,19 @@ func TestFetchAndUpdateCR(t *testing.T) {
|
|||||||
t.Log("actual path: " + cr.Spec.ManifestsRoot + ", expected path: contexts/test1/qlik-k8s/v0.0.2")
|
t.Log("actual path: " + cr.Spec.ManifestsRoot + ", expected path: contexts/test1/qlik-k8s/v0.0.2")
|
||||||
t.FailNow()
|
t.FailNow()
|
||||||
}
|
}
|
||||||
|
//testing latest tag is fetched
|
||||||
|
cr.AddLabelToCr("version", "")
|
||||||
|
qConfig.WriteCR(cr)
|
||||||
|
err := fetchAndUpdateCR(qConfig, "")
|
||||||
|
if err != nil {
|
||||||
|
t.Log(err)
|
||||||
|
t.Fail()
|
||||||
|
}
|
||||||
|
cr = &qapi.QliksenseCR{}
|
||||||
|
qapi.ReadFromFile(cr, actualCrFile)
|
||||||
|
v := cr.GetLabelFromCr("version")
|
||||||
|
if v == "" || v == "v0.0.2" {
|
||||||
|
t.Log("should get latest but got version: " + v)
|
||||||
|
t.Fail()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import (
|
|||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
|
"github.com/Masterminds/semver/v3"
|
||||||
"github.com/qlik-oss/k-apis/pkg/git"
|
"github.com/qlik-oss/k-apis/pkg/git"
|
||||||
qapi "github.com/qlik-oss/sense-installer/pkg/api"
|
qapi "github.com/qlik-oss/sense-installer/pkg/api"
|
||||||
)
|
)
|
||||||
@@ -86,3 +87,69 @@ func (q *Qliksense) GetInstallableVersions(opts *LsRemoteCmdOptions) error {
|
|||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func getLatestTag(repoUrl, accessToken string) (string, error) {
|
||||||
|
if repoUrl == "" {
|
||||||
|
return "", errors.New("repo url is empty")
|
||||||
|
}
|
||||||
|
repoPath, err := fetchToTempDir(repoUrl, "master", accessToken)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|
||||||
|
r, err := git.OpenRepository(repoPath)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|
||||||
|
remoteRefsList, err := git.GetRemoteRefs(r, nil,
|
||||||
|
&git.RemoteRefConstraints{
|
||||||
|
Include: true,
|
||||||
|
Sort: true,
|
||||||
|
SortOrder: git.RefSortOrderDescending,
|
||||||
|
},
|
||||||
|
&git.RemoteRefConstraints{
|
||||||
|
Include: false,
|
||||||
|
Sort: true,
|
||||||
|
SortOrder: git.RefSortOrderAscending,
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(remoteRefsList) < 1 {
|
||||||
|
return "", errors.New("cannot find git remote information in the config repository")
|
||||||
|
}
|
||||||
|
|
||||||
|
var originRemoteRefs *git.RemoteRefs
|
||||||
|
for _, remoteRefs := range remoteRefsList {
|
||||||
|
if remoteRefs.Name == "origin" {
|
||||||
|
originRemoteRefs = remoteRefs
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if originRemoteRefs == nil {
|
||||||
|
return "", errors.New(`cannot find git remote called "origin" in the config repository`)
|
||||||
|
}
|
||||||
|
|
||||||
|
tags := originRemoteRefs.Tags
|
||||||
|
if len(tags) == 0 {
|
||||||
|
return "", errors.New(("no tags exists in the repo: " + repoPath))
|
||||||
|
}
|
||||||
|
maxSem, _ := semver.NewVersion(tags[0])
|
||||||
|
for _, sv := range tags[1:] {
|
||||||
|
if sv == "" {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
v, err := semver.NewVersion(sv)
|
||||||
|
if err != nil {
|
||||||
|
// it may happen, in the repo some tags may not conform to semver
|
||||||
|
fmt.Print("Unconform tags: " + sv)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if maxSem == nil || maxSem.LessThan(v) {
|
||||||
|
maxSem = v
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return maxSem.Original(), nil
|
||||||
|
}
|
||||||
|
|||||||
25
pkg/qliksense/get_installable_versions_test.go
Normal file
25
pkg/qliksense/get_installable_versions_test.go
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
package qliksense
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/Masterminds/semver/v3"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestGetLatestTag(t *testing.T) {
|
||||||
|
s, err := getLatestTag(defaultConfigRepoGitUrl, "")
|
||||||
|
if s == "" || err != nil {
|
||||||
|
t.Log(err)
|
||||||
|
t.Fail()
|
||||||
|
}
|
||||||
|
sv, err := semver.NewVersion(s)
|
||||||
|
if err != nil {
|
||||||
|
t.Log(err)
|
||||||
|
t.Log(sv)
|
||||||
|
}
|
||||||
|
baseV, _ := semver.NewVersion("v0.0.7")
|
||||||
|
if !sv.GreaterThan(baseV) {
|
||||||
|
t.Log("Expected greater than v0.0.7, but got: " + s)
|
||||||
|
t.Fail()
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user