Skip to content
Snippets Groups Projects
.gitlab-ci.yml 1.05 KiB
Newer Older
schnarkus's avatar
schnarkus committed
---
variables:
schnarkus's avatar
schnarkus committed
  version: 0.0.$CI_PIPELINE_IID
stages:
  - test
  - build
  - publish
schnarkus's avatar
schnarkus committed
test_job:
  stage: test
  image: public.ecr.aws/docker/library/golang:1.21
schnarkus's avatar
schnarkus committed
    - go get -t ./...
    - go test -race -v ./...
build_job:
  stage: build
  image: public.ecr.aws/docker/library/golang:1.21
  parallel:
    matrix:
schnarkus's avatar
schnarkus committed
      - GOOS:
          - linux
          - darwin
          - windows
      - GOARCH:
          - amd64
          - arm64
  script: |
    go build -o webservice_$GOOS_$GOARCH.bin ./*.go
  artifacts:
    paths:
schnarkus's avatar
schnarkus committed
      - webservice_$GOOS_$GOARCH.bin
    expire_in: 30 sec
schnarkus's avatar
schnarkus committed
publish_job:
  stage: publish
  image: public.ecr.aws/ubuntu/ubuntu:22.04_stable
  tags: docker-privileged
schnarkus's avatar
schnarkus committed
  dependencies:
    - build_job
  before_script:
    - apt update
    - apt install -y ca-certificates curl
    - update-ca-certificates
schnarkus's avatar
schnarkus committed
  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