Define following CI variables:
REGISTRY_TOKEN- registry passwordREGISTRY_USER(optional, default:gitlab-ci-token)REGISTRY_URL(optional, default:registry.gitlab.com)DIST_DIR(optional, default:./dist) -npm buildoutput directory
| image: alpine | |
| cache: | |
| paths: | |
| - node_modules/ | |
| before_script: | |
| - DIST_DIR=$([ "$DIST_DIR" ] || echo "./dist") | |
| stages: | |
| - build | |
| - deploy | |
| build: | |
| image: node:lts | |
| stage: build | |
| script: | |
| - npm install | |
| - npm run build | |
| artifacts: | |
| paths: | |
| - "$DIST_DIR" | |
| deploy: | |
| stage: deploy | |
| only: | |
| - master | |
| dependencies: | |
| - build | |
| cache: {} | |
| script: | |
| - REGISTRY_URL=$([ "$REGISTRY_URL" ] || echo "registry.gitlab.com") | |
| - REGISTRY_USER=$([ "$REGISTRY_USER" ] || echo "gitlab-ci-token") | |
| - REGISTRY_PROJECT_URL="$REGISTRY_URL/$CI_PROJECT_PATH" | |
| - docker login -u gitlab-ci-token -p $REGISTRY_TOKEN $REGISTRY_URL | |
| - docker build --build-arg DIST_DIR=${DIST_DIR} -t $REGISTRY_PROJECT_URL . | |
| - docker push $REGISTRY_PROJECT_URL |
| FROM nginx:alpine | |
| ARG DIST_DIR=./dist | |
| WORKDIR /usr/share/nginx/html | |
| RUN rm -rf ./* | |
| COPY ${DIST_DIR}/* ./ | |
| EXPOSE 80 |