--- variables: version: 0.0.$CI_PIPELINE_IID stages: - test - build - publish test_job: stage: test image: public.ecr.aws/docker/library/golang:1.21 script: - go get -t ./... - go test -race -v ./... build_job: stage: build image: public.ecr.aws/docker/library/golang:1.21 parallel: matrix: - GOOS: - linux - darwin - windows - GOARCH: - amd64 - arm64 script: | go build -o webservice_$GOOS_$GOARCH.bin ./*.go artifacts: paths: - webservice_$GOOS_$GOARCH.bin expire_in: 30 sec publish_job: stage: publish image: public.ecr.aws/ubuntu/ubuntu:22.04_stable tags: docker-privileged dependencies: - build_job before_script: - apt update - apt install -y ca-certificates curl - update-ca-certificates script: > for file in $(ls webservice_*); do curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" \ --upload-file "./$file" \ "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/artifacts/${version}/$file" done