diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 261fc4b8696eb0210fa1e4dd45c34f44248b5bf5..b9a5f32a07e591c876ec20b6cfbcfe049ad2491e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,110 +1,36 @@ -# # This file is a template, and might need editing before it works on your project. -# # To contribute improvements to CI/CD templates, please follow the Development guide at: -# # https://docs.gitlab.com/ee/development/cicd/templates.html -# # This specific template is located at: -# # https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/ci/templates/Getting-Started.gitlab-ci.yml - -# # This is a sample GitLab CI/CD configuration file that should run without any modifications. -# # It demonstrates a basic 3 stage CI/CD pipeline. Instead of real tests or scripts, -# # it uses echo commands to simulate the pipeline execution. -# # -# # A pipeline is composed of independent jobs that run scripts, grouped into stages. -# # Stages run in sequential order, but jobs within stages run in parallel. -# # -# # For more information, see: https://docs.gitlab.com/ee/ci/yaml/index.html#stages - -# stages: # List of stages for jobs, and their order of execution -# - build -# - test - -# image: node:16 - -# cache: -# paths: -# - node_modules/ - -# install_dependencies_job: # This job runs in the build stage, which runs first. -# stage: build - -# script: -# - echo "Installing dependencies..." -# - npm install -# - echo "Dependencies installed." -# artifacts: -# paths: -# - node_modules/ - - -# lint-test-job: # This job also runs in the test stage. -# stage: test # It can run at the same time as unit-test-job (in parallel). -# script: -# - echo "Linting the code..." -# - npm run lint -# - echo "Code-linting complete." -# artifacts: -# paths: -# - node_modules/ - -# unit-test-job: # This job runs in the test stage. -# stage: test # It only starts when the job in the build stage completes successfully. -# script: -# - echo "Running unit tests..." -# - npm run test:unit -- --coverage -# - echo "Unit tests complete." -# artifacts: -# paths: -# - node_modules/ - +image: node:16-alpine stages: - build - test - # - deploy + - deploy -install: - image: node:16-alpine # alpine/slim is a smaller image - stage: .pre # always first, no matter if it is listed in stages - cache: - key: NPM_DOWNLOAD_CACHE # a single-key-4-all-branches for install jobs +install_dependencies: + stage: build + cache: + key: $CI_COMMIT_REF_SLUG-$CI_PROJECT_DIR paths: - - .npm/ - before_script: - - cp .env.gitlab-testing .env + - node_modules/ script: - # define cache dir & use it npm! - - npm ci --cache .npm --prefer-offline - artifacts: - paths: - - node_modules/ - - .env + - npm ci + only: + changes: + - package-lock.json build: stage: build - needs: - - job: install - artifacts: true # true by default, grabs `node_modules` + cache: + key: $CI_COMMIT_REF_SLUG-$CI_PROJECT_DIR + paths: + - node_modules/ + policy: pull script: - npm run build artifacts: paths: - - dist/ # whereever your build results are stored + - build -test: +run_tests: stage: test needs: - - job: install - artifacts: true # grabs node_modules - - job: build - artifacts: true # grabs built files - script: - - npm test - -# deploy: -# stage: deploy -# needs: -# # does not need node_modules so don't state install as a need -# - job: build -# artifacts: true # grabs dist/ -# - job: test # must succeed -# artifacts: false # not needed -# script: -# - npm publish + - install_dependencies + script: npm run test:unit \ No newline at end of file