Branch | Status |
---|---|
master | |
dev |
jfrog-client-go is a library which provides Go APIs to performs actions on JFrog Artifactory or Bintray from your Go application. The project is still relatively new, and its APIs may therefore change frequently between releases. The library can be used as a go-module, which should be added to your project's go.mod file. As a reference you may look at JFrog CLI's go.mod file, which uses this library as a dependency.
var file *os.File
...
log.SetLogger(log.NewLogger(log.INFO, file))
The default temp dir used is 'os.TempDir()'. Use the following API to set a new temp dir:
fileutils.SetTempDirBase(filepath.Join("my", "temp", "path"))
rtDetails := auth.NewArtifactoryDetails()
rtDetails.SetUrl("http://localhost:8081/artifactory")
rtDetails.SetSshKeysPath("path/to/.ssh/")
rtDetails.SetApiKey("apikey")
rtDetails.SetUser("user")
rtDetails.SetPassword("password")
rtDetails.SetAccessToken("accesstoken")
serviceConfig, err := artifactory.NewConfigBuilder().
SetArtDetails(rtDetails).
SetCertificatesPath(certPath).
SetThreads(threads).
SetDryRun(false).
Build()
rtManager, err := artifactory.New(&rtDetails, serviceConfig)
params := services.NewUploadParams()
params.Pattern = "repo/*/*.zip"
params.Target = "repo/path/"
params.Recursive = true
params.Regexp = false
params.IncludeDirs = false
params.Flat = true
params.Explode = false
params.Deb = ""
params.Symlink = false
// Retries default value: 3
params.Retries = 5
// MinChecksumDeploy default value: 10400
params.MinChecksumDeploy = 15360
rtManager.UploadFiles(params)
params := services.NewDownloadParams()
params.Pattern = "repo/*/*.zip"
params.Target = "target/path/"
params.Recursive = true
params.IncludeDirs = false
params.Flat = false
params.Explode = false
params.Symlink = true
params.ValidateSymlink = false
// Retries default value: 3
params.Retries = 5
// SplitCount default value: 3
params.SplitCount = 2
// MinSplitSize default value: 5120
params.MinSplitSize = 7168
rtManager.DownloadFiles(params)
params := services.NewMoveCopyParams()
params.Pattern = "repo/*/*.zip"
params.Target = "target/path/"
params.Recursive = true
params.Flat = false
rtManager.Copy(params)
params := services.NewMoveCopyParams()
params.Pattern = "repo/*/*.zip"
params.Target = "target/path/"
params.Recursive = true
params.Flat = false
rtManager.Move(params)
params := services.NewDeleteParams()
params.Pattern = "repo/*/*.zip"
params.Recursive = true
pathsToDelete := rtManager.GetPathsToDelete(params)
rtManager.DeleteFiles(pathsToDelete)
params := services.NewSearchParams()
params.Pattern = "repo/*/*.zip"
params.Recursive = true
rtManager.SearchFiles(params)
searchParams = services.NewSearchParams()
searchParams.Recursive = true
searchParams.IncludeDirs = false
resultItems = rtManager.SearchFiles(searchParams)
propsParams = services.NewPropsParams()
propsParams.Pattern = "repo/*/*.zip"
propsParams.Items = resultItems
propsParams.Props = "key=value"
rtManager.SetProps(propsParams)
searchParams = services.NewSearchParams()
searchParams.Recursive = true
searchParams.IncludeDirs = false
resultItems = rtManager.SearchFiles(searchParams)
propsParams = services.NewPropsParams()
propsParams.Pattern = "repo/*/*.zip"
propsParams.Items = resultItems
propsParams.Props = "key=value"
rtManager.DeleteProps(propsParams)
buildInfo := &buildinfo.BuildInfo{}
...
rtManager.PublishBuildInfo(buildInfo)
buildInfoParams := services.NewBuildInfoParams{}
buildInfoParams.BuildName = "buildName"
buildInfoParams.BuildNumber = "LATEST"
rtManager.GetBuildInfo(buildInfoParams)
params := services.NewPromotionParams()
params.BuildName = "buildName"
params.BuildNumber = "10"
params.TargetRepo = "target-repo"
params.Status = "status"
params.Comment = "comment"
params.Copy = true
params.IncludeDependencies = false
params.SourceRepo = "source-repo"
rtManager.DownloadFiles(params)
params := services.NewBuildDistributionParams()
params.SourceRepos = "source-repo"
params.TargetRepo = "target-repo"
params.GpgPassphrase = "GpgPassphrase"
params.Publish = false
params.OverrideExistingFiles = false
params.Async = true
params.BuildName = "buildName"
params.BuildNumber = "10"
params.Pattern = "repo/*/*.zip"
rtManager.DistributeBuild(params)
params := services.NewXrayScanParams()
params.BuildName = buildName
params.BuildNumber = buildNumber
rtManager.XrayScanBuild(params)
params := services.NewDiscardBuildsParams()
params.BuildName = "buildName"
params.MaxDays = "max-days"
params.MaxBuilds = "max-builds"
params.ExcludeBuilds = "1,2"
params.DeleteArtifacts = false
params.Async = false
rtManager.DiscardBuilds(params)
params := services.NewGitLfsCleanParams()
params.Refs = "refs/remotes/*"
params.Repo = "my-project-lfs"
params.GitPath = "path/to/git"
filesToDelete := rtManager.GetUnreferencedGitLfsFiles(params)
rtManager.DeleteFiles(filesToDelete)
rtManager.Aql(aql string)
rtManager.ReadRemoteFile(FilePath string)
btDetails := auth.NewBintrayDetails()
btDetails.SetUser("user")
btDetails.SetKey("key")
btDetails.SetDefPackageLicense("Apache 2.0")
serviceConfig := bintray.NewConfigBuilder().
SetBintrayDetails(btDetails).
SetDryRun(false).
SetThreads(threads).
Build()
btManager, err := bintray.New(serviceConfig)
params := services.NewUploadParams()
params.Pattern = "*/*.zip"
params.Path = versions.CreatePath("subject/repo/pkg/version")
params.TargetPath = "path/to/files"
params.Deb = "distribution/component/architecture"
params.Recursive = true
params.Flat = true
params.Publish = false
params.Override = false
params.Explode = false
params.UseRegExp = false
btManager.UploadFiles(params)
params := services.NewDownloadFileParams()
params.Flat = false
params.IncludeUnpublished = false
params.PathDetails = "path/to/file"
params.TargetPath = "target/path/"
// SplitCount default value: 3
params.SplitCount = 2
// MinSplitSize default value: 5120
params.MinSplitSize = 7168
btManager.DownloadFile(params)
params := services.NewDownloadVersionParams()
params.Path, err = versions.CreatePath("subject/repo/pkg/version")
params.IncludeUnpublished = false
params.TargetPath = "target/path/"
btManager.DownloadVersion(params)
pkgPath, err := packages.CreatePath("subject/repo/pkg")
btManager.ShowPackage(pkgPath)
btManager.DeletePackage(pkgPath)
params := packages.NewPackageParams()
params.Path, err = packages.CreatePath("subject/repo/pkg")
params.Desc = "description"
params.Labels = "labels"
params.Licenses = "licences"
params.CustomLicenses = "custum-licenses"
params.VcsUrl = "https://github.com/jfrog/jfrog-cli-go"
params.WebsiteUrl = "https://jfrog.com"
params.IssueTrackerUrl = "https://github.com/bintray/bintray-client-java/issues"
params.GithubRepo = "bintray/bintray-client-java"
params.GithubReleaseNotesFile = "RELEASE_1.2.3.txt" "github-rel-notes"
params.PublicDownloadNumbers = "true"
params.PublicStats = "true"
btManager.CreatePackage(params)
btManager.UpdatePackage(params)
versionPath, err := versions.CreatePath("subject/repo/pkg/version")
btManager.ShowVersion(versionPath)
btManager.DeleteVersion(versionPath)
params := versions.NewVersionParams()
params.Path, err = versions.CreatePath("subject/repo/pkg/version")
params.Desc = "description"
params.VcsTag = "1.1.5"
params.Released = "true"
params.GithubReleaseNotesFile = "RELEASE_1.2.3.txt"
params.GithubUseTagReleaseNotes = "false"
btManager.CreateVersion(params)
btManager.UpdateVersion(params)
params := entitlements.NewEntitlementsParams()
params.VersionPath, err = versions.CreatePath("subject/repo/pkg/version")
params.Path = "a/b/c"
params.Access = "rw"
params.Keys = "keys"
btManager.CreateEntitlement(params)
params.Id = "entitlementID"
btManager.UpdateEntitlement(params)
versionPath, err := versions.CreatePath("subject/repo/pkg/version")
btManager.ShowAllEntitlements(versionPath)
btManager.ShowEntitlement("entitelmentID", versionPath)
btManager.DeleteEntitlement("entitelmentID", versionPath)
params := accesskeys.NewAccessKeysParams()
params.Password = "password"
params.Org = "org"
params.Expiry = time.Now() + time.Hour * 10
params.ExistenceCheckUrl = "http://callbacks.myci.org/username=:username,password=:password"
params.ExistenceCheckCache = 60
params.WhiteCidrs = "127.0.0.1/22,193.5.0.1/92"
params.BlackCidrs = "127.0.0.1/22,193.5.0.1/92"
params.ApiOnly = true
btManager.CreateAccessKey(params)
params.Id = "KeyID"
btManager.UpdateAccessKey(params)
btManager.ShowAllAccessKeys("org")
btManager.ShowAccessKey("org", "KeyID")
btManager.DeleteAccessKey("org", "KeyID")
params := url.NewURLParams()
params.PathDetails, err = utils.CreatePathDetails("subject/repository/file-path")
// Check for errors
params.Expiry = time.Now() + time.Hour * 10
params.ValidFor = 60
params.CallbackId = "callback-id"
params.CallbackEmail = "callback-email"
params.CallbackUrl = "callback-url"
params.CallbackMethod = "callback-method"
btManager.SignUrl(params)
path, err := utils.CreatePathDetails("subject/repository/file-path")
btManager.GpgSignFile(path, "passphrase")
path, err := versions.CreatePath("subject/repo/pkg/version")
btManager.GpgSignVersion(path, "passphrase")
path, err := versions.CreatePath("subject/repo/pkg/version")
btManager.LogsList(versionPath)
path, err := versions.CreatePath("subject/repo/pkg/version")
btManager.DownloadLog(path, "logName")
To run tests on the source code, you'll need a running JFrog Artifactory Pro instance. Use the following command with the below options to run the tests.
go test -v github.com/jfrog/jfrog-client-go/tests
Optional flags:
Flag | Description |
---|---|
-rt.url |
[Default: http://localhost:8081/artifactory] Artifactory URL. |
-rt.user |
[Default: admin] Artifactory username. |
-rt.password |
[Default: password] Artifactory password. |
-rt.apikey |
[Optional] Artifactory API key. |
-rt.sshKeyPath |
[Optional] Ssh key file path. Should be used only if the Artifactory URL format is ssh://[domain]:port |
-rt.sshPassphrase |
[Optional] Ssh key passphrase. |
-rt.accessToken |
[Optional] Artifactory access token. |
-log-level |
[Default: INFO] Sets the log level. |
- The tests create an Artifactory repository named jfrog-cli-tests-repo1.
Once the tests are completed, the content of this repository is deleted.