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