Skip to content
Snippets Groups Projects
.gitlab-ci.yml 1.53 KiB
Newer Older
schnarkus's avatar
schnarkus committed
---
schnarkus's avatar
schnarkus committed
    - if: $CI_PIPELINE_SOURCE == "merge_request_event" || ($CI_PIPELINE_SOURCE == "push" && ($CI_COMMIT_BRANCH == "main" || $CI_COMMIT_BRANCH == "prod" || $CI_COMMIT_BRANCH == "dev"))
variables:
schnarkus's avatar
schnarkus committed
  version: 0.0.$CI_PIPELINE_IID
  environment_tag: |
    if [ "$CI_COMMIT_BRANCH" == "prod" ]; then echo "prod"; else echo "dev"; fi
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
schnarkus's avatar
schnarkus committed
    - if: $CI_COMMIT_REF_NAME == "prod" || $CI_COMMIT_REF_NAME == "dev"
  image: public.ecr.aws/docker/library/golang:1.21
  script: |
    GOARCH=amd64 GOOS=linux CGO_ENABLED=0 go build -o artifact.bin ./*.go
  artifacts:
    paths:
schnarkus's avatar
schnarkus committed
    expire_in: 5 min
schnarkus's avatar
schnarkus committed
publish_job:
  stage: publish
schnarkus's avatar
schnarkus committed
    - if: $CI_COMMIT_REF_NAME == "prod" || $CI_COMMIT_REF_NAME == "dev"
  image: docker:latest
  services:
    - docker:dind
schnarkus's avatar
schnarkus committed
  tags:
    - docker-privileged
schnarkus's avatar
schnarkus committed
  dependencies:
    - build_job
    - docker build -t $CI_REGISTRY_IMAGE:$version -t $CI_REGISTRY_IMAGE:latest -t $CI_REGISTRY_IMAGE:$environment_tag -f Containerfile .
    - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
    - docker push $CI_REGISTRY_IMAGE:$version
    - docker push $CI_REGISTRY_IMAGE:latest
    - docker push $CI_REGISTRY_IMAGE:$environment_tag
  after_script:
    - docker logout $CI_REGISTRY