Commit 3ed3e643 authored by Ilya Rassadin's avatar Ilya Rassadin
Browse files

Add parametrized JS lint/build/deploy templates

- Add .default_changes.js_changes anchor in before_script.yml for shared
  file-change lists referenced via !reference across all three JS templates
- Parametrize .lint_js with JS_RESOURCES_ROOT/JS_NPM_SCRIPT variables and
  switch from only: to rules: (runs on protected branches and MR events)
- Add .build_js to .build_composer.yml with JS_BUILD_OUTPUT artifact path
- Add .deploy_js_files_to_server to .deploy_code_to_server.yml
- Update gitlab-ci-template.yml with commented examples for default and
  custom-path (e.g. resources-terminal) consumer overrides
- Extract deploy_js_files_to_server.sh in integration test script extractor
- Add SSH and rsync-module integration tests for the JS deploy job
parent 6b79cb9f
Loading
Loading
Loading
Loading
+19 −0
Original line number Diff line number Diff line
@@ -70,6 +70,25 @@
    echo "No autoload adjustments are needed."
  fi

.build_js:
  stage: build
  variables:
    JS_RESOURCES_ROOT: resources
    JS_BUILD_OUTPUT: new/build
    JS_NPM_SCRIPT: prod
  script:
    - cd $CI_PROJECT_DIR && npm install && npm run $JS_NPM_SCRIPT
  artifacts:
    paths:
      - "$JS_BUILD_OUTPUT/"
    expire_in: 1 week
  rules:
    - if: $CI_COMMIT_REF_PROTECTED == 'true'
      changes:
        - !reference [.default_changes, js_changes]
        - resources/js/**/*
        - resources/sass/**/*

.build_composer_dev:
  stage: prebuild
  image: registry.cetera.su/boilerplate/docker/php_composer:8.4
+18 −0
Original line number Diff line number Diff line
@@ -80,6 +80,24 @@
      - www/**/*
      - .gitlab-ci.yml

.deploy_js_files_to_server:
  extends: .before_deploy_code
  variables:
    JS_BUILD_OUTPUT: new/build
    RSYNC_PARAMS: '--delete'
  dependencies:
    - setup_environment_vars
  script:
    - |
      rsync $RSYNC_ADMIN_PARAMS $RSYNC_PARAMS -e "ssh $SSH_OPTS" \
        $CI_PROJECT_DIR/$JS_BUILD_OUTPUT/ $DEPLOY_HOST_PATH/$JS_BUILD_OUTPUT/
  rules:
    - if: $CI_COMMIT_REF_PROTECTED == 'true'
      changes:
        - !reference [.default_changes, js_changes]
        - resources/js/**/*
        - resources/sass/**/*

deploy_autotests_to_server:
  extends: .before_deploy_code
  script:
+12 −0
Original line number Diff line number Diff line
@@ -7,6 +7,18 @@ before_script:
  - 'which perl || (apt-get update -y && apt-get install perl -y)'
  - source $CI_PROJECT_DIR/.env.project

.default_changes:
  js_changes:
    - .babelrc.js
    - .eslintrc.js
    - .lintstagedrc.js
    - .gitlab-ci.yml
    - .prettierrc.js
    - package.json
    - package-lock.json
    - webpack.config.js
    - webpack.mix.js

.set_layouts: &set_layouts |
  cd $CI_PROJECT_DIR/working/ && export LAYOUTS=(`ls -1 -d ./*/|perl -nE 's{^\./(.+)/$}{$1}; print if /^[^.]/'`)

+58 −0
Original line number Diff line number Diff line
@@ -21,3 +21,61 @@ include:

# deploy_composer_files_to_server:
#   extends: .deploy_composer_files_to_server

# --- JS build/lint/deploy (default paths: resources/js, build output: new/build) ---

# lint_js:
#   extends: .lint_js

# build_js:
#   extends: .build_js
#   dependencies:
#     - setup_environment_vars

# deploy_js_files_to_server:
#   extends: .deploy_js_files_to_server
#   dependencies:
#     - setup_environment_vars
#     - build_js

# --- JS with non-standard paths (example: resources-terminal → terminal/build) ---

# lint_js:
#   extends: .lint_js
#   variables:
#     JS_RESOURCES_ROOT: resources-terminal
#     JS_NPM_SCRIPT: prod-terminal
#   rules:
#     - if: $CI_COMMIT_REF_PROTECTED == 'true' || $CI_PIPELINE_SOURCE == "merge_request_event"
#       changes:
#         - !reference [.default_changes, js_changes]
#         - resources-terminal/js/**/*

# build_js:
#   extends: .build_js
#   variables:
#     JS_RESOURCES_ROOT: resources-terminal
#     JS_BUILD_OUTPUT: terminal/build
#     JS_NPM_SCRIPT: prod-terminal
#   dependencies:
#     - setup_environment_vars
#   rules:
#     - if: $CI_COMMIT_REF_PROTECTED == 'true'
#       changes:
#         - !reference [.default_changes, js_changes]
#         - resources-terminal/js/**/*
#         - resources-terminal/sass/**/*

# deploy_js_files_to_server:
#   extends: .deploy_js_files_to_server
#   variables:
#     JS_BUILD_OUTPUT: terminal/build
#   dependencies:
#     - setup_environment_vars
#     - build_js
#   rules:
#     - if: $CI_COMMIT_REF_PROTECTED == 'true'
#       changes:
#         - !reference [.default_changes, js_changes]
#         - resources-terminal/js/**/*
#         - resources-terminal/sass/**/*
+9 −13
Original line number Diff line number Diff line
.lint_js:
  variables:
    JS_RESOURCES_ROOT: resources
    JS_NPM_SCRIPT: prod
  stage: test
  only:
  script:
    - cd $CI_PROJECT_DIR && npm install && npm run lint-$JS_NPM_SCRIPT $JS_RESOURCES_ROOT/js/**
  rules:
    - if: $CI_COMMIT_REF_PROTECTED == 'true' || $CI_PIPELINE_SOURCE == "merge_request_event"
      changes:
      - .babelrc.js
      - .eslintrc.js
      - .lintstagedrc.js
      - .gitlab-ci.yml
      - .prettierrc.js
      - package.json
      - package-lock.json
      - webpack.config.js
      - webpack.mix.js
        - !reference [.default_changes, js_changes]
        - resources/js/**/*
  script:
    cd $CI_PROJECT_DIR && npm install && npm run lint-prod resources/js/**;

.phpunit:
  stage: test
Loading