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: 5 min 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