feat: Allow Jfrog Artifactory authentication to be configured via env var

This commit is contained in:
iofq
2026-04-30 14:07:36 -05:00
committed by André Roth
parent 3333a643cb
commit 4655f10048
2 changed files with 86 additions and 31 deletions
+24 -7
View File
@@ -30,14 +30,23 @@ var (
_ aptly.PublishedStorage = (*PublishedStorage)(nil) _ aptly.PublishedStorage = (*PublishedStorage)(nil)
) )
// NewPublishedStorageRaw creates jfrog PublishedStorage from raw connection specs func createPublishedStorageConfig(url, user, password, apiKey, accessToken string) (config.Config, error) {
func NewPublishedStorageRaw(
repository, url, user, password, apiKey, accessToken, prefix string,
plusWorkaround, debug bool,
) (*PublishedStorage, error) {
artDetails := auth.NewArtifactoryDetails() artDetails := auth.NewArtifactoryDetails()
artDetails.SetUrl(url) artDetails.SetUrl(url)
if user == "" {
user = os.Getenv("JFROG_USERNAME");
}
if password == "" {
password = os.Getenv("JFROG_PASSWORD");
}
if apiKey == "" {
apiKey = os.Getenv("JFROG_APIKEY");
}
if accessToken == "" {
accessToken = os.Getenv("JFROG_ACCESSTOKEN");
}
if user != "" && password != "" { if user != "" && password != "" {
artDetails.SetUser(user) artDetails.SetUser(user)
artDetails.SetPassword(password) artDetails.SetPassword(password)
@@ -47,11 +56,19 @@ func NewPublishedStorageRaw(
artDetails.SetAccessToken(accessToken) artDetails.SetAccessToken(accessToken)
} }
serviceConfig, err := config.NewConfigBuilder(). return config.NewConfigBuilder().
SetServiceDetails(artDetails). SetServiceDetails(artDetails).
SetDryRun(false). SetDryRun(false).
Build() Build()
}
// NewPublishedStorageRaw creates jfrog PublishedStorage from raw connection specs
func NewPublishedStorageRaw(
repository, url, user, password, apiKey, accessToken, prefix string,
plusWorkaround, debug bool,
) (*PublishedStorage, error) {
serviceConfig, err := createPublishedStorageConfig(url, user, password, apiKey, accessToken)
if err != nil { if err != nil {
return nil, errors.Wrap(err, "error building jfrog client config") return nil, errors.Wrap(err, "error building jfrog client config")
} }
+39 -1
View File
@@ -18,7 +18,10 @@ import (
. "gopkg.in/check.v1" . "gopkg.in/check.v1"
) )
func Test(t *testing.T) { TestingT(t) } func Test(t *testing.T) {
t.Setenv("JFROG_USERNAME", "userfromenv")
TestingT(t)
}
type fakeJFrogManager struct { type fakeJFrogManager struct {
artifactory.EmptyArtifactoryServicesManager artifactory.EmptyArtifactoryServicesManager
@@ -425,6 +428,41 @@ func (s *PublishedStorageSuite) TestReadLinkPlusWorkaround(c *C) {
c.Assert(s.manager.itemPropsErr, IsNil) c.Assert(s.manager.itemPropsErr, IsNil)
} }
func (s *PublishedStorageSuite) TestCreatePublishedStorageConfig(c *C) {
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) {
w.WriteHeader(http.StatusOK)
}))
defer server.Close()
withUserPassword, err := createPublishedStorageConfig(server.URL, "user", "password", "", "")
c.Assert(err, IsNil)
withUserPasswordDetails := withUserPassword.GetServiceDetails()
c.Assert(withUserPasswordDetails, NotNil)
c.Assert(withUserPasswordDetails.GetUser(), Equals, "user")
withAPIKey, err := createPublishedStorageConfig(server.URL, "", "", "api-123", "")
c.Assert(err, IsNil)
withAPIKeyDetails := withAPIKey.GetServiceDetails()
c.Assert(withAPIKeyDetails, NotNil)
c.Assert(withAPIKeyDetails.GetApiKey(), Equals, "api-123")
withAccessToken, err := createPublishedStorageConfig(server.URL, "", "", "", "token")
c.Assert(err, IsNil)
withAccessTokenDetails := withAccessToken.GetServiceDetails()
c.Assert(withAccessTokenDetails, NotNil)
c.Assert(withAccessTokenDetails.GetAccessToken(), Equals, "token")
withUserPasswordFromEnv, err := createPublishedStorageConfig(server.URL, "", "password", "", "")
c.Assert(err, IsNil)
withUserPasswordFromEnvDetails := withUserPasswordFromEnv.GetServiceDetails()
c.Assert(withUserPasswordFromEnvDetails, NotNil)
c.Assert(withUserPasswordFromEnvDetails.GetUser(), Equals, "userfromenv")
}
func (s *PublishedStorageSuite) TestNewPublishedStorageRaw(c *C) { func (s *PublishedStorageSuite) TestNewPublishedStorageRaw(c *C) {
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) { server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) {
w.WriteHeader(http.StatusOK) w.WriteHeader(http.StatusOK)