79 lines
2.3 KiB
YAML
79 lines
2.3 KiB
YAML
stages: # List of stages for jobs, and their order of execution
|
|
- build
|
|
- docker
|
|
- deploy
|
|
|
|
|
|
variables:
|
|
FF_USE_FASTZIP: "true"
|
|
# These can be specified per job or per pipeline
|
|
ARTIFACT_COMPRESSION_LEVEL: "fast"
|
|
CACHE_COMPRESSION_LEVEL: "fast"
|
|
CI_REGISTRY_IMAGE: docker.dergeorg.at/dergeorg
|
|
SERVICE: todo-frontend
|
|
Docker_name: gitlab-todo-frontend
|
|
TAG_LATEST: $CI_REGISTRY_IMAGE/$Docker_name:latest
|
|
Project_name: todo-frontend
|
|
Docker_url: docker.dergeorg.at
|
|
Docker_namespace: dergeorg
|
|
DOCKER_TAG: latest
|
|
ENV: test
|
|
PORT_HOST: 8889
|
|
PORT_CONTAINER: 80
|
|
EUREKA_HOSTNAME: 192.168.1.65
|
|
EUREKA_PORT: 9995
|
|
CONFIG_PORT: 1111
|
|
CONFIG_URL: service.todo.gitlab.dergeorg.at
|
|
CONFIG_HTTP: https
|
|
|
|
cache:
|
|
policy: pull-push
|
|
key: NPM_DOWNLOAD_CACHE
|
|
paths:
|
|
- .npm/
|
|
|
|
build-job: # Building jar file
|
|
image: node:lts-alpine
|
|
stage: build
|
|
script:
|
|
- ls src/environments/
|
|
- echo "$APPLICATION_TODO_FRONTEND_TS" > src/environments/environment.ts
|
|
- echo "$APPLICATION_TODO_FRONTEND_TS" > src/environments/environment.prod.ts
|
|
- npm ci --cache .npm --prefer-offline
|
|
- npm install -g @angular/cli
|
|
- ng build --prod
|
|
- ls
|
|
artifacts:
|
|
paths:
|
|
- dist/
|
|
|
|
|
|
publish-job: # Building docker image and publishing it
|
|
image: docker:latest
|
|
stage: docker
|
|
services:
|
|
- docker:dind
|
|
script:
|
|
- docker login -u $DOCKER_USER -p $DOCKER_PW $DOCKER_URL
|
|
- docker build -t $DOCKER_URL/$TAG_LATEST --cache-from $DOCKER_URL/$TAG_LATEST .
|
|
- docker push $DOCKER_URL/$TAG_LATEST
|
|
|
|
deploy-job: # Deploy docker image on ssh server
|
|
image: alpine:latest
|
|
stage: deploy
|
|
tags:
|
|
- deployment
|
|
before_script:
|
|
- 'command -v ssh-agent >/dev/null || ( apk add --update openssh )'
|
|
- eval $(ssh-agent -s)
|
|
- echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add -
|
|
- mkdir -p ~/.ssh
|
|
- chmod 700 ~/.ssh
|
|
- ssh-keyscan $SERVER_IP >> ~/.ssh/known_hosts
|
|
- chmod 644 ~/.ssh/known_hosts
|
|
script:
|
|
- ssh $SSH_USER@$SERVER_IP "docker login $DOCKER_URL -u $DOCKER_USER -p $DOCKER_PW"
|
|
- ssh $SSH_USER@$SERVER_IP "docker push $DOCKER_URL/$TAG_LATEST"
|
|
- ssh $SSH_USER@$SERVER_IP "docker container rm -f $Docker_name || true"
|
|
- ssh $SSH_USER@$SERVER_IP "docker run -it -d --name $Docker_name -p $PORT_HOST:$PORT_CONTAINER $DOCKER_URL/$TAG_LATEST"
|