image:registry.hub.docker.com/library/golang:1.21# Official Docker image provided by Go. It contains pre-configured environment for building and running Go applications.
script:
-go get -t ./...# Installs dependencies, including those for testing
-go test -race -v ./...# Run tests with race detection enabled
job_build_artifact:
stage:build
rules:# Conditions under which this job should run
-if:$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "main"# Run this job only for merge request event into main.
when:always
image:registry.hub.docker.com/library/golang:1.21
script:
-go get -t ./...# Installs dependencies
-go build -o ./artifact.bin ./*.go# Builds the Go application and outputs a binary named artifact.bin
artifacts:
paths:# Specifies the paths to the files that are to be saved as artifacts after the job has been completed.
-./artifact.bin
expire_in:1 week
hello-world-job:
job_publish_artifact:
stage:publish
rules:# Conditions under which this job should run
-if:$CI_PIPELINE_SOURCE == "push" && $CI_MERGE_COMMIT_REF_NAME =~ /main/# Run this job only for merge request event into main.
when:always
image:curlimages/curl:latest# Custom image with curl
tags:
-docker-privileged
dependencies:
-job_build_artifact
script:
script:
-'ls-al./'
-echo "Publishing artifact..."
-ls -al# List files to confirm artifact.bin exists