default: image: docker:git stages: - test - build - deploy test:go: stage: test image: golang:alpine variables: GOPATH: $CI_PROJECT_DIR/.go before_script: - mkdir -p .go script: - go mod download - go test ./... -v -coverprofile=coverage.txt -covermode count - go get github.com/boumenot/gocover-cobertura - go run github.com/boumenot/gocover-cobertura < coverage.txt > coverage.xml cache: paths: - .go/pkg/mod/ artifacts: reports: coverage_report: coverage_format: cobertura path: coverage.xml test:helm: stage: test image: ghcr.io/vojtechmares/toolkit:latest script: - helm lint ./deploy - helm template ./deploy --values deploy/values.test.yaml build:httpserver: stage: build variables: IMAGE: $CI_REGISTRY_IMAGE/httpserver TAG: $CI_COMMIT_REF_SLUG-$CI_COMMIT_SHORT_SHA before_script: - echo $CI_REGISTRY_PASSWORD | docker login -u $CI_REGISTRY_USER --password-stdin $CI_REGISTRY - docker info script: - docker buildx create --name yggdrasil --use - docker buildx build --provenance=false --platform linux/amd64,linux/arm64 -t $IMAGE:$TAG -f build/package/httpserver/Dockerfile --push . - docker manifest inspect $IMAGE:$TAG build:migrations: stage: build variables: IMAGE: $CI_REGISTRY_IMAGE/migrations TAG: $CI_COMMIT_REF_SLUG-$CI_COMMIT_SHORT_SHA before_script: - echo $CI_REGISTRY_PASSWORD | docker login -u $CI_REGISTRY_USER --password-stdin $CI_REGISTRY - docker info script: - docker buildx create --name yggdrasil --use - docker buildx build --provenance=false --platform linux/amd64,linux/arm64 -t $IMAGE:$TAG -f build/package/migrations/Dockerfile --push . - docker manifest inspect $IMAGE:$TAG deploy:staging: stage: deploy image: ghcr.io/vojtechmares/toolkit:latest rules: - if: $CI_COMMIT_BRANCH == "main" variables: TAG: $CI_COMMIT_REF_SLUG-$CI_COMMIT_SHORT_SHA NAMESPACE: yggdrasil-staging GIT_DEPTH: 1 # shallow clone environment: name: staging url: https://staging.yggdrasil.vmdevel.cz script: - > helm upgrade --install --namespace $NAMESPACE --create-namespace \ api ./deploy \ --values deploy/values.staging.yaml \ --set image.tag=$TAG \ --set migrations.image.tag=$TAG \ --set imageCredentials.username=$REGISTRY_USERNAME \ --set imageCredentials.password=$REGISTRY_PASSWORD \ --set config.database.url=$DATABASE_URL