Newer
Older
workflow:
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event" || ($CI_PIPELINE_SOURCE == "push" && ($CI_COMMIT_BRANCH == "main" || $CI_COMMIT_BRANCH == "prod" || $CI_COMMIT_BRANCH == "dev"))
when: always
- when: never
environment_tag: |
if [ "$CI_COMMIT_BRANCH" == "prod" ]; then echo "prod"; else echo "dev"; fi
test_job:
stage: test
image: public.ecr.aws/docker/library/golang:1.21
rules:
- if: $CI_COMMIT_REF_NAME == "prod" || $CI_COMMIT_REF_NAME == "dev"
when: always
image: public.ecr.aws/docker/library/golang:1.21
script: |
GOARCH=amd64 GOOS=linux CGO_ENABLED=0 go build -o artifact.bin ./*.go
rules:
- if: $CI_COMMIT_REF_NAME == "prod" || $CI_COMMIT_REF_NAME == "dev"
when: always
image: docker:latest
services:
- docker:dind
- 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