Top 50 Artifactory interview questions and answers

Artifactory

Table of Contents

Q1. Query Language used in Artifactory is __.

Choose the correct option from below lists
(1)AQL
(2)NoSQL
(3)None of the Mentioned
(4)SQL

Answer:-(1)AQL

Q2. Term which refers to the degree of module dependency on other modules is __.

Choose the correct option from below lists
(1)Cohesion
(2)Attraction
(3)Repulsion
(4)Coupling

Answer:-(4)Coupling

Q3. Developers declare their dependencies in which of Software Development?

Choose the correct option from below lists
(1)Design
(2)Development
(3)Testing
(4)Requirement Analysis

Answer:-(2)Development

Q4. In which Default Port number does Artifactory run?

Choose the correct option from below lists
(1)8081
(2)8080
(3)7897
(4)8082

Answer:-(1)8081

Q5. POM stands for?

Choose the correct option from below lists
(1)Planning Object Model
(2)Project Object Model
(3)Planning Overview Model

Answer:-(2)Project Object Model

Q6. Artifactory is not an open source solution.

Choose the correct option from below lists
(1)False
(2)True

Answer:-(1)False

Q7. Which API does the Artifactory exposes?

Choose the correct option from below lists
(1)REST
(2)SOAP

Answer:-(1)REST

Q8. Artifactory can provide Cloud based Storage.

Choose the correct option from below lists
(1)True
(2)False

Answer:-(1)True

Q9. Package viewer supported by Artifactory is __ .

Choose the correct option from below lists
(1)Docker
(2)None of the Mentioned
(3)All the options
(4)npm registries

Answer:-(3)All the options

Q10. Build Module of Artifactory UI contains the Results organised by __ .


Choose the correct option from below lists
(1)Build Name
(2)Last Build Id
(3)None of the mentioned
(4)Last Build time
(5)All the Options

Answer:-(5)All the Options

Q11. Which of the following is not a part of naming convention provided by JFrog?

Choose the correct option from below lists
(1)Team
(2)Locator
(3)Maturity
(4)Technology
(5)Version

Answer:-(5)Version

Q12. Artifactory is used as __ .


Choose the correct option from below lists
(1)Version Control System
(2)Binary Repository Manager

Answer:-(2)Binary Repository Manager

Q13. Artifactory provides search options based on __.


Choose the correct option from below lists
(1)All the Options
(2)Package Format
(3)File Names
(4)CheckSum

Answer:-(1)All the Options

Q14. Type of Repository Format not supported by Artifactory.


Choose the correct option from below lists
(1)R
(2)None of the mentioned
(3)Maven
(4)NuGet
(5)PypI

Answer:-(2)None of the mentioned

Q15. LDAP Authentication is provided by Artifactory.

Choose the correct option from below lists
(1)False
(2)True

Answer:-(2)True

Q16. What form of data is stored in Binaries?

Choose the correct option from below lists
(1)Blobs
(2)Texts

Answer:-(1)Blobs

Q17. Artifactory allows repositories to be __ .

Choose the correct option from below lists
(1)Export
(2)All the Options
(3)None of the mentioned
(4)Import

Answer:-(2)All the Options

Q18. Artifactory acts as proxy for Remote Repositories


Choose the correct option from below lists
(1)False
(2)True

Answer:-(2)True

Q19. Binaries are versioned by __.


Choose the correct option from below lists
(1)Content
(2)Both Content and Name
(3)None of the Mentioned
(4)Name

Answer:-(4)Name

Q20. No. of Build Life cycle phases Maven has is __ .


Choose the correct option from below lists
(1)7
(2)6
(3)5

Answer:-(1)7

Q21. When maven says “resolution will not be reattempted until the update interval of MyRepo has elapsed”, where is that interval specified?

With maven, I occasionally hit an artifact that comes from some 3rd-party repo that I haven’t built or included in my repository yet.

I’ll get an error message from the maven client saying that an artifact can’t be found:

Failure to find org.jfrog.maven.annomojo:maven-plugin-anno:jar:1.4.0 in http://myrepo:80/artifactory/repo was cached in the local repository, resolution will not be reattempted until the update interval of MyRepo has elapsed or updates are forced -> [Help 1]

Now, I understand what this means, and can simply re-run my command with -U, and things usually work fine from there on out.

However, I find this error message to be extremely unintuitive and am trying to spare my co-workers some headaches.

I am trying to figure out if there is some place that I can modify this update interval setting.

Is the update interval that is mentioned in this error message a client-side or server-side setting?
If client-side, how do I configure it?
If server-side, does anyone know how/if Nexus/Artifactory expose these settings?

Q22. Should we use Nexus or Artifactory for a Maven Repo? [closed]

We are using Maven for a large build process (> 100 modules). We have been storing our external dependencies in source control, and using that to update a local repo.

However, we are ready to graduate to a local repo that can cache central so that we don’t have to proactively download all 3rd parties (but we can still have a local repo to pull from). In addition we want to publish our internal build artifacts from a nightly build so that developers don’t have to build the world.

We are considering Nexus and Artifactory. What are the reasons for preferring one over the other? Are there others we should be considering?

Q23. What’s wrong with this Ivy changingPattern / SNAPSHOT configuration?

I can’t get Ivy to update cache when snapshot dependencies are updated. The resolver (to has the following settings:

An example artifact filename (in Artifactory) is:

my-jar-1.999-SNAPSHOT.jar

A detailed Ant log of resolve includes:

[NOT REQUIRED] com.myorg#my-module;1.999-SNAPSHOT!my-jar.jar

There is no POM on the artifact.

The resolver is underneath a chain resolver; they both have all the relevant attributes set. I have read https://issues.apache.org/jira/browse/IVY-938 and https://issues.apache.org/jira/browse/IVY-1221, including all the comments, and AFAICT (perhaps incorrectly!) none of the workarounds are relevant.

Should I give up on snapshots and just use explicit versions with “integration.latest” dynamically versioned dependencies? I fear this may end up failing when we have integration builds happening for multiple major versions. At that point we’ll need to split the major versions out into separate repositories, or put the major build number in the artifact name, or something equally clunky, just to make “integration.latest” work.

Q24. Where to put the gradle.properties file?

I am following the Artifactory 1-min Setup. I have Artifactory up and running on my localhost, and now I am trying to integrate it with Intellij/Gradle.

The artifactory webapp gives a gradle.properties and build.gradle file, so I’m trying to start with adding these to my IntelliJ project. However, I don’t know where to put the gradle.properties file.

I tried copying thegradle.properties contents (key=value pairs) to gradle/wrapper/gradle-wrapper.properties, unfortunately doing that does not make the keys accessible in the build.gradle file. Any ideas?

Q25.How can I prevent previously deployed artifacts from being overwritten?

We use Artifactory for our company’s Maven repository. Is there a way to set it up (or set Maven up) so that an artifact can’t be deployed to the repository if there is a pre-existing artifact with the same version number?

The reasoning for this is to make sure that valid releases don’t accidentally get overwritten. If an artifact really does need to be re-deployed, one of our developers can use the Artifactory web interface to delete it. Then they can deploy the new copy.

Q26. How do I remove a cached local artifact that maven fetched?

After running maven commands, the jboss artifact sits cached in my local repo /.m2. However, it’s the wrong copy, and we have updated our artifactory on the local server. How do I remove this cached copy? (other than manually deleting the jboss folder from the /.m2/repository/org folder). Is there a maven command to do so? Also, I was wondering how exactly the local repository is structured, is it according to groupId, artifactId, version (GAV) in any way?

Q27. Maven pom to zip config files from GitHub and jars from artifactory

Requirement:

Need to push config files and jars from artifactory to UCD for deployment.
Config files are present in GitHub repostiory.
Jars (not needed for build but needed to start application in UCD) are present in artifactory.

Q28. Artifactory not deleting Unique Snapshots

We have an Artifactory server that is using 220Gb – with the libs-snapshots-local repository utilising 98% of that storage.

When we looked at the configuration for the repository we noted that Maven snapshot behaviour was set to: unique and that the Max Unique Snapshots value was 0.

We changed the Max Unique Snapshots value to 5.

This seems to work when we are still working on the Snapshot, however if we no longer deploy to the snapshot (a release has been made) then it doesn’t delete any of these files.

As an example: we have the following in the Snapshots repository:

com/company/some/app/1.23-SNAPSHOT/.. (50+ artifacts)
com/company/some/app/1.24-SNAPSHOT/.. (5 artifacts)

Artifactory keeps the current SNAPSHOT directory ( 1.24-SNAPSHOT ) at a max of 5 artifacts, however the number of artifacts in the 1.23-SNAPSHOT directory never decreases.

It seems that Artifactory uses the deployment of an artifact to trigger the cleanup check – Thus if you’re no longer deploying to that artifact, then no clean up will be done?

Q29. How to upload an artifact to Jfrog Artifactory using Jfrog CLI?

I’m trying to upload an artifact from Bamboo CI using CLI for Jfrog Artifactory

I need to upload .p2 plugins and I have two options:

Upload the .zip and deploy it as Bundle Artifact
Upload the uncompressed folder with all subfolders and data.

I’m trying to upload the uncompressed folder with all the subfolders and data using this command:

jfrog rt upload –include-dirs=true ${bamboo.build.working.directory}/unzip/${bamboo.public.name-update-site}/* p2-release-local/${bamboo.public.name-update-site}/

But the problem is that the subfolders are empty.

Also I try to use this command:

jfrog rt upload –flat=false ${bamboo.build.working.directory}/unzip/${bamboo.public.name-update-site}/* p2-release-local/${bamboo.public.name-update-site}/

This command upload all the subfolders with all the data but the path isn’t correct because is:

/name-update-site/datos/agents-home/xml-data/build-dir/PREDEL-RELPLU-JOB1/unzip/name-update-site

The content of the variable ${bamboo.build.working.directory} is

/datos/agents-home/xml-data/build-dir/PREDEL-RELPLU-JOB1/

EDITED: Log info:

INFO: Listing Bamboo directory
prueba-update-site.zip
unzip

INFO: Listing files from unzip folder
prueba-update-site

INFO: Listing files from custom folder
artifacts.jar
content.jar
features
plugins
site.xml
uninstall_fortify_plugins.cmd

Q30. Artifactory aql: find builds of job with given property

I am trying to query which build number(s) produced artifacts from build foo with artifact property vcs.Revision=aabbccddee123456.

In Artifactory 5.1.3.

I was trying like this so far:

curl -u user:apikey -i -X POST https://artifactory.foobar.com/artifactory/api/search/aql -H “content-type:text/plain” -T query.json

query.json:

builds.find(
{
“module.artifact.item.repo”:”snapshot-local”,
“name”:”foo”,
“module.artifact.item.@vcs.Revision”:”aabbccddee123456″
}
)

However, none of these 3 lines seem individually correct:

builds.find({"module.artifact.item.repo":"snapshot-local"}) returns nothing,

builds.find({"name":"foo"}) returns the same empty response,

builds.find({"module.artifact.item.@vcs.Revision":"aabbccddee123456"}) also returns this:

{
“results” : [ ],
“range” : {
“start_pos” : 0,
“end_pos” : 0,
“total” : 0
}
}

Q31. How do I deploy a file to Artifactory using the command line?

I’ve spent far more time on this than I care to admit. I am trying to just deploy one file into my Artifactory server from the command line. I’m doing this using gradle because that is how we manage our java builds. However, this artifact is an NDK/JNI build artifact, and does not use gradle.

So I just need the simplest gradle script to do the deploy. Something equivalent to:

scp

I am currently trying to use the artifactory plugin, and am having little luck in locating a reference for the plugin.

Q32. Best practices in naming conventions on Maven artifactID (is there restriction?)

My team is new to Maven and we haven’t been able to find any definitive guidance on selecting artifactIDs for our projects.

I know that the Guide to naming conventions says that artifactIDs should be

"whatever name you want with lowercase letters and no strange symbols"

but some folks in my group want to use the reverse domain name style for both groupIDs and artifactIDs.

Based on the above-mentioned guidelines plus all the examples that I’ve seen in the central repository I don’t think it makes sense to have reverse domain style artifactIDs but I can’t tell if doing so is actually invalid or merely frowned upon. I vaguely remember reading something about various repository managers not being able to deal effectively with artifactIDs that contain period (.) characters but I don’t remember where I read that & I can’t find it now.

Q33.How to configure Maven2 to publish to Artifactory?

Currently I have a Maven2 project that builds a JAR when you run:

mvn clean package

I need to now tweak the pom.xml to publish this JAR (myapp.jar) to an Artifactory server running at:

http://myartifactory/artifactory/simple/myorg/myapp/0.1

I tried adding a element to my pom.xml but nothing is being published with this config:

myartifactory http://myartifactory/artifactory/simple/

Any ideas as to how I could get publishing to work? For simplicity’s sake, pretend that this Artifactory repo is authenticated to accept publishes/writes from a user with a username=foo and password=bar.

Q34. Maven Internal Repository, Is it Really This Hard?

I have several projects which use Maven and I would like to run an internal repository on my work network. I have several libraries which are from third parties and cannot be released into the wild, as well as a few libraries of our own which need to be available within the network (including to our TeamCity CI Server) but cannot be deployed outside the network. After a bit of research, I found three main recommendations on how to accomplish this: Archiva, Artifactory, and Nexus. I have tried each, and have failed to achieve a successful build of any of my projects using the internal repositories created by any of them.

This leads me to believe that I am misunderstanding something or doing something wrong. Does anyone know of a tutorial that will walk me through setting up and internal Maven repository and integrate it with my project?

Q35. Accessing an Artifactory/Maven Repo that requires basic-auth

I have an Artifactory repo that sits behind basic authentication. How would I configure the settings.xml to allow access?

artifactory * https://myserver.example.com/artifactory/repo Artifactory


Artifactory someArtifactoryUser someArtifactoryPassword

So server tag is the user credentials for the artifactory user, but I also need to provide another user/password to get through the basic-auth. Where would I put that?!?

Q36. How to stop Maven/Artifactory from keeping Snapshots with timestamps?

Due to disk space considerations I’d like to only ever keep one version of any snapshot in my repository. Rather than keeping multiple versions with timestamp suffixes

e.g. ecommerce-2.3-20090806.145007-1.ear

Q37. How are snapshot and release repositories used differently?

I understand that during development build artifacts are placed in the snapshot repository.

When a product needs to go to QA for testing, do teams pull from the snapshot repository? Or do they do a full build, deploy to the release repository, and then give it to QA from there?

Also, if my snapshots repository holds all the build artifacts from each build, how is this commonly cleaned up? I could see keeping the last 5 builds from the build server, but not every one. I’m using Artifactory if it helps.

Q38. Can SBT publish to JFrog artifactory

My organization uses JFROG artifactory for distribution of all jars.

So far I have always used SBT for my Scala development. But now when i am searching for ways to publish jars built by SBT into JFROG artifactory, I only find this plugin on github which is in “alpha” state

https://github.com/JFrogDev/artifactory-sbt-plugin

I want to know if this plugin is the only way to publish jars from sbt to JFrog artifactory? or are there better means.

since this plugin says that its in alpha… I don’t think my org will be ready to use this.

Q39. Automatically use secret when pulling from private registry

Is it possible to globally (or at least per namespace), configure kubernetes to always use an image pull secret when connecting to a private repo? There are two use cases:

when a user specifies a container in our private registry in a deployment
when a user points a Helm chart at our private repo (and so we have no control over the image pull secret tag).

I know it is possible to do this on a service account basis but without writing a controller to add this to every new service account created it would get a bit of a mess.

Q40. How would you delete all artifacts that match a pattern (e.g older than 6 months old) from artifactory?

Using either curl, or the go library

Q41. Download artifact from Maven repository in Java program

I need to write Java code that downloads a given artifact (GAV) from a given Maven repository. In the past I used the REST interface of Nexus 2 (which is quite easy) but I would like to have something which is independent of the repository (Nexus 2, Nexus 3, Artifactory) used.

In Fetching Maven artifacts programmatically a similar question is asked, but the main answer is from 2014 and suggests a library that was not updated since 2014.

Q42. How to deploy Maven sites to Artifactory?

We have upgraded from a very old Artifactory (which was 6-7 years old). At the time, due to space limitations, part of the repositories were not handled by Artifactory, but were served over HTTP via the Apache httpd server. The artifacts which were served via Apache httpd, were deployed over SCP. We’re trying to migrate everything from SCP to HTTPS. We’ve migrated pretty much everything. However, we are now left with the Maven sites which were also deployed over SCP and served by Apache.

We would like to migrate all these sites over to Artifactory. Do we need a separate kind of repository for this? I couldn’t find how this works in Artifactory. Could somebody please provide an explanation, or a link?

Q43. Jenkins Artifactory plugin – grabbing latest artifacts

I am trying to save build artifacts and pull them into new builds via the upload/download spec portion of the Jenkins Artifactory plugin. Is there a way to grab the “latest” build artifacts?

I see in the Artifactory file spec docs that there should be a “build” element in the download spec where I can specify “LATEST” but that doesn’t work, just says “LATEST” not found. Maybe I am not publishing my builds to Artifactory correctly in the first place?

According to this SO question and this GitHub page it appears that sorting by date and grabbing the newest is only supported with the jfrog CLI and not in Jenkins. Others told me that this sort of functionality can be had using the name setter, version number, description setter plugings… but that seems really hacky.

We are using Jenkins 2.60.3 and Artifactory Enterprise 5.4.5.

Q44. Docker pull “unexpected EOF”

I faced an issue with docker. The scenario is like this: we use Codebuild+Packer+docker to create AMI, which is used in deploy. During this step we pull image from artifactory and all pass fine except pulling one of the layers which is > 1Gb. After several retries it fails with error: Download failed, retrying: unknown blob and then “unexpected EOF”. Have you ever faced such issue? Any comments or advices are highly appreciated.

Q45. How can I upload an RPM file to Artifactory using Gradle?

Gradle always uploads the files using a maven-style directly layout which is inappropriate for a YUM repository.

Q46. How to move artifacts from a repository to another repository?

My project now getting artifacts from the Central Repository. Now I created new Artifact repository and want my project getting artifacts from that.

Q47. Download single file from zipped Artifactory artifact

I have a Gradle build which is publishing a zip archive to Artifactory. Some downstream use cases require a single file from the zip artifact, so downloading the entire archive is inefficient. Is it possible to download a single file from within the zip archive?

I suspect an issue in the way the archive is being created. I cannot expand the zip contents through the web viewer, if that is a clue.

Here is the Gradle code used to create the zip artifact:

task buildZip(type: Zip) {
description ‘Create the ZIP file’
classifier = System.env.CLASSIFIER
extension = ‘zip’
def archive_loc = System.env.FOLDER_TO_ZIP
from archive_loc
}

Q48. Download files from Artifactory to Teamcity without retaining their full path

I am using

TeamCity Enterprise 2017.1.2 (build 46812)
Artifactory Professional 5.3.1 rev 50046
Teamcity has the Artifactory plug-in installed (ver 2.3.0)

The task is simple – download files from Artifactory to Teamcity build:

From Artifactory MyRepo/RootFolder/ProjectFolder/1.2.3/<files>
To TC %checkoutdir%/artifacts/<files>

The part of the path contains both folders and files and I want to retain their structure.

The download spec json is:

{
“files”: [
{
“pattern”: “MyRepo/RootFolder/ProjectFolder/1.2.3/”,
“target”: “artifacts/”
}
]
}

However, the files get downloaded into a different location than I would expect:

Actual: artifacts/RootFolder/ProjectFolder/1.2.3/<files>
Expected: artifacts/<files>

The whole path from Artifactory gets appended after the target directory. How do I tell the plugin to only use the relative path of files after the specified root? I have tried fiddling about with wildcards, slashes etc, but nothing helped.

I had to create an extra build step where I manually move files to the structure I expect, but I would prefer not to have to do that.

Q49. How do I find the latest version of an artifact from a maven repository?

As part of an automated deployment I need a script to download the latest version of an artifact from our internal repository.

Ideally this script will be with ant or a unix shell script.

So for example:

I have myArtifact.war and it has versions 1.0 , 1.1 and 2.0 – I need the script given the correct group id and artifact id to retrieve version 2.0 from our maven repository (currently using artifactory).

Q50. Download single file from zipped Artifactory artifact

I have a Gradle build which is publishing a zip archive to Artifactory. Some downstream use cases require a single file from the zip artifact, so downloading the entire archive is inefficient. Is it possible to download a single file from within the zip archive?

I suspect an issue in the way the archive is being created. I cannot expand the zip contents through the web viewer, if that is a clue.

Here is the Gradle code used to create the zip artifact:

task buildZip(type: Zip) {
description ‘Create the ZIP file’
classifier = System.env.CLASSIFIER
extension = ‘zip’
def archive_loc = System.env.FOLDER_TO_ZIP
from archive_loc
}

Rajesh Kumar
Follow me
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x