diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..9b9f80c --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,65 @@ +# avoids unecessary repulling of node modules +cache: + paths: + - node_modules/ + +stages: + - lint + #- test + - build + - deploy + +variables: + IMAGE_TAG: $CI_REGISTRY_IMAGE:$CI_COMMIT_TAG + IMAGE_LATEST: $CI_REGISTRY_IMAGE:latest + + +.node: + image: ${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/node:latest + + +.docker: + image: ${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/docker:20 + + +linter: + image: !reference [.node, image] + stage: lint + before_script: + - yarn install + script: + - yarn lint + + +build: + image: !reference [.docker, image] + stage: build + before_script: + - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY + script: + - docker build -t $IMAGE_TAG . + after_script: + - docker save $IMAGE_TAG > docker.tar + artifacts: + expire_in: 30 mins + paths: + - docker.tar + only: + - tags + + +push: + image: !reference [.docker, image] + stage: deploy + needs: + - job: build + artifacts: true + before_script: + - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY + - docker load -i docker.tar + script: + - docker tag $IMAGE_TAG $IMAGE_LATEST + - docker push $IMAGE_TAG + - docker push $IMAGE_LATEST + only: + - tags