Could someone please explain to me the idea of artifacts in the build process?
I have the workspace directory where I check out the code to compile and run my ant scripts etc. At the end, in my case, I get a jar file that's ready to install. Is that considered to be the artifact?
Where should I tell my build script to put the jar file? In the workspace directory? My jar file gets a unique filename depending on variables like BUILD_ID
and such, how can I tell Jenkins which jar file to pick?
EDIT: Okay, so i tried doing something like this:
The path does not exist yet in my workspace, because the build script is supposed to create it, and of course, the .jar
and .properties
files are not there because they haven't been generated yet. Why does it give me an error then? Seems like I'm missing something.
Also, does Jenkins delete the artifacts after each build (not the archived artifacts, I know I can tell it to delete those)? Otherwise it will clog the hard drive pretty quickly.
Your understanding is correct, an artifact in the Jenkins sense is the result of a build - the intended output of the build process.
A common convention is to put the result of a build into a build
, target
or bin
directory.
The Jenkins archiver can use globs (target/*.jar
) to easily pick up the right file even if you have a unique name per build.