84 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			84 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
| 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
 |