What are Build and Package Manager Tools?
Assume you are a group of developers working on an application for your startup or a project in a big company.
When you have done the implementation of your application, it must be made available to end users.
So it must be Deployed, which means that the application you created and stored in the code repository must find its way to the Production Server and run there.
So, How Do You Deploy a Software Application? That is, how do you move your code, its dependencies, and everything else it requires to run to a Server or location where the application will run?
It could be a Production or Staging server that is accessible to end users.
You package your application into a single movable file, then upload it to a server and run it there; this single package file is referred to as an application Artifact.
Packaging an application is also known as building the code into a single Artifact that you can move around and Deploy or install on servers. This will involve compiling the code from hundreds of files into a single file because you can't move around hundreds of files and compressing to make it smaller so that it isn't too large and slow to move around.
After creating the Artifact, we not only copy it to the server, but we also keep it in Storage. In case we need to deploy it more than once.
For example, if we deploy an Artifact in Deployment Server, we will then deploy the same Artifact in the Test environment, and if the Production environment or Development Server where we copied and started the Artifact directly crashes, we will need a backup of that Artifact to Deploy it again. So there are lot of different use cases.
The Storage where we keep Artifact after we build it is called Artifact Repository.
Example of Artifact Repository is Nexus, JFrog Artifactory Repository.
When you release a new version of your application or want to make a new version available for testing before release, you create an Artifact, save it to the Artifact repository, and deploy it to the server.
What kind of file is this Artifact? 🤷
Well it depends on your programming language because Artifact file is different for each programming language.
For example, for Java application the Artifact will be JAR or WAR file and it will include whole code with all dependencies your code uses.