Skip to content

Instantly share code, notes, and snippets.

@albertusdev
Created February 25, 2019 17:42
Show Gist options
  • Save albertusdev/e1218c802661490b47ef4a7b6f6f67f5 to your computer and use it in GitHub Desktop.
Save albertusdev/e1218c802661490b47ef4a7b6f6f67f5 to your computer and use it in GitHub Desktop.
GitLab CI configuration for LEARNFAZZ
stages:
- test
- deploy
variables:
DOCKER_IMAGE_PREFIX: "registry.docker.ppl.cs.ui.ac.id/pplb4"
REPO_NAME: "gitlab.cs.ui.ac.id/ppl-fasilkom-ui/2019/PPLB4"
back-end:test:
stage: test
image: golang
only:
changes:
- back-end/**/*
- .gitlab-ci.yml
- Dockerfile
before_script:
- mkdir -p $GOPATH/src/$REPO_NAME
- ln -svf $CI_PROJECT_DIR/* $GOPATH/src/$REPO_NAME
- cd $GOPATH/src/$REPO_NAME
coverage: '/coverage: \d+\.\d+\%/'
script:
- cd back-end/
- mkdir -p coverage/
- go test -v -cover -coverprofile=coverage/coverage.out
- go tool cover -html=coverage/coverage.out -o=coverage/index.html
artifacts:
name: coverage-back-end
paths:
- $CI_PROJECT_DIR/back-end/coverage
front-end:test:
stage: test
image: jro7/flutter_lcov
script:
- cd front-end/
- flutter test --coverage
- lcov --summary coverage/lcov.info
- genhtml coverage/lcov.info --output=coverage
coverage: '/lines......: \d+\.\d+\%/'
artifacts:
name: coverage-front-end
paths:
- $CI_PROJECT_DIR/front-end/coverage
only:
changes:
- front-end/**/*
- .gitlab-ci.yml
- Dockerfile
.deployment-script: &deployment-script
image: gitlab/dind:latest
stage: deploy
tags:
- docker
before_script:
- docker info
- if [ $CI_COMMIT_TAG ]; then DOCKER_IMAGE_VERSION=$CI_COMMIT_TAG; else DOCKER_IMAGE_VERSION=$CI_COMMIT_SHA_SHORT; fi
- if [ ! $DOCKER_IMAGE_VERSION ]; then DOCKER_IMAGE_VERSION=latest; fi
script:
- cd $TYPE/
- DOCKER_IMAGE_TAG_NAME=$DOCKER_IMAGE_PREFIX/$TYPE
- docker build -t $DOCKER_IMAGE_TAG_NAME:$ENVIRONMENT_NAME -t $DOCKER_IMAGE_TAG_NAME:$DOCKER_IMAGE_VERSION .
- if [[ $ENVIRONMENT_NAME =~ production ]]; then docker build -t $DOCKER_IMAGE_TAG_NAME:latest .; fi
- docker push $DOCKER_IMAGE_TAG_NAME
back-end:deploy-to-production:
<<: *deployment-script
variables:
TYPE: "back-end"
ENVIRONMENT_NAME: "production"
only:
refs:
- master
changes:
- back-end/**/*
- .gitlab-ci.yml
environment:
name: production
back-end:deploy-to-staging:
<<: *deployment-script
variables:
TYPE: "back-end"
ENVIRONMENT_NAME: "staging"
only:
refs:
- staging
changes:
- back-end/**/*
- .gitlab-ci.yml
environment:
name: staging
back-end:deploy-to-development:
<<: *deployment-script
variables:
ENVIRONMENT_NAME: "development"
TYPE: "back-end"
only:
refs:
- development
changes:
- back-end/**/*
- .gitlab-ci.yml
environment:
name: development
front-end:deploy-to-development:
<<: *deployment-script
variables:
ENVIRONMENT_NAME: "development"
TYPE: "front-end"
only:
refs:
- development
changes:
- front-end/**/*
- .gitlab-ci.yml
environment:
name: development
front-end:deploy-to-staging:
<<: *deployment-script
variables:
ENVIRONMENT_NAME: "staging"
only:
refs:
- staging
changes:
- front-end/**/*
- .gitlab-ci.yml
environment:
name: staging
front-end:deploy-to-production:
<<: *deployment-script
variables:
ENVIRONMENT_NAME: "production"
TYPE: "front-end"
only:
refs:
- master
changes:
- front-end/**/*
- .gitlab-ci.yml
environment:
name: production
pages:back-end:
image: alpine
stage: deploy
dependencies:
- back-end:test
script:
- mkdir -p public/coverage-back-end
- mv back-end/coverage/* public/coverage-back-end/
artifacts:
paths:
- public
only:
refs:
- master
- staging
- development
changes:
- back-end/**/*
- .gitlab-ci.yml
pages:front-end:
image: alpine
stage: deploy
dependencies:
- front-end:test
script:
- mkdir -p public/coverage-front-end
- mv front-end/coverage/* public/coverage-front-end/
artifacts:
paths:
- public
only:
refs:
- master
- staging
- development
changes:
- front-end/**/*
- .gitlab-ci.yml
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment