> For the complete documentation index, see [llms.txt](https://blog.securescape.cc/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://blog.securescape.cc/offensive-security/red-team/offensive-development/offensive-devops/gitlab/build-artifacts.md).

# Build Artifacts

### Basic Artifact Output

Artifacts are files that are exported from our build step, such as binary executable files. We can easily add them with 2 more lines on our pipeline configuration file. [*More Details*](https://docs.gitlab.com/ee/ci/jobs/job_artifacts.html)

```yaml
image: golang:1.22

stages:
  - test
  - build

build:
  stage: build
  script:
    - "go build -o calculator"
    - "./calculator"
  artifacts: # Our change
    paths:
      - calculator # Filename

test:
  stage: test
  script:
    - "go test"
```

Save your changes to trigger a new deployment pipeline, then check if you can download the file

<figure><img src="/files/KpuA1lBxPeo41gEBHt7I" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/689YdZjjJa5L1pRzzBVn" alt=""><figcaption></figcaption></figure>

### Better ways of storing artifacts

Look into deploying your artifacts into a file server such as through SSH, SMB or NFS. Below is an example of using SSH for this.

* <https://devcodef1.com/news/1114431/gitlab-build-job-artifact-download>
