> 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="https://1797977785-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FjrIJ5xrJuOVgeeYdKNB5%2Fuploads%2FSIQXjDy3rixfRMtiCraL%2Fimage.png?alt=media&amp;token=73957888-d0ca-4a07-9346-424de19b079b" alt=""><figcaption></figcaption></figure>

<figure><img src="https://1797977785-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FjrIJ5xrJuOVgeeYdKNB5%2Fuploads%2FAucLBKTwOQBxHB74AsEd%2Fimage.png?alt=media&amp;token=fcb7b73d-0ac9-45f6-95c2-dcb079ec8f45" 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>
