<p>In a CI/CD pipeline a build step is whatever you want it to be.  It is the equivalent of a function or procedure from a traditional programming language.  Examples of build steps from a CI/CD environment:</p>
<ul>
<li>setup a clean build or test environment by spinning up instances, starting databases, loading data, etc.</li>
<li>get code from github/gitlab/etc.</li>
<li>compile a component of the application</li>
<li>send artifact from previous build step to a repo</li>
</ul>
<p>Notice that in the CI/CD world a build step is not necessarily building anything, but it might be preparing something to be built or doing something with an artifact of a build.</p>

CC BY-SA 4.0
2020-11-01T02:14:32.603Z
2020-11-01T02:14:32.603Z
chicks
<p>In my experience &quot;build step&quot; is synonymous with &quot;compilation&quot;, e.g. it's the step that builds a set of output files (binary, etc.).</p>

CC BY-SA 4.0
2020-10-30T15:17:38.890Z
2020-10-30T15:17:38.890Z
Derek Pedersen
<p>The precise answer will depend on the context in which build step is used. However, on a high level as per me, it is always relative to the deploy process. Build step is just before the deploy step.</p>
<p>Basically build involves making the application completely ready (compiling, linking, uploading artifacts etc or whatever is involved) so that we are good to go ahead and deploy it to webservers/containers that will eventually serve the requests</p>

CC BY-SA 4.0
2021-08-08T14:52:46.313Z
2021-08-08T14:52:46.313Z
AdityaKapreShrewsburyBoston
<p>This gives a good overview, in my experience, build steps seem synonymous with deployment steps not just compiling code.</p>
<p><a href="https://docs.platform.sh/overview/build-deploy.html" rel="nofollow noreferrer">https://docs.platform.sh/overview/build-deploy.html</a></p>

CC BY-SA 4.0
2020-10-30T17:55:12.707Z
2020-10-30T17:55:12.707Z
Mark Scheck
<p>E.g. Under the Docker context...</p>
<p>If you take it literally, you can define 'Build' step to wrap up all the stuff build the actual image. But stage names don't quite follow any name conventions. So build can be literally whatever you want to.</p>

CC BY-SA 4.0
2021-08-07T03:21:34.553Z
2021-08-07T03:21:34.553Z
the_piper
<p>With all respect, but the previous 2 answers appear to me like misleading ...</p>
<p>In the big iron world, aka mainframe, the build step is often, though not always, a process that consists of at least 2 steps:</p>
<ul>
<li><p>step 1 uses a program source, coded by a developer in whatever programming language (cobol, c, fortran, pl1, assembler, etc) as input, and then transforms that input in an object deck (which is not yet an executable ...). That transformation is typically done by a program called a &quot;compiler&quot; (each program language can have a zillion versions of such compiler, for cobol there is cobol vs, cobol le, cobol 2, and what not).</p>
</li>
<li><p>step 2 then uses the object deck (output from step1), to transform it into an executable program, e.g by staticically linking (called) sub-programs into it also. That transformation is typically done by a program called a &quot;linker&quot;.</p>
</li>
</ul>
<p>The complete set of compile-steps and link-steps is often bundled together in some sort of script (procedure), which in mainframe is often done via JCL (if compile/link is done in batch), or (eg) REXX (if compile/link is done online). And this script is actually what is called a &quot;<em><strong>build procedure</strong></em>&quot;.</p>
<p>With the above in mind, go checkout any other OS where you also have compiles, links, etc. Sooner or later, you'll recognize similar compilers and linkers.</p>
<p>Attention: the result of such build procedure (an executable) is typically stored in some sort of work area (like a temp folder). And from there it still needs to be shipped (copied, FTPed, whatever) to somewhere else (e.g. an authorized folder or library), before it can actually be used to execute the executable (e.g. after appropriate approvals for an emergency fix have been gathered). That shipment process is what deployment of an executable is all about (as compared to building the executable).</p>
<p>And better not use that deployment target directly as output of your build procedure (if you do that, you basically open up your life environments to ... pretty much any developer, which is not what you want if you are a bank, or if your fixing some piece of software in a plane ... flying at 30.000 feet).</p>

CC BY-SA 4.0
2020-10-30T20:43:48.347Z
2020-10-30T20:59:46.940Z
2020-10-30T20:59:46.940Z
Pierre.Vriens
<p>The term <em><strong>build step</strong></em> is used everywhere, yet I searched both google.com and qwant.com to no avail. That baffles my mind.</p>
<p>I also searched for a developer terminology index. Anyone has a good explanation of this term?</p>

CC BY-SA 4.0
2020-11-05T17:57:14.260Z
Maybe an example of where you've seen it, to add some context?
jrw32982
<terminology><builds><software-engineering>
What does "build step" mean?
Smurf Developer
# What does "build step" mean?

(Asked by: username_0 on 2020-10-30)

The term ***build step*** is used everywhere, yet I searched both google.com and qwant.com to no avail. That baffles my mind.

I also searched for a developer terminology index. Anyone has a good explanation of this term?

**Tags:** terminology, builds, software-engineering

> **Comments:**
> **username_1**: Maybe an example of where you've seen it, to add some context?  

---

## 6 answers

### Answer by username_2 on 2020-11-01. Score: 3

In a CI/CD pipeline a build step is whatever you want it to be. It is the equivalent of a function or procedure from a traditional programming language. Examples of build steps from a CI/CD environment:

* setup a clean build or test environment by spinning up instances, starting databases, loading data, etc.
* get code from github/gitlab/etc.
* compile a component of the application
* send artifact from previous build step to a repo

Notice that in the CI/CD world a build step is not necessarily building anything, but it might be preparing something to be built or doing something with an artifact of a build.


---

### Answer by username_3 on 2020-10-30. Score: 2

In my experience "build step" is synonymous with "compilation", e.g. it's the step that builds a set of output files (binary, etc.).


---

### Answer by username_4 on 2021-08-08. Score: 1

The precise answer will depend on the context in which build step is used. However, on a high level as per me, it is always relative to the deploy process. Build step is just before the deploy step.

Basically build involves making the application completely ready (compiling, linking, uploading artifacts etc or whatever is involved) so that we are good to go ahead and deploy it to webservers/containers that will eventually serve the requests


---

### Answer by username_5 on 2020-10-30. Score: 0

This gives a good overview, in my experience, build steps seem synonymous with deployment steps not just compiling code.

<https://docs.platform.sh/overview/build-deploy.html>


---

### Answer by username_6 on 2021-08-07. Score: 0

E.g. Under the Docker context...

If you take it literally, you can define 'Build' step to wrap up all the stuff build the actual image. But stage names don't quite follow any name conventions. So build can be literally whatever you want to.


---

### Answer by username_7 on 2020-10-30. Score: 0

With all respect, but the previous 2 answers appear to me like misleading ...

In the big iron world, aka mainframe, the build step is often, though not always, a process that consists of at least 2 steps:

* step 1 uses a program source, coded by a developer in whatever programming language (cobol, c, fortran, pl1, assembler, etc) as input, and then transforms that input in an object deck (which is not yet an executable ...). That transformation is typically done by a program called a "compiler" (each program language can have a zillion versions of such compiler, for cobol there is cobol vs, cobol le, cobol 2, and what not).
* step 2 then uses the object deck (output from step1), to transform it into an executable program, e.g by staticically linking (called) sub-programs into it also. That transformation is typically done by a program called a "linker".

The complete set of compile-steps and link-steps is often bundled together in some sort of script (procedure), which in mainframe is often done via JCL (if compile/link is done in batch), or (eg) REXX (if compile/link is done online). And this script is actually what is called a "***build procedure***".

With the above in mind, go checkout any other OS where you also have compiles, links, etc. Sooner or later, you'll recognize similar compilers and linkers.

Attention: the result of such build procedure (an executable) is typically stored in some sort of work area (like a temp folder). And from there it still needs to be shipped (copied, FTPed, whatever) to somewhere else (e.g. an authorized folder or library), before it can actually be used to execute the executable (e.g. after appropriate approvals for an emergency fix have been gathered). That shipment process is what deployment of an executable is all about (as compared to building the executable).

And better not use that deployment target directly as output of your build procedure (if you do that, you basically open up your life environments to ... pretty much any developer, which is not what you want if you are a bank, or if your fixing some piece of software in a plane ... flying at 30.000 feet).


---

