variables: CI_REGISTRY_IMAGE_NG: "$CI_REGISTRY_IMAGE:latest-ng" CI_REGISTRY_IMAGE_FRONTEND: "$CI_REGISTRY_IMAGE:latest" before_script: - docker info - docker login -u $CI_USERNAME -p $CI_ACCESS_TOKEN $CI_REGISTRY stages: - build - package - deploy build: stage: build script: - docker pull $CI_REGISTRY_IMAGE_NG || true - docker build --cache-from $CI_REGISTRY_IMAGE_NG -f ng.Dockerfile -t $CI_REGISTRY_IMAGE_NG . - docker push $CI_REGISTRY_IMAGE_NG package: stage: package needs: ['build'] only: refs: - master variables: PACKAGE_CONTAINER_NAME: "cre_frontend_package" ARTIFACT_NAME: "ColorRecipesExplorer-frontend-$CI_PIPELINE_IID" script: - apk update - apk add --no-cache zip - mkdir dist - docker run --name $PACKAGE_CONTAINER_NAME $CI_REGISTRY_IMAGE_NG ng build --configuration=$ANGULAR_CONFIGURATION --output-hashing=none --stats-json --source-map=false - docker cp $PACKAGE_CONTAINER_NAME:/usr/src/cre/dist/color-recipes-explorer-frontend/ dist/ - zip -r $ARTIFACT_NAME.zip dist/ - docker build -t $CI_REGISTRY_IMAGE_FRONTEND --build-arg ARTIFACT_NAME=$ARTIFACT_NAME . - docker push $CI_REGISTRY_IMAGE_FRONTEND after_script: - docker stop $PACKAGE_CONTAINER_NAME || true - docker rm $PACKAGE_CONTAINER_NAME || true artifacts: paths: - $ARTIFACT_NAME.zip expire_in: 1 week deploy: stage: deploy image: alpine:latest needs: ['package'] only: refs: - master variables: DEPLOYED_CONTAINER_NAME: "cre_frontend" before_script: - apk update - apk add --no-cache openssh-client - mkdir -p ~/.ssh - echo "$SSH_PRIVATE_KEY" | tr -d '\r' > ~/.ssh/id_rsa - chmod 700 ~/.ssh/id_rsa - eval $(ssh-agent -s) - ssh-add ~/.ssh/id_rsa - ssh-keyscan -p $DEPLOYMENT_SERVER_SSH_PORT -H $DEPLOYMENT_SERVER >> ~/.ssh/known_hosts - '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config' script: - ssh -p $DEPLOYMENT_SERVER_SSH_PORT $DEPLOYMENT_SERVER_USERNAME@$DEPLOYMENT_SERVER "docker stop $DEPLOYED_CONTAINER_NAME || true && docker rm $DEPLOYED_CONTAINER_NAME || true" - ssh -p $DEPLOYMENT_SERVER_SSH_PORT $DEPLOYMENT_SERVER_USERNAME@$DEPLOYMENT_SERVER "docker login -u $CI_USERNAME -p $CI_ACCESS_TOKEN $CI_REGISTRY && docker pull $CI_REGISTRY_IMAGE_FRONTEND" - ssh -p $DEPLOYMENT_SERVER_SSH_PORT $DEPLOYMENT_SERVER_USERNAME@$DEPLOYMENT_SERVER "docker run -d -p $PORT:80 --name=$DEPLOYED_CONTAINER_NAME $CI_REGISTRY_IMAGE_FRONTEND"