<p>As you guessed, <em>build</em> not necessarily means "compile". <em>Building</em> is a process of creating software from sources, which might include stuff like gathering dependencies, compiling, archiving, transforming code in any way, but also testing, deploying to different environments and promoting the artifacts between them.</p>

CC BY-SA 4.0
2019-01-19T00:33:03.460Z
Thanks for that explanation. 

What does "promoting" an artifact mean?
user1330287
CC BY-SA 4.0
2019-01-19T01:05:40.807Z
That's another question :) Basically moving it between environments through quality gates based on its quality. (Please don't forget to accept and vote up the answer if it helped).
JBaruch
CC BY-SA 4.0
2019-01-19T14:17:09.863Z
The term build may refer to the process by which source code is converted into a stand-alone form that can be run on a computer or to the form itself. The compilation process is one part of it

Promoting basically pushing the files to higher environment Dev-> Stage->Prod
Sunil
CC BY-SA 4.0
2019-01-21T13:10:32.220Z
welcome @user1330287! "promoting" can also be referenced as deployment either publishing, but due to different context the term is ambigous: https://devops.stackexchange.com/questions/4953/dealing-with-ambiguity-of-the-terms-publish-vs-deploy
Ta Mu
CC BY-SA 4.0
2019-01-19T00:29:26.857Z
2019-01-19T00:29:26.857Z
JBaruch
<p>Well, there is a bit of a mixed terminology here and term transfer. Jenkins is using the word <strong>Job</strong> to mean <em>automation task</em> and <strong>Build</strong> to mean single <em>execution of the automation task</em> at the current state of system and possibly some variables as input. Traditionally a <strong>Build</strong> is a substitute term used for any process that produces <strong>Derived Objects</strong> (see my answer <a href="https://devops.stackexchange.com/a/470/228">here</a>) and this mixing of terms leads often to confusion in the entire CI/CD process that I've tried to explain <a href="https://devops.stackexchange.com/a/4954/228">here</a>.</p>

CC BY-SA 4.0
2019-03-11T15:35:47.680Z
2019-03-11T15:35:47.680Z
Jiri Klouda
<p>It is important to understand the terms <strong>Job</strong> and <strong>Build</strong> from the jenkins standpoint.</p>

<p>In Jenkins, a user creates <strong>job(s) which is typically a configuration for running autonomous tasks</strong>. A job could be a task for building/packaging software, creating artifacts, deploying artifacts, creating help files, etc. This configuration may change from time to time.</p>

<p>Every time you run a job, Jenkins <code>compiles</code> the job configuration inside the project workspace to perform the defined steps. <strong>Each run of this job is called as a build</strong> and each step is called a <code>build step</code>. Since the environment around the job may change from build to build, any build may <code>Fail</code>(or become <code>Unstable</code>) during a run. Thus, the term - Build.</p>

CC BY-SA 4.0
2019-03-11T10:05:26.037Z
2019-03-12T08:21:12.883Z
2019-03-12T08:21:12.883Z
KatariaA
<p>I'm coming from Ops and I don't have a heavy software engineering background. In Jenkins, what is a "build" exactly and why is it named such? When I build a shell/powershell script, I'm not really compiling anything, am I? Then why is Jenkins "building" the source code. I thought building from source to binary is for compiled languages, unless Jenkis is using the word "build" in a more generic manner.</p>

<p>Please help me understand what's going on objectively. </p>

<jenkins><terminology><build-pipeline><software-engineering>
Jenkins: What is a build?
user1330287
# Jenkins: What is a build?

(Asked by: username_0 on 2019-01-18)

I'm coming from Ops and I don't have a heavy software engineering background. In Jenkins, what is a "build" exactly and why is it named such? When I build a shell/powershell script, I'm not really compiling anything, am I? Then why is Jenkins "building" the source code. I thought building from source to binary is for compiled languages, unless Jenkis is using the word "build" in a more generic manner.

Please help me understand what's going on objectively.

**Tags:** jenkins, terminology, build-pipeline, software-engineering


---

## 3 answers

### Answer by username_1 on 2019-01-19. Score: 11

As you guessed, *build* not necessarily means "compile". *Building* is a process of creating software from sources, which might include stuff like gathering dependencies, compiling, archiving, transforming code in any way, but also testing, deploying to different environments and promoting the artifacts between them.

> **Comments:**
> **username_0**: Thanks for that explanation.   What does "promoting" an artifact mean?  
> **username_1**: That's another question :) Basically moving it between environments through quality gates based on its quality. (Please don't forget to accept and vote up the answer if it helped).  
> **username_2**: The term build may refer to the process by which source code is converted into a stand-alone form that can be run on a computer or to the form itself. The compilation process is one part of it  Promoting basically pushing the files to higher environment Dev-> Stage->Prod  
> **username_3**: welcome @username_0! "promoting" can also be referenced as deployment either publishing, but due to different context the term is ambigous: https://devops.stackexchange.com/questions/4953/dealing-with-ambiguity-of-the-terms-publish-vs-deploy  

---

### Answer by username_4 on 2019-03-11. Score: 0

Well, there is a bit of a mixed terminology here and term transfer. Jenkins is using the word **Job** to mean *automation task* and **Build** to mean single *execution of the automation task* at the current state of system and possibly some variables as input. Traditionally a **Build** is a substitute term used for any process that produces **Derived Objects** (see my answer [here](https://devops.stackexchange.com/a/470/228)) and this mixing of terms leads often to confusion in the entire CI/CD process that I've tried to explain [here](https://devops.stackexchange.com/a/4954/228).


---

### Answer by username_5 on 2019-03-11. Score: 0

It is important to understand the terms **Job** and **Build** from the jenkins standpoint.

In Jenkins, a user creates **job(s) which is typically a configuration for running autonomous tasks**. A job could be a task for building/packaging software, creating artifacts, deploying artifacts, creating help files, etc. This configuration may change from time to time.

Every time you run a job, Jenkins `compiles` the job configuration inside the project workspace to perform the defined steps. **Each run of this job is called as a build** and each step is called a `build step`. Since the environment around the job may change from build to build, any build may `Fail`(or become `Unstable`) during a run. Thus, the term - Build.


---

